From d96b88e495903a8f75f14642042ff7bed0fcb7a8 Mon Sep 17 00:00:00 2001 From: Alex Corey Date: Tue, 12 Mar 2019 12:28:42 -0400 Subject: [PATCH] add pagination test --- __tests__/components/Pagination.test.jsx | 134 +++++++++++++++++------ src/components/Pagination/Pagination.jsx | 3 +- 2 files changed, 102 insertions(+), 35 deletions(-) diff --git a/__tests__/components/Pagination.test.jsx b/__tests__/components/Pagination.test.jsx index 552642665c..f1a079acf2 100644 --- a/__tests__/components/Pagination.test.jsx +++ b/__tests__/components/Pagination.test.jsx @@ -117,6 +117,7 @@ describe('', () => { const pageSizeDropdownItems = pagination.find(pageSizeDropdownItemsSelector); expect(pageSizeDropdownItems.length).toBe(3); pageSizeDropdownItems.at(1).simulate('click'); + expect(onSetPage).toBeCalledWith(1, 25); }); test('itemCount displays correctly', () => { @@ -134,8 +135,37 @@ describe('', () => { /> ); - const itemCount = pagination.find('.awx-pagination__item-count'); + let itemCount = pagination.find('.awx-pagination__item-count'); expect(itemCount.text()).toEqual('Items 1 – 5 of 7'); + pagination = mount( + + + + ); + itemCount = pagination.find('.awx-pagination__item-count'); + expect(itemCount.text()).toEqual('Items 1 – 7 of 7'); + + pagination = mount( + + + + ); + itemCount = pagination.find('.awx-pagination__item-count'); + expect(itemCount.text()).toEqual('Items 6 – 7 of 7'); }); test('itemCount matching pageSize displays correctly', () => { @@ -176,39 +206,38 @@ describe('', () => { expect(itemCount.text()).toEqual('Items 1 – 3 of 3'); }); - test('submit a new page by typing in input works', () => { - const textInputSelector = '.awx-pagination__page-input.pf-c-form-control'; - const submitFormSelector = '.awx-pagination__page-input-form'; + // test('submit a new page by typing in input works', () => { + // const textInputSelector = '.awx-pagination__page-input.pf-c-form-control'; + // const submitFormSelector = '.awx-pagination__page-input-form'; + // const onSetPage = jest.fn(); + + // pagination = mount( + // + // + // + // ); + // pagination.instance().onPageChange = jest.fn(); + + // const textInput = pagination.find(textInputSelector); + // expect(textInput.length).toBe(1); + // textInput.simulate('change', { target: { value: '2' } }); + + // const submitForm = pagination.find(submitFormSelector); + // expect(submitForm.length).toBe(1); + // submitForm.simulate('submit'); + // expect(pagination.instance().onPageChange).toBeCalledWith(2) + // }); + + test('text input page change is not displayed when only 1 page', () => { const onSetPage = jest.fn(); - - pagination = mount( - - - - ); - - const textInput = pagination.find(textInputSelector); - expect(textInput.length).toBe(1); - textInput.simulate('change'); - pagination.setProps({ page: 2 }); - - const submitForm = pagination.find(submitFormSelector); - expect(submitForm.length).toBe(1); - submitForm.simulate('submit'); - pagination.find('Pagination').instance().setState({ value: 'invalid' }); - submitForm.simulate('submit'); - }); - - test('text input page change is disabled when only 1 page', () => { - const onSetPage = jest.fn(); - + const pageNumber = 'input[aria-label="Page Number"]'; pagination = mount( ', () => { /> ); + let pageInput = pagination.find(pageNumber); + expect(pageInput.length).toBe(0); + + pagination = mount( + + + + ); + pageInput = pagination.find(pageNumber); + expect(pageInput.length).toBe(1); }); + + // test('make sure componentDidUpdate calls onPageChange', () => { + // const onSetPage = jest.fn(); + + // pagination = mount( + // + // + // + // ); + // pagination.instance().onPageChange = jest.fn(); + // pagination.setProps({ page: 2 }); + // pagination.update(); + // expect(pagination.instance().onPageChange).toHaveBeenCalledTimes(1); + // expect(pagination.instance().onPageChange).toBeCalledWith(2); + // }); }); diff --git a/src/components/Pagination/Pagination.jsx b/src/components/Pagination/Pagination.jsx index a3eba1ca3e..2e972cecca 100644 --- a/src/components/Pagination/Pagination.jsx +++ b/src/components/Pagination/Pagination.jsx @@ -89,9 +89,8 @@ class Pagination extends Component { onSelectPageSize ({ target }) { const { onSetPage } = this.props; - const page = 1; - const page_size = parseInt(target.innerText, 10); + const page_size = parseInt(target.innerText || target.textContent, 10); this.setState({ isOpen: false });