summaryrefslogtreecommitdiff
path: root/spec/frontend/design_management_new/components/toolbar/pagination_button_spec.js
blob: 5f33d65fc1fd339fd6153be05eab09ffeaec3618 (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
import { createLocalVue, shallowMount } from '@vue/test-utils';
import VueRouter from 'vue-router';
import PaginationButton from '~/design_management_new/components/toolbar/pagination_button.vue';
import { DESIGN_ROUTE_NAME } from '~/design_management_new/router/constants';

const localVue = createLocalVue();
localVue.use(VueRouter);
const router = new VueRouter();

describe('Design management pagination button component', () => {
  let wrapper;

  function createComponent(design = null) {
    wrapper = shallowMount(PaginationButton, {
      localVue,
      router,
      propsData: {
        design,
        title: 'Test title',
        iconName: 'angle-right',
      },
      stubs: ['router-link'],
    });
  }

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

  it('disables button when no design is passed', () => {
    createComponent();

    expect(wrapper.element).toMatchSnapshot();
  });

  it('renders router-link', () => {
    createComponent({ id: '2' });

    expect(wrapper.element).toMatchSnapshot();
  });

  describe('designLink', () => {
    it('returns empty link when design is null', () => {
      createComponent();

      expect(wrapper.vm.designLink).toEqual({});
    });

    it('returns design link', () => {
      createComponent({ id: '2', filename: 'test' });

      wrapper.vm.$router.replace('/root/test-project/issues/1/designs/test?version=1');

      expect(wrapper.vm.designLink).toEqual({
        name: DESIGN_ROUTE_NAME,
        params: { id: 'test' },
        query: { version: '1' },
      });
    });
  });
});