summaryrefslogtreecommitdiff
path: root/spec/frontend/error_tracking/components/stacktrace_spec.js
blob: 4f4a60acba425123a67d6fc9c9c64c7574866562 (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
import { shallowMount } from '@vue/test-utils';
import Stacktrace from '~/error_tracking/components/stacktrace.vue';
import StackTraceEntry from '~/error_tracking/components/stacktrace_entry.vue';

describe('ErrorDetails', () => {
  let wrapper;

  const stackTraceEntry = {
    filename: 'sidekiq/util.rb',
    context: [
      [22, '    def safe_thread(name, \u0026block)\n'],
      [23, '      Thread.new do\n'],
      [24, "        Thread.current['sidekiq_label'] = name\n"],
      [25, '        watchdog(name, \u0026block)\n'],
    ],
    lineNo: 24,
  };

  function mountComponent(entries) {
    wrapper = shallowMount(Stacktrace, {
      propsData: {
        entries,
      },
    });
  }

  describe('Stacktrace', () => {
    afterEach(() => {
      if (wrapper) {
        wrapper.destroy();
      }
    });

    it('should render single Stacktrace entry', () => {
      mountComponent([stackTraceEntry]);
      expect(wrapper.findAll(StackTraceEntry).length).toBe(1);
    });

    it('should render multiple Stacktrace entry', () => {
      const entriesNum = 3;
      mountComponent(new Array(entriesNum).fill(stackTraceEntry));
      expect(wrapper.findAll(StackTraceEntry).length).toBe(entriesNum);
    });
  });
});