summaryrefslogtreecommitdiff
path: root/spec/frontend/sidebar/components/severity/severity_spec.js
blob: b6690f11d6ba950c4579ad32c7b0eeb57d6c222b (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
50
51
52
53
54
55
56
57
import { shallowMount } from '@vue/test-utils';
import { GlIcon } from '@gitlab/ui';
import SeverityToken from '~/sidebar/components/severity/severity.vue';
import { INCIDENT_SEVERITY } from '~/sidebar/components/severity/constants';

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

  function createComponent(props) {
    wrapper = shallowMount(SeverityToken, {
      propsData: {
        ...props,
      },
    });
  }

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

  const findIcon = () => wrapper.find(GlIcon);

  it('renders severity token for each severity type', () => {
    Object.values(INCIDENT_SEVERITY).forEach(severity => {
      createComponent({ severity });
      expect(findIcon().classes()).toContain(`icon-${severity.icon}`);
      expect(findIcon().attributes('name')).toBe(`severity-${severity.icon}`);
      expect(wrapper.text()).toBe(severity.label);
    });
  });

  it('renders only icon when `iconOnly` prop is set to `true`', () => {
    const severity = INCIDENT_SEVERITY.CRITICAL;
    createComponent({ severity, iconOnly: true });
    expect(findIcon().classes()).toContain(`icon-${severity.icon}`);
    expect(findIcon().attributes('name')).toBe(`severity-${severity.icon}`);
    expect(wrapper.text()).toBe('');
  });

  describe('icon size', () => {
    it('renders the icon in default size when other is not specified', () => {
      const severity = INCIDENT_SEVERITY.HIGH;
      createComponent({ severity });
      expect(findIcon().attributes('size')).toBe('12');
    });

    it('renders the icon in provided size', () => {
      const severity = INCIDENT_SEVERITY.HIGH;
      const iconSize = 14;
      createComponent({ severity, iconSize });
      expect(findIcon().attributes('size')).toBe(`${iconSize}`);
    });
  });
});