vitessce
Version:
Vitessce app and React component library
89 lines (83 loc) • 2.35 kB
JavaScript
import React from 'react';
import Adapter from 'enzyme-adapter-react-16';
import { configure, mount } from 'enzyme';
import expect from 'expect';
import SelectableTable from './SelectableTable';
const tableData = [
{
X: 'X1',
Y: 'Y1',
Name: 'Tile 1',
},
{
X: 'X1',
Y: 'Y2',
Name: 'Tile 2',
},
{
X: 'X3',
Y: 'Y3',
Name: 'Tile 3',
},
];
const tableIdKey = 'Name';
const tableColumns = [
'X',
'Y',
'Name',
];
configure({ adapter: new Adapter() });
describe('SelectableTable.js', () => {
describe('<SelectableTable />', () => {
it('renders column values', () => {
const wrapper = mount(
<SelectableTable
data={tableData}
columns={tableColumns}
idKey={tableIdKey}
testHeight={500}
testWidth={500}
/>,
);
expect(wrapper.find('.table-row').first().text()).toEqual('XYName');
// Since the button (although hidden) is also a table-cell, it has a blank string.
expect(wrapper.find('.table-cell').map(node => node.text())).toEqual(['', 'X1', 'Y1', 'Tile 1', '', 'X1', 'Y2', 'Tile 2', '', 'X3', 'Y3', 'Tile 3']);
});
it('emits single selected object when allowMultiple is false', (done) => {
const wrapper = mount(
<SelectableTable
data={tableData}
columns={tableColumns}
idKey={tableIdKey}
onChange={(selection) => {
expect(Array.isArray(selection)).toBe(false);
expect(selection.Name).toEqual('Tile 1');
done();
}}
testHeight={500}
testWidth={500}
/>,
);
wrapper.find('.table-item').first().simulate('click');
});
it('emits an array of selected objects when allowMultiple is true', (done) => {
const wrapper = mount(
<SelectableTable
data={tableData}
columns={tableColumns}
idKey={tableIdKey}
allowMultiple
onChange={(selection) => {
expect(Array.isArray(selection)).toBe(true);
expect(selection.length).toEqual(1);
expect(selection[0].Name).toEqual('Tile 2');
done();
}}
testHeight={500}
testWidth={500}
/>,
);
wrapper.find('.table-item').at(1).simulate('click');
});
});
});