-
Notifications
You must be signed in to change notification settings - Fork 0
/
Table-C.test.js
111 lines (99 loc) · 3.08 KB
/
Table-C.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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/* @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 {fieldsInitial, fieldsReceived as fields} from '../../reducers/fields';
import {recordsInitial, recordDefault} from '../../reducers/records';
import {
recordB,
recordC,
recordD,
} from '../../testing/records-data';
import {
clickAdd,
countRecords,
tbodyShallow,
} from '../../testing/selectors';
import Table from '../Table';
const TableRow = () => {}; // mock, and provide only relevant props
describe('Table', () => {
it('creates a row with initial empty fields', () => {
const recordAdded = recordDefault(fieldsInitial, recordsInitial);
const store = createStore(reducer);
const $it = mount(
<Provider store={store}>
<Table />
</Provider>
);
clickAdd($it);
expect(countRecords($it)).toEqual(recordsInitial.length + 1);
expect(tbodyShallow($it)).toMatchObject(relevantTestObject(
<tbody>
<TableRow record={recordAdded} />
</tbody>
));
});
it('creates a row with received fields', () => {
const recordAdded = recordDefault(fields, recordsInitial);
const store = createStore(reducer);
store.dispatch(receiveData(fields));
const $it = mount(
<Provider store={store}>
<Table />
</Provider>
);
clickAdd($it);
expect(countRecords($it)).toEqual(recordsInitial.length + 1);
expect(tbodyShallow($it)).toMatchObject(relevantTestObject(
<tbody>
<TableRow record={recordAdded} />
</tbody>
));
});
test('a row preceding one existing row', () => {
const records = [recordB];
const recordAdded = recordDefault(fields, records);
const store = createStore(reducer);
store.dispatch(receiveData(fields, records));
const $it = mount(
<Provider store={store}>
<Table />
</Provider>
);
clickAdd($it);
expect(countRecords($it)).toEqual(records.length + 1);
expect(tbodyShallow($it)).toMatchObject(relevantTestObject(
<tbody>
<TableRow record={recordAdded} />
<TableRow record={recordB} />
</tbody>
));
});
test('a row preceding more than one existing row', () => {
const records = [recordB, recordC, recordD];
const recordAdded = recordDefault(fields, records);
const store = createStore(reducer);
store.dispatch(receiveData(fields, records));
const $it = mount(
<Provider store={store}>
<Table />
</Provider>
);
clickAdd($it);
expect(countRecords($it)).toEqual(records.length + 1);
expect(tbodyShallow($it)).toMatchObject(relevantTestObject(
<tbody>
<TableRow record={recordAdded} />
<TableRow record={recordB} />
<TableRow record={recordC} />
<TableRow record={recordD} />
</tbody>
));
});
});