From 7b15bf45d9b34b2d1d02c4190ee56f39400bef37 Mon Sep 17 00:00:00 2001 From: AllenFang Date: Sat, 23 Jun 2018 14:24:15 +0800 Subject: [PATCH] patch tests for search --- .../examples/remote/remote-search.js | 1 - .../src/props-resolver/remote-resolver.js | 2 +- .../test/contexts/index.test.js | 32 ++++++++++ .../props-resolver/remote-resolver.test.js | 62 +++++++++++++++++++ 4 files changed, 95 insertions(+), 2 deletions(-) diff --git a/packages/react-bootstrap-table2-example/examples/remote/remote-search.js b/packages/react-bootstrap-table2-example/examples/remote/remote-search.js index 78a2151..7bad91a 100644 --- a/packages/react-bootstrap-table2-example/examples/remote/remote-search.js +++ b/packages/react-bootstrap-table2-example/examples/remote/remote-search.js @@ -134,7 +134,6 @@ class Container extends React.Component { } handleTableChange = (type, { searchText }) => { - console.log('table change'); setTimeout(() => { const result = products.filter((row) => { for (let cidx = 0; cidx < columns.length; cidx += 1) { diff --git a/packages/react-bootstrap-table2/src/props-resolver/remote-resolver.js b/packages/react-bootstrap-table2/src/props-resolver/remote-resolver.js index e942ac5..f0b1a59 100644 --- a/packages/react-bootstrap-table2/src/props-resolver/remote-resolver.js +++ b/packages/react-bootstrap-table2/src/props-resolver/remote-resolver.js @@ -44,7 +44,7 @@ export default ExtendBase => isRemoteSearch = () => { const { remote } = this.props; - return remote === true || (_.isObject(remote) && remote.search); + return remote === true || (_.isObject(remote) && remote.search) || this.isRemotePagination(); } isRemotePagination = () => { diff --git a/packages/react-bootstrap-table2/test/contexts/index.test.js b/packages/react-bootstrap-table2/test/contexts/index.test.js index 8b00719..1236b24 100644 --- a/packages/react-bootstrap-table2/test/contexts/index.test.js +++ b/packages/react-bootstrap-table2/test/contexts/index.test.js @@ -134,6 +134,38 @@ describe('Context', () => { }); }); + describe('if search is enable', () => { + beforeEach(() => { + const SearchContext = React.createContext(); + const search = { + createContext: jest.fn().mockReturnValue({ + Provider: SearchContext.Provider, + Consumer: SearchContext.Consumer + }), + searchText: '' + }; + wrapper = shallow( + + ); + wrapper.render(); + }); + + it('should create contexts correctly', () => { + expect(wrapper.instance().DataContext).toBeDefined(); + expect(wrapper.instance().SearchContext).toBeDefined(); + expect(wrapper.instance().SortContext).not.toBeDefined(); + expect(wrapper.instance().SelectionContext).not.toBeDefined(); + expect(wrapper.instance().CellEditContext).not.toBeDefined(); + expect(wrapper.instance().FilterContext).not.toBeDefined(); + expect(wrapper.instance().PaginationContext).not.toBeDefined(); + }); + }); + describe('if column filter is enable', () => { beforeEach(() => { const FilterContext = React.createContext(); diff --git a/packages/react-bootstrap-table2/test/props-resolver/remote-resolver.test.js b/packages/react-bootstrap-table2/test/props-resolver/remote-resolver.test.js index 31c8dfc..d3de234 100644 --- a/packages/react-bootstrap-table2/test/props-resolver/remote-resolver.test.js +++ b/packages/react-bootstrap-table2/test/props-resolver/remote-resolver.test.js @@ -186,6 +186,48 @@ describe('remoteResolver', () => { }); }); + describe('isRemoteSearch', () => { + describe('when remote is false', () => { + beforeEach(() => { + shallowContainer(); + }); + + it('should return false', () => { + expect(wrapper.instance().isRemoteSearch()).toBeFalsy(); + }); + }); + + describe('when remote is true', () => { + beforeEach(() => { + shallowContainer({ remote: true }); + }); + + it('should return true', () => { + expect(wrapper.instance().isRemoteSearch()).toBeTruthy(); + }); + }); + + describe('when remote.search is true', () => { + beforeEach(() => { + shallowContainer({ remote: { search: true } }); + }); + + it('should return true', () => { + expect(wrapper.instance().isRemoteSearch()).toBeTruthy(); + }); + }); + + describe('when this.isRemotePagination return true', () => { + beforeEach(() => { + shallowContainer({ remote: { pagination: true } }); + }); + + it('should return true', () => { + expect(wrapper.instance().isRemoteSearch()).toBeTruthy(); + }); + }); + }); + describe('handleRemoteCellChange', () => { const onTableChangeCB = sinon.stub(); const rowId = 1; @@ -244,6 +286,26 @@ describe('remoteResolver', () => { }); }); + describe('handleRemoteSearchChange', () => { + const onTableChangeCB = sinon.stub(); + const searchText = 'abc'; + + beforeEach(() => { + onTableChangeCB.reset(); + shallowContainer({ + onTableChange: onTableChangeCB + }); + wrapper.instance().handleRemoteSearchChange(searchText); + }); + + it('should calling props.onTableChange correctly', () => { + expect(onTableChangeCB.calledOnce).toBeTruthy(); + expect(onTableChangeCB.calledWith('search', wrapper.instance().getNewestState({ + searchText + }))).toBeTruthy(); + }); + }); + describe('handleRemoteFilterChange', () => { const onTableChangeCB = sinon.stub(); const filters = { price: { filterVal: 20, filterType: 'TEXT' } };