mirror of
https://github.com/gosticks/react-bootstrap-table2.git
synced 2025-10-16 11:55:39 +00:00
patch test for refining expand row consumer
This commit is contained in:
parent
21e7c3a53a
commit
4b790e4bec
@ -9,6 +9,7 @@ import RowAggregator from '../src/row-aggregator';
|
||||
import Const from '../src/const';
|
||||
import RowSection from '../src/row-section';
|
||||
import SelectionContext from '../src/contexts/selection-context';
|
||||
import ExpansionContext from '../src/contexts/row-expand-context';
|
||||
import mockBodyResolvedProps from './test-helpers/mock/body-resolved-props';
|
||||
|
||||
describe('Body', () => {
|
||||
@ -284,7 +285,7 @@ describe('Body', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('when selectRow.mode is ROW_SELECT_DISABLED (row was un-selectable)', () => {
|
||||
describe('when selectRow.mode is ROW_SELECT_DISABLED or expandRow.renderer is undefined', () => {
|
||||
beforeEach(() => {
|
||||
wrapper = shallow(
|
||||
<Body
|
||||
@ -296,8 +297,8 @@ describe('Body', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('prop selectRowEnabled on Row Component should be undefined', () => {
|
||||
expect(wrapper.find(Row).get(0).props.selectRowEnabled).not.toBeDefined();
|
||||
it('shouldn\'t render RowAggregator component', () => {
|
||||
expect(wrapper.find(RowAggregator)).toHaveLength(0);
|
||||
});
|
||||
});
|
||||
|
||||
@ -318,8 +319,38 @@ describe('Body', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('prop selectRowEnabled on RowAggregator Component should be defined', () => {
|
||||
expect(wrapper.find(RowAggregator).get(0).props.selectRowEnabled).toBeTruthy();
|
||||
it('should render RowAggregator component correctly', () => {
|
||||
const rowAggregator = wrapper.find(RowAggregator);
|
||||
|
||||
expect(rowAggregator.get(0).props.selectRow.mode)
|
||||
.not.toEqual(Const.ROW_SELECT_DISABLED);
|
||||
expect(rowAggregator.get(0).props.selected).toBeDefined();
|
||||
expect(rowAggregator.get(0).props.selectable).toBeDefined();
|
||||
});
|
||||
});
|
||||
|
||||
describe('when expandRow.renderer is defined correctly', () => {
|
||||
const expandRow = { renderer: jest.fn() };
|
||||
|
||||
beforeEach(() => {
|
||||
wrapper = mount(
|
||||
<ExpansionContext.Provider data={ data } keyField={ keyField } expandRow={ expandRow }>
|
||||
<Body
|
||||
{ ...mockBodyResolvedProps }
|
||||
data={ data }
|
||||
columns={ columns }
|
||||
keyField={ keyField }
|
||||
expandRow={ expandRow }
|
||||
/>
|
||||
</ExpansionContext.Provider>
|
||||
);
|
||||
});
|
||||
|
||||
it('should render RowAggregator component correctly', () => {
|
||||
const rowAggregator = wrapper.find(RowAggregator);
|
||||
expect(rowAggregator.get(0).props.expandRow.renderer).toEqual(expandRow.renderer);
|
||||
expect(rowAggregator.get(0).props.expanded).toBeDefined();
|
||||
expect(rowAggregator.get(0).props.expandable).toBeDefined();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@ -4,7 +4,9 @@ import { shallow, mount } from 'enzyme';
|
||||
|
||||
import HeaderCell from '../src/header-cell';
|
||||
import SelectionHeaderCell from '../src/row-selection/selection-header-cell';
|
||||
import ExpandHeaderCell from '../src/row-expand/expand-header-cell';
|
||||
import SelectionContext from '../src/contexts/selection-context';
|
||||
import ExpansionContext from '../src/contexts/row-expand-context';
|
||||
import Header from '../src/header';
|
||||
import Const from '../src/const';
|
||||
import mockHeaderResolvedProps from './test-helpers/mock/header-resolved-props';
|
||||
@ -177,6 +179,7 @@ describe('Header', () => {
|
||||
selectRow={ selectRow }
|
||||
>
|
||||
<Header
|
||||
{ ...mockHeaderResolvedProps }
|
||||
columns={ columns }
|
||||
selectRow={ selectRow }
|
||||
/>
|
||||
@ -198,6 +201,7 @@ describe('Header', () => {
|
||||
selectRow={ selectRow }
|
||||
>
|
||||
<Header
|
||||
{ ...mockHeaderResolvedProps }
|
||||
columns={ columns }
|
||||
selectRow={ selectRow }
|
||||
/>
|
||||
@ -211,4 +215,44 @@ describe('Header', () => {
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('expandRow', () => {
|
||||
describe('when expandRow.showExpandColumn is false', () => {
|
||||
beforeEach(() => {
|
||||
wrapper = shallow(
|
||||
<Header
|
||||
{ ...mockHeaderResolvedProps }
|
||||
columns={ columns }
|
||||
/>
|
||||
);
|
||||
});
|
||||
|
||||
it('should not render <ExpandHeaderCell />', () => {
|
||||
expect(wrapper.find(ExpandHeaderCell).length).toBe(0);
|
||||
});
|
||||
});
|
||||
|
||||
describe('when expandRow.showExpandColumn is true', () => {
|
||||
beforeEach(() => {
|
||||
const expandRow = { renderer: jest.fn(), expanded: [], showExpandColumn: true };
|
||||
wrapper = mount(
|
||||
<ExpansionContext.Provider
|
||||
data={ data }
|
||||
keyField={ keyField }
|
||||
expandRow={ expandRow }
|
||||
>
|
||||
<Header
|
||||
{ ...mockHeaderResolvedProps }
|
||||
columns={ columns }
|
||||
expandRow={ expandRow }
|
||||
/>
|
||||
</ExpansionContext.Provider>
|
||||
);
|
||||
});
|
||||
|
||||
it('should render <ExpandHeaderCell /> correctly', () => {
|
||||
expect(wrapper.find(ExpandHeaderCell).length).toBe(1);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@ -1,8 +1,12 @@
|
||||
import 'jsdom-global/register';
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import mockBodyResolvedProps from './test-helpers/mock/body-resolved-props';
|
||||
import SelectionContext from '../src/contexts/selection-context';
|
||||
import ExpansionContext from '../src/contexts/row-expand-context';
|
||||
import bindSelection from '../src/row-selection/row-binder';
|
||||
import bindExpansion from '../src/row-expand/row-binder';
|
||||
import ExpandCell from '../src/row-expand/expand-cell';
|
||||
import SelectionCell from '../src/row-selection/selection-cell';
|
||||
import RowAggregator from '../src/row-aggregator';
|
||||
import Row from '../src/row';
|
||||
@ -11,6 +15,7 @@ describe('Row Aggregator', () => {
|
||||
let wrapper;
|
||||
let rowAggregator;
|
||||
const RowAggregatorWithSelection = bindSelection(RowAggregator);
|
||||
const RowAggregatorWithExpansion = bindExpansion(RowAggregator);
|
||||
|
||||
const data = [{
|
||||
id: 1,
|
||||
@ -37,16 +42,17 @@ describe('Row Aggregator', () => {
|
||||
row,
|
||||
columns,
|
||||
keyField,
|
||||
rowIndex
|
||||
rowIndex,
|
||||
...mockBodyResolvedProps
|
||||
});
|
||||
|
||||
describe('when props.selectRow is defeind', () => {
|
||||
describe('when selectRow is enable', () => {
|
||||
describe('if props.selectRow.hideSelectColumn is false', () => {
|
||||
beforeEach(() => {
|
||||
const selectRow = { mode: 'radio' };
|
||||
wrapper = mount(
|
||||
<SelectionContext.Provider data={ data } keyField={ keyField } selectRow={ selectRow }>
|
||||
<RowAggregatorWithSelection { ...getBaseProps() } cellEdit={ {} } />
|
||||
<RowAggregatorWithSelection { ...getBaseProps() } />
|
||||
</SelectionContext.Provider>
|
||||
);
|
||||
});
|
||||
@ -69,7 +75,7 @@ describe('Row Aggregator', () => {
|
||||
const selectRow = { mode: 'radio', hideSelectColumn: true };
|
||||
wrapper = mount(
|
||||
<SelectionContext.Provider data={ data } keyField={ keyField } selectRow={ selectRow }>
|
||||
<RowAggregatorWithSelection { ...getBaseProps() } cellEdit={ {} } />
|
||||
<RowAggregatorWithSelection { ...getBaseProps() } />
|
||||
</SelectionContext.Provider>
|
||||
);
|
||||
});
|
||||
@ -90,7 +96,7 @@ describe('Row Aggregator', () => {
|
||||
const selectRow = { mode: 'radio', clickToSelect: true };
|
||||
wrapper = mount(
|
||||
<SelectionContext.Provider data={ data } keyField={ keyField } selectRow={ selectRow }>
|
||||
<RowAggregatorWithSelection { ...getBaseProps() } cellEdit={ {} } />
|
||||
<RowAggregatorWithSelection { ...getBaseProps() } />
|
||||
</SelectionContext.Provider>
|
||||
);
|
||||
});
|
||||
@ -108,6 +114,51 @@ describe('Row Aggregator', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('when expandRow is enable', () => {
|
||||
describe('if props.expandRow.showExpandColumn is false', () => {
|
||||
beforeEach(() => {
|
||||
const expandRow = { renderer: jest.fn() };
|
||||
wrapper = mount(
|
||||
<ExpansionContext.Provider data={ data } keyField={ keyField } expandRow={ expandRow }>
|
||||
<RowAggregatorWithExpansion { ...getBaseProps() } />
|
||||
</ExpansionContext.Provider>
|
||||
);
|
||||
});
|
||||
|
||||
it('should render RowAggregator correctly', () => {
|
||||
rowAggregator = wrapper.find(RowAggregator);
|
||||
expect(rowAggregator).toHaveLength(1);
|
||||
});
|
||||
|
||||
it('should not render expansion column', () => {
|
||||
const expandCell = wrapper.find(ExpandCell);
|
||||
expect(expandCell).toHaveLength(0);
|
||||
});
|
||||
});
|
||||
|
||||
describe('if props.expandRow.showExpandColumn is true', () => {
|
||||
beforeEach(() => {
|
||||
const expandRow = { renderer: jest.fn(), showExpandColumn: true };
|
||||
wrapper = mount(
|
||||
<ExpansionContext.Provider data={ data } keyField={ keyField } expandRow={ expandRow }>
|
||||
<RowAggregatorWithExpansion { ...getBaseProps() } />
|
||||
</ExpansionContext.Provider>
|
||||
);
|
||||
});
|
||||
|
||||
it('should render RowAggregator correctly', () => {
|
||||
rowAggregator = wrapper.find(RowAggregator);
|
||||
expect(rowAggregator).toHaveLength(1);
|
||||
});
|
||||
|
||||
it('should render expansion column correctly', () => {
|
||||
const expandCell = wrapper.find(ExpandCell);
|
||||
expect(expandCell).toHaveLength(1);
|
||||
expect(expandCell.props().expanded).toEqual(rowAggregator.props().expanded);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('createClickEventHandler', () => {
|
||||
describe('if props.attrs.onClick is defined', () => {
|
||||
const attrs = { onClick: jest.fn() };
|
||||
@ -116,34 +167,111 @@ describe('Row Aggregator', () => {
|
||||
const selectRow = { mode: 'radio' };
|
||||
wrapper = mount(
|
||||
<SelectionContext.Provider data={ data } keyField={ keyField } selectRow={ selectRow }>
|
||||
<RowAggregatorWithSelection { ...getBaseProps() } cellEdit={ {} } attrs={ attrs } />
|
||||
<RowAggregatorWithSelection { ...getBaseProps() } attrs={ attrs } />
|
||||
</SelectionContext.Provider>
|
||||
);
|
||||
wrapper.find('tr').simulate('click');
|
||||
});
|
||||
|
||||
it('should add onClick prop to Row Component', () => {
|
||||
it('should call attrs.onClick correctly', () => {
|
||||
expect(attrs.onClick).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
||||
|
||||
describe('if props.selectRow.clickToSelect is defined', () => {
|
||||
describe('if props.selectRow.clickToSelect is true', () => {
|
||||
const selectRow = { mode: 'radio', clickToSelect: true };
|
||||
beforeEach(() => {
|
||||
wrapper = mount(
|
||||
<SelectionContext.Provider data={ data } keyField={ keyField } selectRow={ selectRow }>
|
||||
<RowAggregatorWithSelection { ...getBaseProps() } cellEdit={ {} } />
|
||||
<RowAggregatorWithSelection { ...getBaseProps() } />
|
||||
</SelectionContext.Provider>
|
||||
);
|
||||
wrapper.find(RowAggregator).props().selectRow.onRowSelect = jest.fn();
|
||||
wrapper.find('tr').simulate('click');
|
||||
});
|
||||
|
||||
it('should add onClick prop to Row Component', () => {
|
||||
it('should call selectRow.onRowSelect correctly', () => {
|
||||
expect(wrapper.find(RowAggregator).props().selectRow.onRowSelect).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
||||
|
||||
describe('if props.selectRow.clickToSelect is true', () => {
|
||||
describe('but selectable props is false', () => {
|
||||
const selectRow = { mode: 'radio', clickToSelect: true, nonSelectable: [row[keyField]] };
|
||||
beforeEach(() => {
|
||||
wrapper = mount(
|
||||
<SelectionContext.Provider data={ data } keyField={ keyField } selectRow={ selectRow }>
|
||||
<RowAggregatorWithSelection { ...getBaseProps() } />
|
||||
</SelectionContext.Provider>
|
||||
);
|
||||
wrapper.find(RowAggregator).props().selectRow.onRowSelect = jest.fn();
|
||||
wrapper.find('tr').simulate('click');
|
||||
});
|
||||
|
||||
it('should call selectRow.onRowSelect correctly', () => {
|
||||
expect(wrapper.find(RowAggregator).props().selectRow.onRowSelect)
|
||||
.toHaveBeenCalledTimes(0);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('if props.expandRow.renderer is defined', () => {
|
||||
describe('but expandable props is false', () => {
|
||||
const expandRow = { renderer: jest.fn(), nonExpandable: [row[keyField]] };
|
||||
beforeEach(() => {
|
||||
wrapper = mount(
|
||||
<ExpansionContext.Provider data={ data } keyField={ keyField } expandRow={ expandRow }>
|
||||
<RowAggregatorWithExpansion { ...getBaseProps() } />
|
||||
</ExpansionContext.Provider>
|
||||
);
|
||||
wrapper.find(RowAggregator).props().expandRow.onRowExpand = jest.fn();
|
||||
wrapper.find('tr').simulate('click');
|
||||
});
|
||||
|
||||
it('should call expandRow.onRowExpand correctly', () => {
|
||||
expect(wrapper.find(RowAggregator).props().expandRow.onRowExpand)
|
||||
.toHaveBeenCalledTimes(0);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('if props.expandRow.renderer is defined', () => {
|
||||
const expandRow = { renderer: jest.fn() };
|
||||
beforeEach(() => {
|
||||
wrapper = mount(
|
||||
<ExpansionContext.Provider data={ data } keyField={ keyField } expandRow={ expandRow }>
|
||||
<RowAggregatorWithExpansion { ...getBaseProps() } />
|
||||
</ExpansionContext.Provider>
|
||||
);
|
||||
wrapper.find(RowAggregator).props().expandRow.onRowExpand = jest.fn();
|
||||
wrapper.find('tr').simulate('click');
|
||||
});
|
||||
|
||||
it('should call expandRow.onRowExpand correctly', () => {
|
||||
expect(wrapper.find(RowAggregator).props().expandRow.onRowExpand).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
||||
|
||||
describe('if props.attrs.onClick and props.expandRow.renderer both are defined', () => {
|
||||
const attrs = { onClick: jest.fn() };
|
||||
const expandRow = { renderer: jest.fn() };
|
||||
|
||||
beforeEach(() => {
|
||||
wrapper = mount(
|
||||
<ExpansionContext.Provider data={ data } keyField={ keyField } expandRow={ expandRow }>
|
||||
<RowAggregatorWithExpansion { ...getBaseProps() } attrs={ attrs } />
|
||||
</ExpansionContext.Provider>
|
||||
);
|
||||
wrapper.find(RowAggregator).props().expandRow.onRowExpand = jest.fn();
|
||||
wrapper.find('tr').simulate('click');
|
||||
});
|
||||
|
||||
it('should call attrs.onClick and expandRow.onRowExpand correctly', () => {
|
||||
expect(attrs.onClick).toHaveBeenCalledTimes(1);
|
||||
expect(wrapper.find(RowAggregator).props().expandRow.onRowExpand).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
||||
|
||||
describe('if props.attrs.onClick and props.selectRow.clickToSelect both are defined', () => {
|
||||
const attrs = { onClick: jest.fn() };
|
||||
const selectRow = { mode: 'radio', clickToSelect: true };
|
||||
@ -151,14 +279,14 @@ describe('Row Aggregator', () => {
|
||||
beforeEach(() => {
|
||||
wrapper = mount(
|
||||
<SelectionContext.Provider data={ data } keyField={ keyField } selectRow={ selectRow }>
|
||||
<RowAggregatorWithSelection { ...getBaseProps() } cellEdit={ {} } attrs={ attrs } />
|
||||
<RowAggregatorWithSelection { ...getBaseProps() } attrs={ attrs } />
|
||||
</SelectionContext.Provider>
|
||||
);
|
||||
wrapper.find(RowAggregator).props().selectRow.onRowSelect = jest.fn();
|
||||
wrapper.find('tr').simulate('click');
|
||||
});
|
||||
|
||||
it('should add onClick prop to Row Component', () => {
|
||||
it('should call attrs.onClick and selectRow.onRowSelect correctly', () => {
|
||||
expect(attrs.onClick).toHaveBeenCalledTimes(1);
|
||||
expect(wrapper.find(RowAggregator).props().selectRow.onRowSelect).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
@ -3,7 +3,14 @@ import Const from '../../../src/const';
|
||||
const { ROW_SELECT_DISABLED, UNABLE_TO_CELL_EDIT } = Const;
|
||||
|
||||
export const rowSelectionResolvedProps = {
|
||||
mode: ROW_SELECT_DISABLED
|
||||
mode: ROW_SELECT_DISABLED,
|
||||
selected: [],
|
||||
hideSelectColumn: true
|
||||
};
|
||||
|
||||
export const expandRowResolvedProps = {
|
||||
renderer: undefined,
|
||||
expanded: []
|
||||
};
|
||||
|
||||
export const cellEditResolvedProps = {
|
||||
@ -12,5 +19,6 @@ export const cellEditResolvedProps = {
|
||||
|
||||
export default {
|
||||
cellEdit: cellEditResolvedProps,
|
||||
expandRow: expandRowResolvedProps,
|
||||
selectRow: rowSelectionResolvedProps
|
||||
};
|
||||
|
||||
@ -3,9 +3,17 @@ import Const from '../../../src/const';
|
||||
const { ROW_SELECT_DISABLED } = Const;
|
||||
|
||||
export const rowSelectionResolvedProps = {
|
||||
mode: ROW_SELECT_DISABLED
|
||||
mode: ROW_SELECT_DISABLED,
|
||||
selected: [],
|
||||
hideSelectColumn: true
|
||||
};
|
||||
|
||||
export const expandRowResolvedProps = {
|
||||
renderer: undefined,
|
||||
expanded: []
|
||||
};
|
||||
|
||||
export default {
|
||||
selectRow: rowSelectionResolvedProps
|
||||
selectRow: rowSelectionResolvedProps,
|
||||
expandRow: expandRowResolvedProps
|
||||
};
|
||||
|
||||
Loading…
Reference in New Issue
Block a user