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

first_pipeline_card_spec.js « cards « drawer « components « pipeline_editor « frontend « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 7e1e5004d9159c7af58373ce2fc36c0c11894aad (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
58
59
60
import { getByRole } from '@testing-library/dom';
import { mount } from '@vue/test-utils';
import { mockTracking, unmockTracking } from 'helpers/tracking_helper';
import FirstPipelineCard from '~/pipeline_editor/components/drawer/cards/first_pipeline_card.vue';
import { pipelineEditorTrackingOptions } from '~/pipeline_editor/constants';

describe('First pipeline card', () => {
  let wrapper;
  let trackingSpy;

  const createComponent = () => {
    wrapper = mount(FirstPipelineCard);
  };

  const getLinkByName = (name) => getByRole(wrapper.element, 'link', { name });
  const findRunnersLink = () => getLinkByName(/make sure your instance has runners available/i);
  const findInstructionsList = () => wrapper.find('ol');
  const findAllInstructions = () => findInstructionsList().findAll('li');

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

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

  it('renders the title', () => {
    expect(wrapper.text()).toContain(wrapper.vm.$options.i18n.title);
  });

  it('renders the content', () => {
    expect(findInstructionsList().exists()).toBe(true);
    expect(findAllInstructions()).toHaveLength(3);
  });

  it('renders the link', () => {
    expect(findRunnersLink().href).toBe(wrapper.vm.$options.RUNNER_HELP_URL);
  });

  describe('tracking', () => {
    beforeEach(() => {
      createComponent();
      trackingSpy = mockTracking(undefined, wrapper.element, jest.spyOn);
    });

    afterEach(() => {
      unmockTracking();
    });

    it('tracks runners help page click', async () => {
      const { label } = pipelineEditorTrackingOptions;
      const { runners } = pipelineEditorTrackingOptions.actions.helpDrawerLinks;

      await findRunnersLink().click();

      expect(trackingSpy).toHaveBeenCalledWith(undefined, runners, { label });
    });
  });
});