Welcome to mirror list, hosted at ThFree Co, Russian Federation.

stacktrace_entry_spec.js « components « error_tracking « frontend « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 95958408770358c768d86cae5369fdad474c45e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import { shallowMount } from '@vue/test-utils';
import StackTraceEntry from '~/error_tracking/components/stacktrace_entry.vue';
import ClipboardButton from '~/vue_shared/components/clipboard_button.vue';
import FileIcon from '~/vue_shared/components/file_icon.vue';
import Icon from '~/vue_shared/components/icon.vue';

describe('Stacktrace Entry', () => {
  let wrapper;

  function mountComponent(props) {
    wrapper = shallowMount(StackTraceEntry, {
      propsData: {
        filePath: 'sidekiq/util.rb',
        lines: [
          [22, '    def safe_thread(name, \u0026block)\n'],
          [23, '      Thread.new do\n'],
          [24, "        Thread.current['sidekiq_label'] = name\n"],
          [25, '        watchdog(name, \u0026block)\n'],
        ],
        errorLine: 24,
        ...props,
      },
    });
  }

  beforeEach(() => {
    mountComponent();
  });

  afterEach(() => {
    if (wrapper) {
      wrapper.destroy();
    }
  });

  it('should render stacktrace entry collapsed', () => {
    expect(wrapper.find(StackTraceEntry).exists()).toBe(true);
    expect(wrapper.find(ClipboardButton).exists()).toBe(true);
    expect(wrapper.find(Icon).exists()).toBe(true);
    expect(wrapper.find(FileIcon).exists()).toBe(true);
    expect(wrapper.element.querySelectorAll('table').length).toBe(0);
  });

  it('should render stacktrace entry table expanded', () => {
    mountComponent({ expanded: true });
    expect(wrapper.element.querySelectorAll('tr.line_holder').length).toBe(4);
    expect(wrapper.element.querySelectorAll('.line_content.old').length).toBe(1);
  });
});