-
Notifications
You must be signed in to change notification settings - Fork 0
/
Table-D.test.js
92 lines (81 loc) · 2.42 KB
/
Table-D.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/* @flow */
import React from 'react';
import Enzyme, {mount} from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
Enzyme.configure({adapter: new Adapter()});
import {relevantTestObject} from '../../testing/react-test-renderer';
import {createStore} from 'redux';
import {Provider} from 'react-redux';
import {receiveData} from '../../actions';
import reducer from '../../reducers';
import {fieldsReceived as fields} from '../../reducers/fields';
import {
recordA,
recordB,
recordC,
recordD,
} from '../../testing/records-data';
import {
clickDelete,
countRecords,
tbodyShallow,
} from '../../testing/selectors';
import Table from '../Table';
const TableRow = () => {}; // mock, and provide only relevant props
describe('Table deletes records', () => {
const store = createStore(reducer);
const records = [recordA, recordB, recordC, recordD];
store.dispatch(receiveData(fields, records));
const $it = mount(
<Provider store={store}>
<Table />
</Provider>
);
test('in the middle', () => {
clickDelete($it, 1); // recordB is in the middle
expect(countRecords($it)).toEqual(records.length - 1);
expect(tbodyShallow($it)).toMatchObject(relevantTestObject(
<tbody>
<TableRow record={recordA} />
<TableRow record={recordC} />
<TableRow record={recordD} />
</tbody>
));
});
test('at the end', () => {
clickDelete($it, 2);
expect(countRecords($it)).toEqual(records.length - 2);
expect(tbodyShallow($it)).toMatchObject(relevantTestObject(
<tbody>
<TableRow record={recordA} />
<TableRow record={recordC} />
</tbody>
));
});
test('at the beginning', () => {
clickDelete($it, 0);
expect(countRecords($it)).toEqual(records.length - 3);
expect(tbodyShallow($it)).toMatchObject(relevantTestObject(
<tbody>
<TableRow record={recordC} />
</tbody>
));
});
test('at the beginning and end', () => {
clickDelete($it, 0);
expect(countRecords($it)).toEqual(records.length - 4);
expect(tbodyShallow($it)).toMatchObject(relevantTestObject(
<tbody />
));
});
});
describe('Table cannot delete records if there are none', () => {
const store = createStore(reducer);
store.dispatch(receiveData(fields, []));
const $it = mount(
<Provider store={store}>
<Table />
</Provider>
);
expect($it.find('tbody tr').at(0).find('td').at(0).length).toBe(0);
});