diff --git a/packages/react-bootstrap-table2-editor/index.js b/packages/react-bootstrap-table2-editor/index.js index fc8439d..04d5840 100644 --- a/packages/react-bootstrap-table2-editor/index.js +++ b/packages/react-bootstrap-table2-editor/index.js @@ -1,5 +1,5 @@ import createContext from './src/context'; -import bindRowLevelCellEdit from './src/row-binder'; +import withRowLevelCellEdit from './src/row-consumer'; import createEditingCell from './src/editing-cell-binder'; import { EDITTYPE, @@ -10,7 +10,7 @@ import { export default (options = {}) => ({ createContext, createEditingCell, - bindRowLevelCellEdit, + withRowLevelCellEdit, DBCLICK_TO_CELL_EDIT, DELAY_FOR_DBCLICK, options diff --git a/packages/react-bootstrap-table2-editor/src/row-binder.js b/packages/react-bootstrap-table2-editor/src/row-consumer.js similarity index 80% rename from packages/react-bootstrap-table2-editor/src/row-binder.js rename to packages/react-bootstrap-table2-editor/src/row-consumer.js index bd7b687..7fe6648 100644 --- a/packages/react-bootstrap-table2-editor/src/row-binder.js +++ b/packages/react-bootstrap-table2-editor/src/row-consumer.js @@ -30,9 +30,14 @@ export default (Component, selectRowEnabled) => { /> ); }; - return props => ( - - { cellEdit => renderWithCellEdit(props, cellEdit) } - - ); + function withConsumer(props) { + return ( + + { cellEdit => renderWithCellEdit(props, cellEdit) } + + ); + } + + withConsumer.displayName = 'WithCellEditingRowConsumer'; + return withConsumer; }; diff --git a/packages/react-bootstrap-table2-editor/test/cell-binder.test.js b/packages/react-bootstrap-table2-editor/test/cell-binder.test.js deleted file mode 100644 index dfe72ee..0000000 --- a/packages/react-bootstrap-table2-editor/test/cell-binder.test.js +++ /dev/null @@ -1,210 +0,0 @@ -import 'jsdom-global/register'; -import React from 'react'; -import { mount } from 'enzyme'; -import _ from 'react-bootstrap-table-next/src/utils'; -import op from 'react-bootstrap-table-next/src/store/operators'; - -import cellEditFactory from '../index'; -import { CLICK_TO_CELL_EDIT, DBCLICK_TO_CELL_EDIT } from '../src/const'; -import createCellEditContext from '../src/context'; -import bindCellEditing from '../src/cell-binder'; - -describe('Cell Binder', () => { - let wrapper; - let cellEdit; - const data = [{ - id: 1, - name: 'A' - }, { - id: 2, - name: 'B' - }]; - let columns; - const rowIndex = 1; - const row = { id: 1, name: 'A' }; - const keyField = 'id'; - const columnIndex = 1; - - const { Provider } = createCellEditContext(_, op, false, jest.fn()); - const BaseComponent = () => null; - const WithCellEditComponent = bindCellEditing( - props => , - keyField, - _ - ); - - beforeEach(() => { - columns = [{ - dataField: 'id', - text: 'ID' - }, { - dataField: 'name', - text: 'Name' - }]; - }); - - describe(`if cellEdit.mode is ${CLICK_TO_CELL_EDIT}`, () => { - beforeEach(() => { - cellEdit = cellEditFactory({ mode: CLICK_TO_CELL_EDIT }); - wrapper = mount( - - - - ); - }); - - it('should inject correct props to target component', () => { - expect(wrapper.find(BaseComponent)).toHaveLength(1); - expect(wrapper.find(BaseComponent).prop('clickToEdit')).toBeTruthy(); - expect(wrapper.find(BaseComponent).prop('dbclickToEdit')).toBeFalsy(); - }); - }); - - describe(`if cellEdit.mode is ${DBCLICK_TO_CELL_EDIT}`, () => { - beforeEach(() => { - cellEdit = cellEditFactory({ mode: DBCLICK_TO_CELL_EDIT }); - wrapper = mount( - - - - ); - }); - - it('should inject correct props to target component', () => { - expect(wrapper.find(BaseComponent)).toHaveLength(1); - expect(wrapper.find(BaseComponent).prop('clickToEdit')).toBeFalsy(); - expect(wrapper.find(BaseComponent).prop('dbclickToEdit')).toBeTruthy(); - }); - }); - - describe('if column prop is a key column', () => { - beforeEach(() => { - cellEdit = cellEditFactory({ mode: CLICK_TO_CELL_EDIT }); - wrapper = mount( - - - - ); - }); - - it('should inject negative editable prop to target component', () => { - expect(wrapper.find(BaseComponent)).toHaveLength(1); - expect(wrapper.find(BaseComponent).prop('editable')).toBeFalsy(); - }); - }); - - describe('if editable prop is true(Row Level)', () => { - describe('but column.editable prop is false', () => { - beforeEach(() => { - cellEdit = cellEditFactory({ mode: CLICK_TO_CELL_EDIT }); - columns[1].editable = false; - wrapper = mount( - - - - ); - }); - - it('should inject negative editable prop to target component', () => { - expect(wrapper.find(BaseComponent)).toHaveLength(1); - expect(wrapper.find(BaseComponent).prop('editable')).toBeFalsy(); - }); - }); - - describe('and column.editable prop is true or not defined', () => { - beforeEach(() => { - cellEdit = cellEditFactory({ mode: CLICK_TO_CELL_EDIT }); - wrapper = mount( - - - - ); - }); - - it('should inject positive editable prop to target component', () => { - expect(wrapper.find(BaseComponent)).toHaveLength(1); - expect(wrapper.find(BaseComponent).prop('editable')).toBeTruthy(); - }); - }); - }); - - describe('if editable prop is false(Row Level)', () => { - describe('even if column.editable prop is true or not defined', () => { - beforeEach(() => { - cellEdit = cellEditFactory({ mode: CLICK_TO_CELL_EDIT }); - columns[1].editable = true; - wrapper = mount( - - - - ); - }); - - it('should inject negative editable prop to target component', () => { - expect(wrapper.find(BaseComponent)).toHaveLength(1); - expect(wrapper.find(BaseComponent).prop('editable')).toBeFalsy(); - }); - }); - }); - - describe('if column.editable prop is a function', () => { - beforeEach(() => { - cellEdit = cellEditFactory({ mode: CLICK_TO_CELL_EDIT }); - columns[1].editable = jest.fn().mockReturnValue(false); - wrapper = mount( - - - - ); - }); - - it('should call column.editable function correctly', () => { - expect(columns[1].editable).toHaveBeenCalledTimes(1); - }); - - it('should inject correct editable prop to target component', () => { - expect(wrapper.find(BaseComponent)).toHaveLength(1); - expect(wrapper.find(BaseComponent).prop('editable')).toBeFalsy(); - }); - }); -}); diff --git a/packages/react-bootstrap-table2-editor/test/row-binder.test.js b/packages/react-bootstrap-table2-editor/test/row-consumer.test.js similarity index 91% rename from packages/react-bootstrap-table2-editor/test/row-binder.test.js rename to packages/react-bootstrap-table2-editor/test/row-consumer.test.js index 97490d6..2d8c93e 100644 --- a/packages/react-bootstrap-table2-editor/test/row-binder.test.js +++ b/packages/react-bootstrap-table2-editor/test/row-consumer.test.js @@ -4,12 +4,12 @@ import { mount } from 'enzyme'; import _ from 'react-bootstrap-table-next/src/utils'; import op from 'react-bootstrap-table-next/src/store/operators'; -import cellEditFactory from '../index'; +import cellEditFactory from '..'; import { CLICK_TO_CELL_EDIT, DBCLICK_TO_CELL_EDIT, DELAY_FOR_DBCLICK } from '../src/const'; import createCellEditContext from '../src/context'; -import bindCellEditing from '../src/row-binder'; +import withRowLevelCellEdit from '../src/row-consumer'; -describe('Row Binder', () => { +describe('Row Consumer', () => { let wrapper; let cellEdit; const data = [{ @@ -28,7 +28,7 @@ describe('Row Binder', () => { describe('if cellEdit.nonEditableRows is undefined', () => { beforeEach(() => { - const WithCellEditComponent = bindCellEditing( + const WithCellEditComponent = withRowLevelCellEdit( props => , false ); @@ -52,7 +52,7 @@ describe('Row Binder', () => { const nonEditableRows = jest.fn().mockReturnValue([value]); describe('if value prop is match in one of cellEdit.nonEditableRows', () => { beforeEach(() => { - const WithCellEditComponent = bindCellEditing( + const WithCellEditComponent = withRowLevelCellEdit( props => , false ); @@ -72,7 +72,7 @@ describe('Row Binder', () => { describe('if value prop is not match in one of cellEdit.nonEditableRows', () => { beforeEach(() => { - const WithCellEditComponent = bindCellEditing( + const WithCellEditComponent = withRowLevelCellEdit( props => , false ); @@ -93,7 +93,7 @@ describe('Row Binder', () => { describe(`if selectRowEnabled argument is true and cellEdit.mode is ${DBCLICK_TO_CELL_EDIT}`, () => { beforeEach(() => { - const WithCellEditComponent = bindCellEditing( + const WithCellEditComponent = withRowLevelCellEdit( props => , true ); @@ -115,7 +115,7 @@ describe('Row Binder', () => { const ridx = 0; const cidx = 1; beforeEach(() => { - const WithCellEditComponent = bindCellEditing( + const WithCellEditComponent = withRowLevelCellEdit( props => , false ); diff --git a/packages/react-bootstrap-table2/src/body.js b/packages/react-bootstrap-table2/src/body.js index 3179737..20620e5 100644 --- a/packages/react-bootstrap-table2/src/body.js +++ b/packages/react-bootstrap-table2/src/body.js @@ -59,7 +59,7 @@ class Body extends React.Component { } if (cellEdit.createContext) { - RowComponent = cellEdit.bindRowLevelCellEdit(RowComponent, selectRowEnabled, keyField, _); + RowComponent = cellEdit.withRowLevelCellEdit(RowComponent, selectRowEnabled, keyField, _); additionalRowProps.EditingCellComponent = this.EditingCell; } diff --git a/packages/react-bootstrap-table2/test/body.test.js b/packages/react-bootstrap-table2/test/body.test.js index c7d8894..764af39 100644 --- a/packages/react-bootstrap-table2/test/body.test.js +++ b/packages/react-bootstrap-table2/test/body.test.js @@ -261,7 +261,7 @@ describe('Body', () => { options: { onStartEdit: jest.fn() }, createContext: jest.fn(), createEditingCell: jest.fn().mockReturnValue(EditingCellComponent), - bindRowLevelCellEdit: jest.fn().mockReturnValue(RowComponent) + withRowLevelCellEdit: jest.fn().mockReturnValue(RowComponent) }; beforeEach(() => { wrapper = shallow( @@ -278,7 +278,7 @@ describe('Body', () => { it('should render Row Component correctly', () => { expect(wrapper.length).toBe(1); expect(cellEdit.createEditingCell).toHaveBeenCalledTimes(1); - expect(cellEdit.bindRowLevelCellEdit).toHaveBeenCalledTimes(1); + expect(cellEdit.withRowLevelCellEdit).toHaveBeenCalledTimes(1); expect(wrapper.find(RowComponent)).toHaveLength(2); const aRowElement = wrapper.find(RowComponent).get(0); expect(aRowElement.props.EditingCellComponent).toBeDefined(); diff --git a/packages/react-bootstrap-table2/test/contexts/index.test.js b/packages/react-bootstrap-table2/test/contexts/index.test.js index 52ae08b..76caecb 100644 --- a/packages/react-bootstrap-table2/test/contexts/index.test.js +++ b/packages/react-bootstrap-table2/test/contexts/index.test.js @@ -113,9 +113,8 @@ describe('Context', () => { Consumer: CellEditContext.Consumer }), options: {}, - bindCellLevelCellEdit: jest.fn().mockReturnValue(() => null), createEditingCell: jest.fn().mockReturnValue(() => null), - bindRowLevelCellEdit: jest.fn().mockReturnValue(() => null) + withRowLevelCellEdit: jest.fn().mockReturnValue(() => null) }; wrapper = shallow(