diff options
| author | Wes Bos <wesbos@gmail.com> | 2018-03-14 12:19:54 -0400 |
|---|---|---|
| committer | Wes Bos <wesbos@gmail.com> | 2018-03-14 12:19:54 -0400 |
| commit | 331da87bd53bc1fb79063d142764c75df9f32170 (patch) | |
| tree | d80aac98154a811fdf57b10e90ac0350fe14568e /frontend/__tests__/Pagination.test.js | |
| parent | 46a0ba30ef54a7e36206481a4f5b2bf1f9702fca (diff) | |
tests
Diffstat (limited to 'frontend/__tests__/Pagination.test.js')
| -rw-r--r-- | frontend/__tests__/Pagination.test.js | 46 |
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); + }); +}); |
