From 331da87bd53bc1fb79063d142764c75df9f32170 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Wed, 14 Mar 2018 12:19:54 -0400 Subject: tests --- frontend/__tests__/Pagination.test.js | 46 +++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 frontend/__tests__/Pagination.test.js (limited to 'frontend/__tests__/Pagination.test.js') 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('', () => { + it('displays loading message', () => { + const wrapper = shallow(); + expect(toJSON(wrapper)).toMatchSnapshot(); + }); + + it('renders pagination for 18 items', () => { + const wrapper = shallow(); + 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(); + expect(wrapper.find('.totalPages').text()).toEqual('4'); + }); + + it('disables and enables next/prev buttons', () => { + const fakeQuery3 = { + itemsConnection: { aggregate: { count: 100 } }, + }; + const wrapper = shallow(); + + 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); + }); +}); -- cgit v1.3