summaryrefslogtreecommitdiff
path: root/spec/javascripts/labels_select_spec.js
blob: 386e00bfd0c71aa5c97645498d49839fe6e46f1f (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
import $ from 'jquery';
import LabelsSelect from '~/labels_select';

const mockUrl = '/foo/bar/url';

const mockLabels = [
  {
    id: 26,
    title: 'Foo Label',
    description: 'Foobar',
    color: '#BADA55',
    text_color: '#FFFFFF',
  },
];

describe('LabelsSelect', () => {
  describe('getLabelTemplate', () => {
    const label = mockLabels[0];
    let $labelEl;

    beforeEach(() => {
      $labelEl = $(LabelsSelect.getLabelTemplate({
        labels: mockLabels,
        issueUpdateURL: mockUrl,
      }));
    });

    it('generated label item template has correct label URL', () => {
      expect($labelEl.attr('href')).toBe('/foo/bar?label_name[]=Foo%20Label');
    });

    it('generated label item template has correct label title', () => {
      expect($labelEl.find('span.label').text()).toBe(label.title);
    });

    it('generated label item template has label description as title attribute', () => {
      expect($labelEl.find('span.label').attr('title')).toBe(label.description);
    });

    it('generated label item template has correct label styles', () => {
      expect($labelEl.find('span.label').attr('style')).toBe(`background-color: ${label.color}; color: ${label.text_color};`);
    });

    it('generated label item has a badge class', () => {
      expect($labelEl.find('span').hasClass('badge')).toEqual(true);
    });
  });
});