summaryrefslogtreecommitdiffstats
path: root/frontend/__tests__/Pagination.test.js
diff options
context:
space:
mode:
authorWes Bos <wesbos@gmail.com>2018-03-14 12:19:54 -0400
committerWes Bos <wesbos@gmail.com>2018-03-14 12:19:54 -0400
commit331da87bd53bc1fb79063d142764c75df9f32170 (patch)
treed80aac98154a811fdf57b10e90ac0350fe14568e /frontend/__tests__/Pagination.test.js
parent46a0ba30ef54a7e36206481a4f5b2bf1f9702fca (diff)
tests
Diffstat (limited to 'frontend/__tests__/Pagination.test.js')
-rw-r--r--frontend/__tests__/Pagination.test.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/frontend/__tests__/Pagination.test.js b/frontend/__tests__/Pagination.test.js
new file mode 100644
index 0000000..e2ef7af
--- /dev/null
+++ b/frontend/__tests__/Pagination.test.js
@@ -0,0 +1,46 @@
+import React from 'react';
+import { shallow, mount } from 'enzyme';
+import toJSON from 'enzyme-to-json';
+import { Pagination } from '../components/Pagination';
+
+const fakeQuery = {
+ itemsConnection: { aggregate: { count: 18 } },
+};
+
+describe('<Pagination/>', () => {
+ it('displays loading message', () => {
+ const wrapper = shallow(<Pagination loading page={1} itemsQuery={fakeQuery} />);
+ expect(toJSON(wrapper)).toMatchSnapshot();
+ });
+
+ it('renders pagination for 18 items', () => {
+ const wrapper = shallow(<Pagination loading={false} page={1} itemsQuery={fakeQuery} />);
+ expect(toJSON(wrapper)).toMatchSnapshot();
+ expect(wrapper.find('.totalPages').text()).toEqual('2');
+ });
+
+ it('renders pagination for 28 items', () => {
+ const fakeQuery2 = {
+ itemsConnection: { aggregate: { count: 28 } },
+ };
+ const wrapper = shallow(<Pagination loading={false} page={1} itemsQuery={fakeQuery2} />);
+ expect(wrapper.find('.totalPages').text()).toEqual('4');
+ });
+
+ it('disables and enables next/prev buttons', () => {
+ const fakeQuery3 = {
+ itemsConnection: { aggregate: { count: 100 } },
+ };
+ const wrapper = shallow(<Pagination loading={false} page={1} itemsQuery={fakeQuery} />);
+
+ expect(wrapper.find('a.prev').props()['aria-disabled']).toEqual(true);
+ expect(wrapper.find('a.next').props()['aria-disabled']).toEqual(false);
+ wrapper.setProps({ page: 2 });
+ expect(wrapper.find('a.prev').props()['aria-disabled']).toEqual(false);
+ expect(wrapper.find('a.next').props()['aria-disabled']).toEqual(true);
+ // when in the middle, both should work
+ wrapper.setProps({ itemsQuery: fakeQuery3, page: 3 });
+ expect(wrapper.find('a.prev').props()['aria-disabled']).toEqual(false);
+ expect(wrapper.find('a.next').props()['aria-disabled']).toEqual(false);
+ });
+});