You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

91 lines
2.1 KiB

import React from 'react';
import createStore from '../../components/table/createStore';
import Table from '../../components/table';
import TestUtils from 'react-addons-test-utils';
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(
<Table
columns={columns}
dataSource={data}
rowSelection={{}}
/>
);
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(
<Table
columns={columns}
dataSource={data}
rowSelection={rowSelection}
rowKey="id"
/>
);
const checkboxes = TestUtils.scryRenderedDOMComponentsWithTag(instance, 'input');
expect(checkboxes[1].disabled).toBe(false);
expect(checkboxes[2].disabled).toBe(true);
});
});
})