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

merge_request_header_spec.js « components « merge_requests « frontend « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 3f774098379affc9bd5cf008ef0b4b9713d6c05a (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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import { shallowMount } from '@vue/test-utils';
import HiddenBadge from '~/issuable/components/hidden_badge.vue';
import LockedBadge from '~/issuable/components/locked_badge.vue';
import StatusBadge from '~/issuable/components/status_badge.vue';
import MergeRequestHeader from '~/merge_requests/components/merge_request_header.vue';
import mrStore from '~/mr_notes/stores';
import ConfidentialityBadge from '~/vue_shared/components/confidentiality_badge.vue';

jest.mock('~/mr_notes/stores', () => jest.requireActual('helpers/mocks/mr_notes/stores'));

describe('MergeRequestHeader component', () => {
  let wrapper;

  const findConfidentialBadge = () => wrapper.findComponent(ConfidentialityBadge);
  const findLockedBadge = () => wrapper.findComponent(LockedBadge);
  const findHiddenBadge = () => wrapper.findComponent(HiddenBadge);
  const findStatusBadge = () => wrapper.findComponent(StatusBadge);

  const renderTestMessage = (renders) => (renders ? 'renders' : 'does not render');

  const createComponent = ({ confidential, hidden, locked }) => {
    const store = mrStore;
    store.getters.getNoteableData = {};
    store.getters.getNoteableData.confidential = confidential;
    store.getters.getNoteableData.discussion_locked = locked;
    store.getters.getNoteableData.targetType = 'merge_request';

    wrapper = shallowMount(MergeRequestHeader, {
      mocks: {
        $store: store,
      },
      provide: {
        hidden,
      },
      propsData: {
        initialState: 'opened',
      },
    });
  };

  it('renders status badge', () => {
    createComponent({ propsData: { initialState: 'opened' } });

    expect(findStatusBadge().props()).toEqual({
      issuableType: 'merge_request',
      state: 'opened',
    });
  });

  describe.each`
    locked   | confidential | hidden
    ${true}  | ${true}      | ${false}
    ${true}  | ${false}     | ${false}
    ${false} | ${true}      | ${false}
    ${false} | ${false}     | ${false}
    ${true}  | ${true}      | ${true}
    ${true}  | ${false}     | ${true}
    ${false} | ${true}      | ${true}
    ${false} | ${false}     | ${true}
  `(
    `when locked=$locked, confidential=$confidential, and hidden=$hidden`,
    ({ locked, confidential, hidden }) => {
      beforeEach(() => {
        createComponent({ confidential, hidden, locked });
      });

      it(`${renderTestMessage(confidential)} the confidential badge`, () => {
        const confidentialBadge = findConfidentialBadge();
        expect(confidentialBadge.exists()).toBe(confidential);

        if (confidential && !hidden) {
          expect(confidentialBadge.props()).toMatchObject({
            workspaceType: 'project',
            issuableType: 'issue',
          });
        }
      });

      it(`${renderTestMessage(locked)} the locked badge`, () => {
        expect(findLockedBadge().exists()).toBe(locked);
      });

      it(`${renderTestMessage(hidden)} the hidden badge`, () => {
        expect(findHiddenBadge().exists()).toBe(hidden);
      });
    },
  );
});