import React from 'react'; import createStore from '../../components/table/createStore'; import Table from '../../components/table'; import TestUtils from 'react-addons-test-utils'; import { render, mount, shallow } from 'enzyme'; import { renderToJson } from 'enzyme-to-json'; const { Column, ColumnGroup } = Table; describe('Table', () => { describe('row selection', () => { it('allow select by checkbox', () => { const columns = [{ title: 'Name', dataIndex: 'name', }]; const data = [{ name: 'Jack', }, { name: 'Lucy', }]; const instance = TestUtils.renderIntoDocument( ); const checkboxes = TestUtils.scryRenderedDOMComponentsWithTag(instance, 'input'); const checkboxAll = checkboxes[0]; checkboxAll.checked = true; TestUtils.Simulate.change(checkboxAll); expect(instance.store.getState()).toEqual({ selectedRowKeys: [0, 1], selectionDirty: true, }); checkboxes[1].checked = false; TestUtils.Simulate.change(checkboxes[1]); expect(instance.store.getState()).toEqual({ selectedRowKeys: [1], selectionDirty: true, }); checkboxes[1].checked = true; TestUtils.Simulate.change(checkboxes[1]); expect(instance.store.getState()).toEqual({ selectedRowKeys: [1, 0], selectionDirty: true, }); }); it('pass getCheckboxProps to checkbox', () => { const columns = [{ title: 'Name', dataIndex: 'name', }]; const data = [{ id: 0, name: 'Jack', }, { id: 1, name: 'Lucy', }]; const rowSelection = { getCheckboxProps: record => ({ disabled: record.name === 'Lucy', }), }; const instance = TestUtils.renderIntoDocument(
); const checkboxes = TestUtils.scryRenderedDOMComponentsWithTag(instance, 'input'); expect(checkboxes[1].disabled).toBe(false); expect(checkboxes[2].disabled).toBe(true); }); it('works with pagination', () => { const columns = [{ title: 'Name', dataIndex: 'name', }]; const data = [{ id: 0, name: 'Jack', }, { id: 1, name: 'Lucy', }, { id: 3, name: 'Tom', }, { id: 4, name: 'Jerry', }]; const wrapper = mount(
); const checkboxAll = wrapper.find('SelectionCheckboxAll'); const pagers = wrapper.find('Pager'); checkboxAll.find('input').simulate('change', { target: { checked: true } }); expect(checkboxAll.node.state).toEqual({ checked: true, indeterminate: false }); pagers.at(1).simulate('click'); expect(checkboxAll.node.state).toEqual({ checked: false, indeterminate: false }); pagers.at(0).simulate('click'); expect(checkboxAll.node.state).toEqual({ checked: true, indeterminate: false }); }); }); describe('JSX style API', () => { it('renders correctly', () => { const data = [{ key: '1', firstName: 'John', lastName: 'Brown', age: 32, }, { key: '2', firstName: 'Jim', lastName: 'Green', age: 42, }]; const wrapper = render(
); expect(renderToJson(wrapper)).toMatchSnapshot(); }); }); it('updates columns when receiving props', () => { const columns = [{ title: 'Name', key: 'name', dataIndex: 'name' }]; const wrapper = shallow(); const newColumns = [{ title: 'Title', key: 'title', dataIndex: 'title' }]; wrapper.setProps({ columns: newColumns }); expect(wrapper.instance().columns).toBe(newColumns); }); })