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
|
import { shallowMount, createLocalVue } from '@vue/test-utils';
import GraphqlPagination from '~/vue_shared/components/pagination/graphql_pagination.vue';
const localVue = createLocalVue();
describe('Graphql Pagination component', () => {
let wrapper;
function factory({ hasNextPage = true, hasPreviousPage = true }) {
wrapper = shallowMount(localVue.extend(GraphqlPagination), {
propsData: {
hasNextPage,
hasPreviousPage,
},
localVue,
});
}
afterEach(() => {
wrapper.destroy();
});
describe('without previous page', () => {
beforeEach(() => {
factory({ hasPreviousPage: false });
});
it('renders disabled previous button', () => {
expect(wrapper.find('.js-prev-btn').attributes().disabled).toEqual('true');
});
});
describe('with previous page', () => {
beforeEach(() => {
factory({ hasPreviousPage: true });
});
it('renders enabled previous button', () => {
expect(wrapper.find('.js-prev-btn').attributes().disabled).toEqual(undefined);
});
it('emits previousClicked on click', () => {
wrapper.find('.js-prev-btn').vm.$emit('click');
expect(wrapper.emitted().previousClicked.length).toBe(1);
});
});
describe('without next page', () => {
beforeEach(() => {
factory({ hasNextPage: false });
});
it('renders disabled next button', () => {
expect(wrapper.find('.js-next-btn').attributes().disabled).toEqual('true');
});
});
describe('with next page', () => {
beforeEach(() => {
factory({ hasNextPage: true });
});
it('renders enabled next button', () => {
expect(wrapper.find('.js-next-btn').attributes().disabled).toEqual(undefined);
});
it('emits nextClicked on click', () => {
wrapper.find('.js-next-btn').vm.$emit('click');
expect(wrapper.emitted().nextClicked.length).toBe(1);
});
});
});
|