@pingux/astro 1.27.0-alpha.14 → 1.27.0-alpha.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/components/DataTable/DataTable.js +477 -0
- package/lib/cjs/components/DataTable/DataTable.stories.js +310 -0
- package/lib/cjs/components/DataTable/DataTable.styles.js +156 -0
- package/lib/cjs/components/DataTable/DataTable.test.js +1307 -0
- package/lib/cjs/components/DataTable/DataTableChip.js +63 -0
- package/lib/cjs/components/DataTable/DataTableChip.test.js +38 -0
- package/lib/cjs/components/DataTable/DataTableMenu.js +51 -0
- package/lib/cjs/components/DataTable/DataTableMenu.test.js +20 -0
- package/lib/cjs/components/DataTable/DataTableMultiLine.js +75 -0
- package/lib/cjs/components/DataTable/DataTableMultiLine.test.js +30 -0
- package/lib/cjs/components/DataTable/DataTableVirtualizer.js +188 -0
- package/lib/cjs/components/DataTable/index.js +54 -0
- package/lib/cjs/components/EnvironmentBreadcrumb/EnvironmentBreadcrumb.js +8 -2
- package/lib/cjs/components/EnvironmentBreadcrumb/EnvironmentBreadcrumb.test.js +35 -0
- package/lib/cjs/components/PageHeader/PageHeader.js +7 -1
- package/lib/cjs/context/DataTableContext/index.js +31 -0
- package/lib/cjs/index.js +67 -2
- package/lib/cjs/recipes/FlippableCaretMenuButton.stories.js +38 -30
- package/lib/cjs/recipes/ListAndPanel.stories.js +102 -87
- package/lib/cjs/recipes/MaskedValue.stories.js +8 -5
- package/lib/cjs/recipes/NeutralInput.stories.js +6 -3
- package/lib/cjs/recipes/OneWayToBidirectionalArrow.stories.js +38 -33
- package/lib/cjs/recipes/PageHeader.stories.js +73 -0
- package/lib/cjs/recipes/RowLineChart.stories.js +58 -70
- package/lib/cjs/recipes/SelectedFieldOverlay.story.js +25 -21
- package/lib/cjs/recipes/TrialExperienceStatusBar.stories.js +81 -72
- package/lib/cjs/styles/variants/variants.js +4 -1
- package/lib/components/DataTable/DataTable.js +431 -0
- package/lib/components/DataTable/DataTable.stories.js +273 -0
- package/lib/components/DataTable/DataTable.styles.js +137 -0
- package/lib/components/DataTable/DataTable.test.js +1256 -0
- package/lib/components/DataTable/DataTableChip.js +33 -0
- package/lib/components/DataTable/DataTableChip.test.js +31 -0
- package/lib/components/DataTable/DataTableMenu.js +24 -0
- package/lib/components/DataTable/DataTableMenu.test.js +13 -0
- package/lib/components/DataTable/DataTableMultiLine.js +46 -0
- package/lib/components/DataTable/DataTableMultiLine.test.js +22 -0
- package/lib/components/DataTable/DataTableVirtualizer.js +157 -0
- package/lib/components/DataTable/index.js +5 -0
- package/lib/components/EnvironmentBreadcrumb/EnvironmentBreadcrumb.js +7 -2
- package/lib/components/EnvironmentBreadcrumb/EnvironmentBreadcrumb.test.js +25 -0
- package/lib/components/PageHeader/PageHeader.js +8 -1
- package/lib/context/DataTableContext/index.js +5 -0
- package/lib/index.js +4 -1
- package/lib/recipes/FlippableCaretMenuButton.stories.js +38 -30
- package/lib/recipes/ListAndPanel.stories.js +102 -87
- package/lib/recipes/MaskedValue.stories.js +8 -5
- package/lib/recipes/NeutralInput.stories.js +6 -3
- package/lib/recipes/OneWayToBidirectionalArrow.stories.js +38 -33
- package/lib/recipes/PageHeader.stories.js +53 -0
- package/lib/recipes/RowLineChart.stories.js +58 -70
- package/lib/recipes/SelectedFieldOverlay.story.js +25 -21
- package/lib/recipes/TrialExperienceStatusBar.stories.js +81 -72
- package/lib/styles/variants/variants.js +3 -1
- package/package.json +55 -50
@@ -0,0 +1,1307 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
var _Array$isArray = require("@babel/runtime-corejs3/core-js-stable/array/is-array");
|
6
|
+
|
7
|
+
var _getIteratorMethod = require("@babel/runtime-corejs3/core-js/get-iterator-method");
|
8
|
+
|
9
|
+
var _Symbol = require("@babel/runtime-corejs3/core-js-stable/symbol");
|
10
|
+
|
11
|
+
var _Array$from = require("@babel/runtime-corejs3/core-js-stable/array/from");
|
12
|
+
|
13
|
+
var _sliceInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/slice");
|
14
|
+
|
15
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
16
|
+
|
17
|
+
var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
|
18
|
+
|
19
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
|
20
|
+
|
21
|
+
var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
|
22
|
+
|
23
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
24
|
+
|
25
|
+
var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
|
26
|
+
|
27
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
|
28
|
+
|
29
|
+
var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
|
30
|
+
|
31
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
32
|
+
|
33
|
+
var _parseInt2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/parse-int"));
|
34
|
+
|
35
|
+
var _sort2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/sort"));
|
36
|
+
|
37
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs3/regenerator"));
|
38
|
+
|
39
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/asyncToGenerator"));
|
40
|
+
|
41
|
+
var _setTimeout2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set-timeout"));
|
42
|
+
|
43
|
+
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
44
|
+
|
45
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
46
|
+
|
47
|
+
var _react = _interopRequireDefault(require("react"));
|
48
|
+
|
49
|
+
var _react2 = require("@testing-library/react");
|
50
|
+
|
51
|
+
var _data = require("@react-stately/data");
|
52
|
+
|
53
|
+
var _reactHooks = require("@testing-library/react-hooks");
|
54
|
+
|
55
|
+
var _DataTable = _interopRequireDefault(require("./DataTable"));
|
56
|
+
|
57
|
+
var _index = require("../../index");
|
58
|
+
|
59
|
+
var _react3 = require("@emotion/react");
|
60
|
+
|
61
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && _getIteratorMethod(o) || o["@@iterator"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
62
|
+
|
63
|
+
function _unsupportedIterableToArray(o, minLen) { var _context37; if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty(_context37 = Object.prototype.toString.call(o)).call(_context37, 8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
64
|
+
|
65
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
66
|
+
|
67
|
+
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
68
|
+
|
69
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context35, _context36; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context35 = ownKeys(Object(source), !0)).call(_context35, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context36 = ownKeys(Object(source))).call(_context36, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
70
|
+
|
71
|
+
var offsetWidth;
|
72
|
+
var offsetHeight;
|
73
|
+
beforeAll(function () {
|
74
|
+
offsetWidth = jest.spyOn(window.HTMLElement.prototype, 'clientWidth', 'get').mockImplementation(function () {
|
75
|
+
return 1000;
|
76
|
+
});
|
77
|
+
offsetHeight = jest.spyOn(window.HTMLElement.prototype, 'clientHeight', 'get').mockImplementation(function () {
|
78
|
+
return 1000;
|
79
|
+
});
|
80
|
+
jest.useFakeTimers();
|
81
|
+
});
|
82
|
+
afterAll(function () {
|
83
|
+
offsetWidth.mockReset();
|
84
|
+
offsetHeight.mockReset();
|
85
|
+
});
|
86
|
+
var columns = [{
|
87
|
+
name: 'Country',
|
88
|
+
key: 'country'
|
89
|
+
}, {
|
90
|
+
name: 'Population',
|
91
|
+
key: 'population'
|
92
|
+
}, {
|
93
|
+
name: 'Continent',
|
94
|
+
key: 'continent'
|
95
|
+
}];
|
96
|
+
var rows = [{
|
97
|
+
id: 1,
|
98
|
+
country: 'USA',
|
99
|
+
population: 320000000,
|
100
|
+
continent: 'North America'
|
101
|
+
}, {
|
102
|
+
id: 2,
|
103
|
+
country: 'Canada',
|
104
|
+
population: 37000000,
|
105
|
+
continent: 'North America'
|
106
|
+
}, {
|
107
|
+
id: 3,
|
108
|
+
country: 'China',
|
109
|
+
population: 1398000000,
|
110
|
+
continent: 'Asia'
|
111
|
+
}, {
|
112
|
+
id: 4,
|
113
|
+
country: 'France',
|
114
|
+
population: 67000000,
|
115
|
+
continent: 'Europe'
|
116
|
+
}];
|
117
|
+
|
118
|
+
var getCell = function getCell(view, text) {
|
119
|
+
// Find by text, then go up to the element with the cell role.
|
120
|
+
// eslint-disable-next-line testing-library/prefer-screen-queries
|
121
|
+
var el = view.getByText(text);
|
122
|
+
|
123
|
+
while (el && !/gridcell|rowheader|columnheader/.test(el.getAttribute('role'))) {
|
124
|
+
el = el.parentElement;
|
125
|
+
}
|
126
|
+
|
127
|
+
return el;
|
128
|
+
};
|
129
|
+
|
130
|
+
var focusCell = function focusCell(tree, text) {
|
131
|
+
return (0, _react2.act)(function () {
|
132
|
+
return getCell(tree, text).focus();
|
133
|
+
});
|
134
|
+
};
|
135
|
+
|
136
|
+
var moveFocus = function moveFocus(key) {
|
137
|
+
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
138
|
+
|
139
|
+
_react2.fireEvent.keyDown(document.activeElement, _objectSpread({
|
140
|
+
key: key
|
141
|
+
}, opts));
|
142
|
+
};
|
143
|
+
|
144
|
+
describe('Static DataTable', function () {
|
145
|
+
var testId = 'staticTable';
|
146
|
+
var defaultProps = {
|
147
|
+
'aria-label': 'Default table with static content',
|
148
|
+
width: '100%',
|
149
|
+
height: '100%',
|
150
|
+
density: 'spacious',
|
151
|
+
'data-testid': testId
|
152
|
+
};
|
153
|
+
|
154
|
+
var staticDataTable = function staticDataTable() {
|
155
|
+
return (0, _react2.render)((0, _react3.jsx)(_DataTable["default"], defaultProps, (0, _react3.jsx)(_index.DataTableHeader, {
|
156
|
+
columns: columns
|
157
|
+
}, function (column) {
|
158
|
+
return (0, _react3.jsx)(_index.DataTableColumn, {
|
159
|
+
align: "center"
|
160
|
+
}, column.name);
|
161
|
+
}), (0, _react3.jsx)(_index.DataTableBody, {
|
162
|
+
items: rows
|
163
|
+
}, function (item) {
|
164
|
+
return (0, _react3.jsx)(_index.DataTableRow, null, function (columnKey) {
|
165
|
+
return (0, _react3.jsx)(_index.DataTableCell, null, item[columnKey]);
|
166
|
+
});
|
167
|
+
})));
|
168
|
+
};
|
169
|
+
|
170
|
+
test('renders DataTable component with static content', function () {
|
171
|
+
staticDataTable();
|
172
|
+
|
173
|
+
var staticTable = _react2.screen.getByTestId(testId);
|
174
|
+
|
175
|
+
expect(staticTable).toBeInTheDocument();
|
176
|
+
expect(staticTable).toBeVisible();
|
177
|
+
expect(staticTable).toHaveAttribute('aria-label', 'Default table with static content');
|
178
|
+
expect(staticTable).toHaveAttribute('data-testid', testId);
|
179
|
+
expect(staticTable).toHaveAttribute('aria-rowcount', '5');
|
180
|
+
expect(staticTable).toHaveAttribute('aria-colcount', '3');
|
181
|
+
var rowgroups = (0, _react2.within)(staticTable).getAllByRole('rowgroup');
|
182
|
+
expect(rowgroups).toHaveLength(2);
|
183
|
+
var headers = (0, _react2.within)(staticTable).getAllByRole('columnheader');
|
184
|
+
expect(headers).toHaveLength(3);
|
185
|
+
expect(headers[0]).toHaveAttribute('aria-colindex', '1');
|
186
|
+
expect(headers[1]).toHaveAttribute('aria-colindex', '2');
|
187
|
+
expect(headers[2]).toHaveAttribute('aria-colindex', '3'); // eslint-disable-next-line no-unused-vars, no-restricted-syntax
|
188
|
+
|
189
|
+
var _iterator = _createForOfIteratorHelper(headers),
|
190
|
+
_step;
|
191
|
+
|
192
|
+
try {
|
193
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
194
|
+
var header = _step.value;
|
195
|
+
expect(header).not.toHaveAttribute('aria-sort');
|
196
|
+
expect(header).not.toHaveAttribute('aria-describedby');
|
197
|
+
}
|
198
|
+
} catch (err) {
|
199
|
+
_iterator.e(err);
|
200
|
+
} finally {
|
201
|
+
_iterator.f();
|
202
|
+
}
|
203
|
+
|
204
|
+
expect(headers[0]).toHaveTextContent(columns[0].name);
|
205
|
+
expect(headers[1]).toHaveTextContent(columns[1].name);
|
206
|
+
expect(headers[2]).toHaveTextContent(columns[2].name);
|
207
|
+
var tRows = (0, _react2.within)(rowgroups[1]).getAllByRole('row');
|
208
|
+
expect(tRows).toHaveLength(4);
|
209
|
+
expect(tRows[0]).toHaveAttribute('aria-rowindex', '2');
|
210
|
+
expect(tRows[1]).toHaveAttribute('aria-rowindex', '3');
|
211
|
+
expect(tRows[2]).toHaveAttribute('aria-rowindex', '4');
|
212
|
+
expect(tRows[3]).toHaveAttribute('aria-rowindex', '5');
|
213
|
+
var rowheader = (0, _react2.within)(tRows[0]).getByRole('rowheader');
|
214
|
+
expect(rowheader).toHaveTextContent(rows[0].country);
|
215
|
+
expect(rowheader).toHaveAttribute('aria-colindex', '1');
|
216
|
+
rowheader = (0, _react2.within)(tRows[1]).getByRole('rowheader');
|
217
|
+
expect(rowheader).toHaveTextContent(rows[1].country);
|
218
|
+
expect(rowheader).toHaveAttribute('aria-colindex', '1');
|
219
|
+
rowheader = (0, _react2.within)(tRows[2]).getByRole('rowheader');
|
220
|
+
expect(rowheader).toHaveTextContent(rows[2].country);
|
221
|
+
expect(rowheader).toHaveAttribute('aria-colindex', '1');
|
222
|
+
rowheader = (0, _react2.within)(tRows[3]).getByRole('rowheader');
|
223
|
+
expect(rowheader).toHaveTextContent(rows[3].country);
|
224
|
+
expect(rowheader).toHaveAttribute('aria-colindex', '1');
|
225
|
+
var cells = (0, _react2.within)(rowgroups[1]).getAllByRole('gridcell');
|
226
|
+
expect(cells).toHaveLength(8);
|
227
|
+
expect(cells[0]).toHaveAttribute('aria-colindex', '2');
|
228
|
+
expect(cells[1]).toHaveAttribute('aria-colindex', '3');
|
229
|
+
expect(cells[2]).toHaveAttribute('aria-colindex', '2');
|
230
|
+
expect(cells[3]).toHaveAttribute('aria-colindex', '3');
|
231
|
+
expect(cells[4]).toHaveAttribute('aria-colindex', '2');
|
232
|
+
expect(cells[5]).toHaveAttribute('aria-colindex', '3');
|
233
|
+
expect(cells[6]).toHaveAttribute('aria-colindex', '2');
|
234
|
+
expect(cells[7]).toHaveAttribute('aria-colindex', '3');
|
235
|
+
});
|
236
|
+
test('should move focus to the next cell in a row with ArrowRight', function () {
|
237
|
+
var view = staticDataTable();
|
238
|
+
focusCell(view, 'USA');
|
239
|
+
moveFocus('ArrowRight'); // eslint-disable-next-line jest-dom/prefer-focus
|
240
|
+
|
241
|
+
expect(document.activeElement).toBe(getCell(view, 320000000));
|
242
|
+
});
|
243
|
+
test('should move focus to the previous cell in a row with ArrowLeft', function () {
|
244
|
+
var view = staticDataTable();
|
245
|
+
focusCell(view, 'Asia');
|
246
|
+
moveFocus('ArrowLeft');
|
247
|
+
expect(getCell(view, 1398000000)).toHaveFocus();
|
248
|
+
});
|
249
|
+
test('should move focus to the next cell in a row with ArrowUp', function () {
|
250
|
+
var view = staticDataTable();
|
251
|
+
focusCell(view, 'China');
|
252
|
+
moveFocus('ArrowUp'); // eslint-disable-next-line jest-dom/prefer-focus
|
253
|
+
|
254
|
+
expect(document.activeElement).toBe(getCell(view, 'Canada'));
|
255
|
+
});
|
256
|
+
test('should move focus to the previous cell in a row with ArrowDown', function () {
|
257
|
+
var view = staticDataTable();
|
258
|
+
focusCell(view, 'Asia');
|
259
|
+
moveFocus('ArrowDown');
|
260
|
+
expect(getCell(view, 'Europe')).toHaveFocus();
|
261
|
+
});
|
262
|
+
});
|
263
|
+
describe('Async DataTable', function () {
|
264
|
+
test('renders a spinner when loading', function () {
|
265
|
+
var testId = 'loadingTable';
|
266
|
+
var defaultProps = {
|
267
|
+
'aria-label': 'Custom table with loading content',
|
268
|
+
width: '100%',
|
269
|
+
height: 565,
|
270
|
+
density: 'spacious',
|
271
|
+
'data-testid': testId
|
272
|
+
};
|
273
|
+
(0, _react2.render)((0, _react3.jsx)(_DataTable["default"], defaultProps, (0, _react3.jsx)(_index.DataTableHeader, {
|
274
|
+
columns: columns
|
275
|
+
}, function (column) {
|
276
|
+
return (0, _react3.jsx)(_index.DataTableColumn, {
|
277
|
+
align: "center"
|
278
|
+
}, column.name);
|
279
|
+
}), (0, _react3.jsx)(_index.DataTableBody, {
|
280
|
+
loadingState: "loading"
|
281
|
+
}, [])));
|
282
|
+
|
283
|
+
var asyncTable = _react2.screen.getByTestId(testId);
|
284
|
+
|
285
|
+
expect(asyncTable).toBeInTheDocument();
|
286
|
+
expect(asyncTable).toBeVisible();
|
287
|
+
expect(asyncTable).toHaveAttribute('aria-label', 'Custom table with loading content');
|
288
|
+
expect(asyncTable).toHaveAttribute('data-testid', testId);
|
289
|
+
var tRows = (0, _react2.within)(asyncTable).getAllByRole('row');
|
290
|
+
expect(tRows).toHaveLength(2);
|
291
|
+
expect(tRows[1]).toHaveAttribute('aria-rowindex', '2');
|
292
|
+
var cell = (0, _react2.within)(tRows[1]).getByRole('rowheader');
|
293
|
+
expect(cell).toHaveAttribute('aria-colspan', '3');
|
294
|
+
var spinner = (0, _react2.within)(cell).getByRole('alert');
|
295
|
+
expect(spinner).toBeInTheDocument();
|
296
|
+
expect(spinner).toBeVisible();
|
297
|
+
expect(spinner).toHaveAttribute('aria-label', 'loading');
|
298
|
+
expect(spinner).toHaveAttribute('aria-live', 'assertive');
|
299
|
+
expect(spinner).not.toHaveAttribute('aria-valuenow');
|
300
|
+
});
|
301
|
+
test('calls onLoadMore when scrolling near the bottom', function () {
|
302
|
+
var testId = 'onLoadMoreTable';
|
303
|
+
var defaultProps = {
|
304
|
+
'aria-label': 'Custom table with onLoadMore',
|
305
|
+
width: '100%',
|
306
|
+
height: 565,
|
307
|
+
density: 'spacious',
|
308
|
+
'data-testid': testId
|
309
|
+
};
|
310
|
+
var items = [];
|
311
|
+
|
312
|
+
for (var i = 1; i <= 100; i += 1) {
|
313
|
+
items.push({
|
314
|
+
id: i,
|
315
|
+
country: "Country ".concat(i),
|
316
|
+
population: "".concat(i),
|
317
|
+
continent: "Continent ".concat(i)
|
318
|
+
});
|
319
|
+
}
|
320
|
+
|
321
|
+
var onLoadMore = jest.fn();
|
322
|
+
(0, _react2.render)((0, _react3.jsx)(_DataTable["default"], defaultProps, (0, _react3.jsx)(_index.DataTableHeader, {
|
323
|
+
columns: columns
|
324
|
+
}, function (column) {
|
325
|
+
return (0, _react3.jsx)(_index.DataTableColumn, {
|
326
|
+
align: "center"
|
327
|
+
}, column.name);
|
328
|
+
}), (0, _react3.jsx)(_index.DataTableBody, {
|
329
|
+
items: items,
|
330
|
+
onLoadMore: onLoadMore
|
331
|
+
}, function (item) {
|
332
|
+
return (0, _react3.jsx)(_index.DataTableRow, null, function (columnKey) {
|
333
|
+
return (0, _react3.jsx)(_index.DataTableCell, null, item[columnKey]);
|
334
|
+
});
|
335
|
+
})));
|
336
|
+
|
337
|
+
var asyncTable = _react2.screen.getByTestId(testId);
|
338
|
+
|
339
|
+
expect(asyncTable).toBeInTheDocument();
|
340
|
+
expect(asyncTable).toBeVisible();
|
341
|
+
expect(asyncTable).toHaveAttribute('aria-label', 'Custom table with onLoadMore');
|
342
|
+
|
343
|
+
var body = _react2.screen.getAllByRole('rowgroup')[1];
|
344
|
+
|
345
|
+
var scrollView = body.parentNode.parentNode;
|
346
|
+
scrollView.scrollTop = 250;
|
347
|
+
|
348
|
+
_react2.fireEvent.scroll(scrollView);
|
349
|
+
|
350
|
+
(0, _react2.act)(function () {
|
351
|
+
jest.runAllTimers();
|
352
|
+
});
|
353
|
+
scrollView.scrollTop = 1500;
|
354
|
+
|
355
|
+
_react2.fireEvent.scroll(scrollView);
|
356
|
+
|
357
|
+
(0, _react2.act)(function () {
|
358
|
+
jest.runAllTimers();
|
359
|
+
});
|
360
|
+
scrollView.scrollTop = 2800;
|
361
|
+
|
362
|
+
_react2.fireEvent.scroll(scrollView);
|
363
|
+
|
364
|
+
(0, _react2.act)(function () {
|
365
|
+
jest.runAllTimers();
|
366
|
+
});
|
367
|
+
expect(onLoadMore).toHaveBeenCalledTimes(2);
|
368
|
+
});
|
369
|
+
test('renders a spinner at the bottom when loading more', function () {
|
370
|
+
var testId = 'loadingMoreTable';
|
371
|
+
var defaultProps = {
|
372
|
+
'aria-label': 'Custom table with loadingMore',
|
373
|
+
width: '100%',
|
374
|
+
height: '100%',
|
375
|
+
density: 'spacious',
|
376
|
+
'data-testid': testId
|
377
|
+
};
|
378
|
+
(0, _react2.render)((0, _react3.jsx)(_DataTable["default"], defaultProps, (0, _react3.jsx)(_index.DataTableHeader, {
|
379
|
+
columns: columns
|
380
|
+
}, function (column) {
|
381
|
+
return (0, _react3.jsx)(_index.DataTableColumn, {
|
382
|
+
align: "center"
|
383
|
+
}, column.name);
|
384
|
+
}), (0, _react3.jsx)(_index.DataTableBody, {
|
385
|
+
items: rows,
|
386
|
+
loadingState: "loadingMore"
|
387
|
+
}, function (item) {
|
388
|
+
return (0, _react3.jsx)(_index.DataTableRow, null, function (columnKey) {
|
389
|
+
return (0, _react3.jsx)(_index.DataTableCell, null, item[columnKey]);
|
390
|
+
});
|
391
|
+
})));
|
392
|
+
|
393
|
+
var asyncTable = _react2.screen.getByTestId(testId);
|
394
|
+
|
395
|
+
expect(asyncTable).toBeInTheDocument();
|
396
|
+
expect(asyncTable).toBeVisible();
|
397
|
+
expect(asyncTable).toHaveAttribute('aria-label', 'Custom table with loadingMore');
|
398
|
+
expect(asyncTable).toHaveAttribute('data-testid', testId);
|
399
|
+
expect(asyncTable).toHaveAttribute('aria-rowcount', '5');
|
400
|
+
expect(asyncTable).toHaveAttribute('aria-colcount', '3');
|
401
|
+
var rowgroups = (0, _react2.within)(asyncTable).getAllByRole('rowgroup');
|
402
|
+
expect(rowgroups).toHaveLength(2);
|
403
|
+
var tRows = (0, _react2.within)(asyncTable).getAllByRole('row');
|
404
|
+
expect(tRows).toHaveLength(6);
|
405
|
+
expect(tRows[5]).toHaveAttribute('aria-rowindex', '6');
|
406
|
+
var cell = (0, _react2.within)(tRows[5]).getByRole('rowheader');
|
407
|
+
expect(cell).toHaveAttribute('aria-colspan', '3');
|
408
|
+
var spinner = (0, _react2.within)(cell).getByRole('alert');
|
409
|
+
expect(spinner).toBeInTheDocument();
|
410
|
+
expect(spinner).toBeVisible();
|
411
|
+
expect(spinner).toHaveAttribute('aria-label', 'loadingMore');
|
412
|
+
expect(spinner).toHaveAttribute('aria-live', 'assertive');
|
413
|
+
expect(spinner).not.toHaveAttribute('aria-valuenow');
|
414
|
+
});
|
415
|
+
});
|
416
|
+
describe('Sortable DataTable', function () {
|
417
|
+
var testId = 'sortableTable';
|
418
|
+
var defaultProps = {
|
419
|
+
'aria-label': 'Custom table with sortable content',
|
420
|
+
width: '100%',
|
421
|
+
height: '100%',
|
422
|
+
density: 'spacious',
|
423
|
+
'data-testid': testId
|
424
|
+
};
|
425
|
+
test('sorting', function () {
|
426
|
+
(0, _react2.render)((0, _react3.jsx)(_DataTable["default"], defaultProps, (0, _react3.jsx)(_index.DataTableHeader, {
|
427
|
+
columns: columns
|
428
|
+
}, function (column) {
|
429
|
+
return (0, _react3.jsx)(_index.DataTableColumn, {
|
430
|
+
align: "center",
|
431
|
+
allowsSorting: true
|
432
|
+
}, column.name);
|
433
|
+
}), (0, _react3.jsx)(_index.DataTableBody, {
|
434
|
+
items: rows
|
435
|
+
}, function (item) {
|
436
|
+
return (0, _react3.jsx)(_index.DataTableRow, null, function (columnKey) {
|
437
|
+
return (0, _react3.jsx)(_index.DataTableCell, null, item[columnKey]);
|
438
|
+
});
|
439
|
+
})));
|
440
|
+
|
441
|
+
var sortableTable = _react2.screen.getByTestId(testId);
|
442
|
+
|
443
|
+
expect(sortableTable).toBeInTheDocument();
|
444
|
+
expect(sortableTable).toBeVisible();
|
445
|
+
expect(sortableTable).toHaveAttribute('aria-label', 'Custom table with sortable content');
|
446
|
+
expect(sortableTable).toHaveAttribute('data-testid', testId);
|
447
|
+
expect(sortableTable).toHaveAttribute('aria-rowcount', '5');
|
448
|
+
expect(sortableTable).toHaveAttribute('aria-colcount', '3');
|
449
|
+
|
450
|
+
var sortableGrid = _react2.screen.getByRole('grid');
|
451
|
+
|
452
|
+
var columnheaders = (0, _react2.within)(sortableGrid).getAllByRole('columnheader');
|
453
|
+
expect(columnheaders).toHaveLength(3);
|
454
|
+
expect(columnheaders[0]).toHaveAttribute('aria-sort', 'none');
|
455
|
+
expect(columnheaders[1]).toHaveAttribute('aria-sort', 'none');
|
456
|
+
expect(columnheaders[2]).toHaveAttribute('aria-sort', 'none');
|
457
|
+
expect(columnheaders[0]).toHaveAttribute('aria-describedby');
|
458
|
+
expect(document.getElementById(columnheaders[0].getAttribute('aria-describedby'))).toHaveTextContent('sortable column');
|
459
|
+
expect(columnheaders[1]).toHaveAttribute('aria-describedby');
|
460
|
+
expect(document.getElementById(columnheaders[1].getAttribute('aria-describedby'))).toHaveTextContent('sortable column');
|
461
|
+
expect(columnheaders[1]).toHaveAttribute('aria-describedby');
|
462
|
+
expect(document.getElementById(columnheaders[1].getAttribute('aria-describedby'))).toHaveTextContent('sortable column');
|
463
|
+
});
|
464
|
+
});
|
465
|
+
describe('Sortable with useAsyncList', function () {
|
466
|
+
var ITEMS = [{
|
467
|
+
id: 1,
|
468
|
+
name: '1'
|
469
|
+
}, {
|
470
|
+
id: 2,
|
471
|
+
name: '2'
|
472
|
+
}];
|
473
|
+
var ITEMS2 = [{
|
474
|
+
id: 2,
|
475
|
+
name: '1'
|
476
|
+
}, {
|
477
|
+
id: 1,
|
478
|
+
name: '2'
|
479
|
+
}];
|
480
|
+
|
481
|
+
function getItems() {
|
482
|
+
return new _promise["default"](function (resolve) {
|
483
|
+
(0, _setTimeout2["default"])(function () {
|
484
|
+
return resolve({
|
485
|
+
items: ITEMS
|
486
|
+
});
|
487
|
+
});
|
488
|
+
});
|
489
|
+
}
|
490
|
+
|
491
|
+
function getItems2() {
|
492
|
+
return new _promise["default"](function (resolve) {
|
493
|
+
(0, _setTimeout2["default"])(function () {
|
494
|
+
return resolve({
|
495
|
+
items: ITEMS2
|
496
|
+
});
|
497
|
+
});
|
498
|
+
});
|
499
|
+
}
|
500
|
+
|
501
|
+
test('should call load function', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
502
|
+
var load, _renderHook, result;
|
503
|
+
|
504
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
505
|
+
while (1) {
|
506
|
+
switch (_context2.prev = _context2.next) {
|
507
|
+
case 0:
|
508
|
+
load = jest.fn().mockImplementation(getItems);
|
509
|
+
_renderHook = (0, _reactHooks.renderHook)(function () {
|
510
|
+
return (0, _data.useAsyncList)({
|
511
|
+
load: load
|
512
|
+
});
|
513
|
+
}), result = _renderHook.result;
|
514
|
+
expect(load).toHaveBeenCalledTimes(1);
|
515
|
+
expect(result.current.items).toEqual([]);
|
516
|
+
_context2.next = 6;
|
517
|
+
return (0, _reactHooks.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
518
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
519
|
+
while (1) {
|
520
|
+
switch (_context.prev = _context.next) {
|
521
|
+
case 0:
|
522
|
+
jest.runAllTimers();
|
523
|
+
|
524
|
+
case 1:
|
525
|
+
case "end":
|
526
|
+
return _context.stop();
|
527
|
+
}
|
528
|
+
}
|
529
|
+
}, _callee);
|
530
|
+
})));
|
531
|
+
|
532
|
+
case 6:
|
533
|
+
expect(result.current.items).toEqual(ITEMS);
|
534
|
+
|
535
|
+
case 7:
|
536
|
+
case "end":
|
537
|
+
return _context2.stop();
|
538
|
+
}
|
539
|
+
}
|
540
|
+
}, _callee2);
|
541
|
+
})));
|
542
|
+
test('should call sort function', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
|
543
|
+
var load, sort, _renderHook2, result, args;
|
544
|
+
|
545
|
+
return _regenerator["default"].wrap(function _callee6$(_context7) {
|
546
|
+
while (1) {
|
547
|
+
switch (_context7.prev = _context7.next) {
|
548
|
+
case 0:
|
549
|
+
load = jest.fn().mockImplementation(getItems);
|
550
|
+
sort = jest.fn().mockImplementation(getItems2);
|
551
|
+
_renderHook2 = (0, _reactHooks.renderHook)(function () {
|
552
|
+
return (0, _data.useAsyncList)({
|
553
|
+
load: load,
|
554
|
+
sort: sort,
|
555
|
+
initialSortDescriptor: {
|
556
|
+
direction: 'ASC'
|
557
|
+
}
|
558
|
+
});
|
559
|
+
}), result = _renderHook2.result;
|
560
|
+
expect(load).toHaveBeenCalledTimes(1);
|
561
|
+
args = load.mock.calls[0][0];
|
562
|
+
expect(args.sortDescriptor).toEqual({
|
563
|
+
direction: 'ASC'
|
564
|
+
});
|
565
|
+
expect(result.current.items).toEqual([]);
|
566
|
+
_context7.next = 9;
|
567
|
+
return (0, _reactHooks.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
568
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
569
|
+
while (1) {
|
570
|
+
switch (_context3.prev = _context3.next) {
|
571
|
+
case 0:
|
572
|
+
jest.runOnlyPendingTimers();
|
573
|
+
|
574
|
+
case 1:
|
575
|
+
case "end":
|
576
|
+
return _context3.stop();
|
577
|
+
}
|
578
|
+
}
|
579
|
+
}, _callee3);
|
580
|
+
})));
|
581
|
+
|
582
|
+
case 9:
|
583
|
+
expect(result.current.items).toEqual(ITEMS);
|
584
|
+
_context7.next = 12;
|
585
|
+
return (0, _reactHooks.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
586
|
+
var _context4;
|
587
|
+
|
588
|
+
return _regenerator["default"].wrap(function _callee4$(_context5) {
|
589
|
+
while (1) {
|
590
|
+
switch (_context5.prev = _context5.next) {
|
591
|
+
case 0:
|
592
|
+
(0, _sort2["default"])(_context4 = result.current).call(_context4, {
|
593
|
+
column: 'name'
|
594
|
+
});
|
595
|
+
|
596
|
+
case 1:
|
597
|
+
case "end":
|
598
|
+
return _context5.stop();
|
599
|
+
}
|
600
|
+
}
|
601
|
+
}, _callee4);
|
602
|
+
})));
|
603
|
+
|
604
|
+
case 12:
|
605
|
+
expect(result.current.items).toEqual(ITEMS);
|
606
|
+
expect(sort).toHaveBeenCalledTimes(1);
|
607
|
+
args = sort.mock.calls[0][0];
|
608
|
+
expect(args.items).toStrictEqual(ITEMS);
|
609
|
+
_context7.next = 18;
|
610
|
+
return (0, _reactHooks.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
|
611
|
+
return _regenerator["default"].wrap(function _callee5$(_context6) {
|
612
|
+
while (1) {
|
613
|
+
switch (_context6.prev = _context6.next) {
|
614
|
+
case 0:
|
615
|
+
jest.runOnlyPendingTimers();
|
616
|
+
|
617
|
+
case 1:
|
618
|
+
case "end":
|
619
|
+
return _context6.stop();
|
620
|
+
}
|
621
|
+
}
|
622
|
+
}, _callee5);
|
623
|
+
})));
|
624
|
+
|
625
|
+
case 18:
|
626
|
+
expect(result.current.items).toEqual(ITEMS2);
|
627
|
+
|
628
|
+
case 19:
|
629
|
+
case "end":
|
630
|
+
return _context7.stop();
|
631
|
+
}
|
632
|
+
}
|
633
|
+
}, _callee6);
|
634
|
+
})));
|
635
|
+
});
|
636
|
+
describe('Sortable DataTable with useAsyncList', function () {
|
637
|
+
var testId = 'sortableTable';
|
638
|
+
var defaultProps = {
|
639
|
+
'aria-label': 'Custom table with sortable content',
|
640
|
+
width: '100%',
|
641
|
+
height: '100%',
|
642
|
+
density: 'spacious',
|
643
|
+
'data-testid': testId
|
644
|
+
};
|
645
|
+
|
646
|
+
function load() {
|
647
|
+
return _load.apply(this, arguments);
|
648
|
+
}
|
649
|
+
|
650
|
+
function _load() {
|
651
|
+
_load = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee15() {
|
652
|
+
return _regenerator["default"].wrap(function _callee15$(_context18) {
|
653
|
+
while (1) {
|
654
|
+
switch (_context18.prev = _context18.next) {
|
655
|
+
case 0:
|
656
|
+
return _context18.abrupt("return", {
|
657
|
+
items: rows
|
658
|
+
});
|
659
|
+
|
660
|
+
case 1:
|
661
|
+
case "end":
|
662
|
+
return _context18.stop();
|
663
|
+
}
|
664
|
+
}
|
665
|
+
}, _callee15);
|
666
|
+
}));
|
667
|
+
return _load.apply(this, arguments);
|
668
|
+
}
|
669
|
+
|
670
|
+
function sort(_x) {
|
671
|
+
return _sort.apply(this, arguments);
|
672
|
+
}
|
673
|
+
|
674
|
+
function _sort() {
|
675
|
+
_sort = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee16(list) {
|
676
|
+
var _context19;
|
677
|
+
|
678
|
+
return _regenerator["default"].wrap(function _callee16$(_context20) {
|
679
|
+
while (1) {
|
680
|
+
switch (_context20.prev = _context20.next) {
|
681
|
+
case 0:
|
682
|
+
// eslint-disable-next-line no-param-reassign
|
683
|
+
list.items = (0, _sort2["default"])(_context19 = list.items).call(_context19, function (a, b) {
|
684
|
+
var first = a[list.sortDescriptor.column];
|
685
|
+
var second = b[list.sortDescriptor.column];
|
686
|
+
var cmp = // eslint-disable-next-line radix
|
687
|
+
((0, _parseInt2["default"])(first) || first) < ((0, _parseInt2["default"])(second) || second) ? -1 : 1;
|
688
|
+
|
689
|
+
if (list.sortDescriptor.direction === 'descending') {
|
690
|
+
cmp *= -1;
|
691
|
+
}
|
692
|
+
|
693
|
+
return cmp;
|
694
|
+
});
|
695
|
+
return _context20.abrupt("return", list);
|
696
|
+
|
697
|
+
case 2:
|
698
|
+
case "end":
|
699
|
+
return _context20.stop();
|
700
|
+
}
|
701
|
+
}
|
702
|
+
}, _callee16);
|
703
|
+
}));
|
704
|
+
return _sort.apply(this, arguments);
|
705
|
+
}
|
706
|
+
|
707
|
+
var sortableDataTable = function sortableDataTable(_ref7) {
|
708
|
+
var result = _ref7.result;
|
709
|
+
return (0, _react2.render)((0, _react3.jsx)(_DataTable["default"], defaultProps, (0, _react3.jsx)(_index.DataTableHeader, {
|
710
|
+
columns: columns
|
711
|
+
}, function (column) {
|
712
|
+
return (0, _react3.jsx)(_index.DataTableColumn, {
|
713
|
+
align: "center",
|
714
|
+
allowsSorting: true
|
715
|
+
}, column.name);
|
716
|
+
}), (0, _react3.jsx)(_index.DataTableBody, {
|
717
|
+
items: result.current.items
|
718
|
+
}, function (item) {
|
719
|
+
return (0, _react3.jsx)(_index.DataTableRow, null, function (columnKey) {
|
720
|
+
return (0, _react3.jsx)(_index.DataTableCell, null, item[columnKey]);
|
721
|
+
});
|
722
|
+
})));
|
723
|
+
};
|
724
|
+
|
725
|
+
test('sort by country column A => Z', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10() {
|
726
|
+
var _renderHook3, result, sortableTable, rowgroups, tRows;
|
727
|
+
|
728
|
+
return _regenerator["default"].wrap(function _callee10$(_context12) {
|
729
|
+
while (1) {
|
730
|
+
switch (_context12.prev = _context12.next) {
|
731
|
+
case 0:
|
732
|
+
_renderHook3 = (0, _reactHooks.renderHook)(function () {
|
733
|
+
return (0, _data.useAsyncList)({
|
734
|
+
load: load,
|
735
|
+
sort: sort,
|
736
|
+
initialSortDescriptor: {
|
737
|
+
column: 'country',
|
738
|
+
direction: 'ascending'
|
739
|
+
}
|
740
|
+
});
|
741
|
+
}), result = _renderHook3.result;
|
742
|
+
_context12.next = 3;
|
743
|
+
return (0, _reactHooks.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
|
744
|
+
return _regenerator["default"].wrap(function _callee7$(_context8) {
|
745
|
+
while (1) {
|
746
|
+
switch (_context8.prev = _context8.next) {
|
747
|
+
case 0:
|
748
|
+
jest.runOnlyPendingTimers();
|
749
|
+
|
750
|
+
case 1:
|
751
|
+
case "end":
|
752
|
+
return _context8.stop();
|
753
|
+
}
|
754
|
+
}
|
755
|
+
}, _callee7);
|
756
|
+
})));
|
757
|
+
|
758
|
+
case 3:
|
759
|
+
_context12.next = 5;
|
760
|
+
return (0, _reactHooks.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
|
761
|
+
var _context9;
|
762
|
+
|
763
|
+
return _regenerator["default"].wrap(function _callee8$(_context10) {
|
764
|
+
while (1) {
|
765
|
+
switch (_context10.prev = _context10.next) {
|
766
|
+
case 0:
|
767
|
+
(0, _sort2["default"])(_context9 = result.current).call(_context9);
|
768
|
+
|
769
|
+
case 1:
|
770
|
+
case "end":
|
771
|
+
return _context10.stop();
|
772
|
+
}
|
773
|
+
}
|
774
|
+
}, _callee8);
|
775
|
+
})));
|
776
|
+
|
777
|
+
case 5:
|
778
|
+
_context12.next = 7;
|
779
|
+
return (0, _reactHooks.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9() {
|
780
|
+
return _regenerator["default"].wrap(function _callee9$(_context11) {
|
781
|
+
while (1) {
|
782
|
+
switch (_context11.prev = _context11.next) {
|
783
|
+
case 0:
|
784
|
+
jest.runOnlyPendingTimers();
|
785
|
+
|
786
|
+
case 1:
|
787
|
+
case "end":
|
788
|
+
return _context11.stop();
|
789
|
+
}
|
790
|
+
}
|
791
|
+
}, _callee9);
|
792
|
+
})));
|
793
|
+
|
794
|
+
case 7:
|
795
|
+
sortableDataTable({
|
796
|
+
result: result
|
797
|
+
});
|
798
|
+
sortableTable = _react2.screen.getByTestId(testId);
|
799
|
+
expect(sortableTable).toBeInTheDocument();
|
800
|
+
expect(sortableTable).toBeVisible();
|
801
|
+
expect(sortableTable).toHaveAttribute('aria-label', 'Custom table with sortable content');
|
802
|
+
expect(sortableTable).toHaveAttribute('data-testid', testId);
|
803
|
+
expect(sortableTable).toHaveAttribute('aria-rowcount', '5');
|
804
|
+
expect(sortableTable).toHaveAttribute('aria-colcount', '3');
|
805
|
+
rowgroups = (0, _react2.within)(sortableTable).getAllByRole('rowgroup');
|
806
|
+
tRows = (0, _react2.within)(rowgroups[1]).getAllByRole('row'); // verify country column is sorted a -> z
|
807
|
+
|
808
|
+
expect(tRows).toHaveLength(4);
|
809
|
+
expect(tRows[0]).toHaveAttribute('aria-rowindex', '2');
|
810
|
+
expect(tRows[0]).toHaveTextContent('Canada');
|
811
|
+
expect(tRows[1]).toHaveAttribute('aria-rowindex', '3');
|
812
|
+
expect(tRows[1]).toHaveTextContent('China');
|
813
|
+
expect(tRows[2]).toHaveAttribute('aria-rowindex', '4');
|
814
|
+
expect(tRows[2]).toHaveTextContent('France');
|
815
|
+
expect(tRows[3]).toHaveAttribute('aria-rowindex', '5');
|
816
|
+
expect(tRows[3]).toHaveTextContent('USA');
|
817
|
+
|
818
|
+
case 26:
|
819
|
+
case "end":
|
820
|
+
return _context12.stop();
|
821
|
+
}
|
822
|
+
}
|
823
|
+
}, _callee10);
|
824
|
+
})));
|
825
|
+
test('sort by country column Z => A', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee14() {
|
826
|
+
var _renderHook4, result, sortableTable, rowgroups, tRows;
|
827
|
+
|
828
|
+
return _regenerator["default"].wrap(function _callee14$(_context17) {
|
829
|
+
while (1) {
|
830
|
+
switch (_context17.prev = _context17.next) {
|
831
|
+
case 0:
|
832
|
+
_renderHook4 = (0, _reactHooks.renderHook)(function () {
|
833
|
+
return (0, _data.useAsyncList)({
|
834
|
+
load: load,
|
835
|
+
sort: sort,
|
836
|
+
initialSortDescriptor: {
|
837
|
+
column: 'country',
|
838
|
+
direction: 'descending'
|
839
|
+
}
|
840
|
+
});
|
841
|
+
}), result = _renderHook4.result;
|
842
|
+
_context17.next = 3;
|
843
|
+
return (0, _reactHooks.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11() {
|
844
|
+
return _regenerator["default"].wrap(function _callee11$(_context13) {
|
845
|
+
while (1) {
|
846
|
+
switch (_context13.prev = _context13.next) {
|
847
|
+
case 0:
|
848
|
+
jest.runOnlyPendingTimers();
|
849
|
+
|
850
|
+
case 1:
|
851
|
+
case "end":
|
852
|
+
return _context13.stop();
|
853
|
+
}
|
854
|
+
}
|
855
|
+
}, _callee11);
|
856
|
+
})));
|
857
|
+
|
858
|
+
case 3:
|
859
|
+
_context17.next = 5;
|
860
|
+
return (0, _reactHooks.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12() {
|
861
|
+
var _context14;
|
862
|
+
|
863
|
+
return _regenerator["default"].wrap(function _callee12$(_context15) {
|
864
|
+
while (1) {
|
865
|
+
switch (_context15.prev = _context15.next) {
|
866
|
+
case 0:
|
867
|
+
(0, _sort2["default"])(_context14 = result.current).call(_context14);
|
868
|
+
|
869
|
+
case 1:
|
870
|
+
case "end":
|
871
|
+
return _context15.stop();
|
872
|
+
}
|
873
|
+
}
|
874
|
+
}, _callee12);
|
875
|
+
})));
|
876
|
+
|
877
|
+
case 5:
|
878
|
+
_context17.next = 7;
|
879
|
+
return (0, _reactHooks.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee13() {
|
880
|
+
return _regenerator["default"].wrap(function _callee13$(_context16) {
|
881
|
+
while (1) {
|
882
|
+
switch (_context16.prev = _context16.next) {
|
883
|
+
case 0:
|
884
|
+
jest.runOnlyPendingTimers();
|
885
|
+
|
886
|
+
case 1:
|
887
|
+
case "end":
|
888
|
+
return _context16.stop();
|
889
|
+
}
|
890
|
+
}
|
891
|
+
}, _callee13);
|
892
|
+
})));
|
893
|
+
|
894
|
+
case 7:
|
895
|
+
sortableDataTable({
|
896
|
+
result: result
|
897
|
+
});
|
898
|
+
sortableTable = _react2.screen.getByTestId(testId);
|
899
|
+
expect(sortableTable).toBeInTheDocument();
|
900
|
+
expect(sortableTable).toBeVisible();
|
901
|
+
expect(sortableTable).toHaveAttribute('aria-label', 'Custom table with sortable content');
|
902
|
+
expect(sortableTable).toHaveAttribute('data-testid', testId);
|
903
|
+
expect(sortableTable).toHaveAttribute('aria-rowcount', '5');
|
904
|
+
expect(sortableTable).toHaveAttribute('aria-colcount', '3');
|
905
|
+
rowgroups = (0, _react2.within)(sortableTable).getAllByRole('rowgroup');
|
906
|
+
tRows = (0, _react2.within)(rowgroups[1]).getAllByRole('row'); // verify country column is sorted z -> a
|
907
|
+
|
908
|
+
expect(tRows).toHaveLength(4);
|
909
|
+
expect(tRows[0]).toHaveAttribute('aria-rowindex', '2');
|
910
|
+
expect(tRows[0]).toHaveTextContent('USA');
|
911
|
+
expect(tRows[1]).toHaveAttribute('aria-rowindex', '3');
|
912
|
+
expect(tRows[1]).toHaveTextContent('France');
|
913
|
+
expect(tRows[2]).toHaveAttribute('aria-rowindex', '4');
|
914
|
+
expect(tRows[2]).toHaveTextContent('China');
|
915
|
+
expect(tRows[3]).toHaveAttribute('aria-rowindex', '5');
|
916
|
+
expect(tRows[3]).toHaveTextContent('Canada');
|
917
|
+
|
918
|
+
case 26:
|
919
|
+
case "end":
|
920
|
+
return _context17.stop();
|
921
|
+
}
|
922
|
+
}
|
923
|
+
}, _callee14);
|
924
|
+
})));
|
925
|
+
});
|
926
|
+
describe('Sortable DataTable with useAsyncList', function () {
|
927
|
+
var testId = 'sortableTable';
|
928
|
+
var defaultProps = {
|
929
|
+
'aria-label': 'Custom table with sortable content',
|
930
|
+
width: '100%',
|
931
|
+
height: '100%',
|
932
|
+
density: 'spacious',
|
933
|
+
'data-testid': testId
|
934
|
+
};
|
935
|
+
|
936
|
+
var sortableDataTable = function sortableDataTable(_ref16) {
|
937
|
+
var result = _ref16.result;
|
938
|
+
return (0, _react2.render)((0, _react3.jsx)(_DataTable["default"], (0, _extends2["default"])({}, defaultProps, {
|
939
|
+
sortDescriptor: result.current.sortDescriptor,
|
940
|
+
onSortChange: (0, _sort2["default"])(result.current)
|
941
|
+
}), (0, _react3.jsx)(_index.DataTableHeader, {
|
942
|
+
columns: columns
|
943
|
+
}, function (column) {
|
944
|
+
return (0, _react3.jsx)(_index.DataTableColumn, {
|
945
|
+
align: "center",
|
946
|
+
allowsSorting: true
|
947
|
+
}, column.name);
|
948
|
+
}), (0, _react3.jsx)(_index.DataTableBody, {
|
949
|
+
items: result.current.items
|
950
|
+
}, function (item) {
|
951
|
+
return (0, _react3.jsx)(_index.DataTableRow, null, function (columnKey) {
|
952
|
+
return (0, _react3.jsx)(_index.DataTableCell, null, item[columnKey]);
|
953
|
+
});
|
954
|
+
})));
|
955
|
+
};
|
956
|
+
|
957
|
+
test('click on column header should sort column A => Z', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee24() {
|
958
|
+
var _renderHook5, result, sortableTable, headers;
|
959
|
+
|
960
|
+
return _regenerator["default"].wrap(function _callee24$(_context28) {
|
961
|
+
while (1) {
|
962
|
+
switch (_context28.prev = _context28.next) {
|
963
|
+
case 0:
|
964
|
+
_renderHook5 = (0, _reactHooks.renderHook)(function () {
|
965
|
+
return (0, _data.useAsyncList)({
|
966
|
+
load: function load() {
|
967
|
+
return (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee17() {
|
968
|
+
return _regenerator["default"].wrap(function _callee17$(_context21) {
|
969
|
+
while (1) {
|
970
|
+
switch (_context21.prev = _context21.next) {
|
971
|
+
case 0:
|
972
|
+
return _context21.abrupt("return", {
|
973
|
+
items: rows
|
974
|
+
});
|
975
|
+
|
976
|
+
case 1:
|
977
|
+
case "end":
|
978
|
+
return _context21.stop();
|
979
|
+
}
|
980
|
+
}
|
981
|
+
}, _callee17);
|
982
|
+
}))();
|
983
|
+
},
|
984
|
+
sort: function sort(_ref18) {
|
985
|
+
return (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee18() {
|
986
|
+
var items, sortDescriptor;
|
987
|
+
return _regenerator["default"].wrap(function _callee18$(_context22) {
|
988
|
+
while (1) {
|
989
|
+
switch (_context22.prev = _context22.next) {
|
990
|
+
case 0:
|
991
|
+
items = _ref18.items, sortDescriptor = _ref18.sortDescriptor;
|
992
|
+
return _context22.abrupt("return", {
|
993
|
+
items: (0, _sort2["default"])(items).call(items, function (a, b) {
|
994
|
+
var first = a[sortDescriptor.column];
|
995
|
+
var second = b[sortDescriptor.column]; // eslint-disable-next-line radix
|
996
|
+
|
997
|
+
// eslint-disable-next-line radix
|
998
|
+
var cmp = ((0, _parseInt2["default"])(first) || first) < ((0, _parseInt2["default"])(second) || second) ? -1 : 1;
|
999
|
+
|
1000
|
+
if (sortDescriptor.direction === 'descending') {
|
1001
|
+
cmp *= -1;
|
1002
|
+
}
|
1003
|
+
|
1004
|
+
return cmp;
|
1005
|
+
})
|
1006
|
+
});
|
1007
|
+
|
1008
|
+
case 2:
|
1009
|
+
case "end":
|
1010
|
+
return _context22.stop();
|
1011
|
+
}
|
1012
|
+
}
|
1013
|
+
}, _callee18);
|
1014
|
+
}))();
|
1015
|
+
},
|
1016
|
+
initialSortDescriptor: {
|
1017
|
+
column: 'country',
|
1018
|
+
direction: 'descending'
|
1019
|
+
}
|
1020
|
+
});
|
1021
|
+
}), result = _renderHook5.result;
|
1022
|
+
_context28.next = 3;
|
1023
|
+
return (0, _reactHooks.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee19() {
|
1024
|
+
return _regenerator["default"].wrap(function _callee19$(_context23) {
|
1025
|
+
while (1) {
|
1026
|
+
switch (_context23.prev = _context23.next) {
|
1027
|
+
case 0:
|
1028
|
+
jest.runOnlyPendingTimers();
|
1029
|
+
|
1030
|
+
case 1:
|
1031
|
+
case "end":
|
1032
|
+
return _context23.stop();
|
1033
|
+
}
|
1034
|
+
}
|
1035
|
+
}, _callee19);
|
1036
|
+
})));
|
1037
|
+
|
1038
|
+
case 3:
|
1039
|
+
sortableDataTable({
|
1040
|
+
result: result
|
1041
|
+
});
|
1042
|
+
_context28.next = 6;
|
1043
|
+
return (0, _reactHooks.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee20() {
|
1044
|
+
return _regenerator["default"].wrap(function _callee20$(_context24) {
|
1045
|
+
while (1) {
|
1046
|
+
switch (_context24.prev = _context24.next) {
|
1047
|
+
case 0:
|
1048
|
+
jest.runOnlyPendingTimers();
|
1049
|
+
|
1050
|
+
case 1:
|
1051
|
+
case "end":
|
1052
|
+
return _context24.stop();
|
1053
|
+
}
|
1054
|
+
}
|
1055
|
+
}, _callee20);
|
1056
|
+
})));
|
1057
|
+
|
1058
|
+
case 6:
|
1059
|
+
sortableTable = _react2.screen.getByTestId(testId);
|
1060
|
+
expect(sortableTable).toBeInTheDocument();
|
1061
|
+
expect(sortableTable).toBeVisible();
|
1062
|
+
headers = (0, _react2.within)(sortableTable).getAllByRole('columnheader');
|
1063
|
+
expect(headers).toHaveLength(3);
|
1064
|
+
expect(headers[0]).toHaveAttribute('aria-colindex', '1');
|
1065
|
+
expect(headers[1]).toHaveAttribute('aria-colindex', '2');
|
1066
|
+
expect(headers[2]).toHaveAttribute('aria-colindex', '3');
|
1067
|
+
expect(headers[0]).toHaveTextContent(columns[0].name);
|
1068
|
+
expect(headers[1]).toHaveTextContent(columns[1].name);
|
1069
|
+
expect(headers[2]).toHaveTextContent(columns[2].name);
|
1070
|
+
expect(result.current.items[0].country).toBe('USA');
|
1071
|
+
expect(result.current.items[1].country).toBe('Canada');
|
1072
|
+
expect(result.current.items[2].country).toBe('China');
|
1073
|
+
expect(result.current.items[3].country).toBe('France');
|
1074
|
+
expect(result.current.items[0].population).toBe(320000000);
|
1075
|
+
expect(result.current.items[1].population).toBe(37000000);
|
1076
|
+
expect(result.current.items[2].population).toBe(1398000000);
|
1077
|
+
expect(result.current.items[3].population).toBe(67000000);
|
1078
|
+
expect(result.current.items[0].continent).toBe('North America');
|
1079
|
+
expect(result.current.items[1].continent).toBe('North America');
|
1080
|
+
expect(result.current.items[2].continent).toBe('Asia');
|
1081
|
+
expect(result.current.items[3].continent).toBe('Europe');
|
1082
|
+
_context28.next = 31;
|
1083
|
+
return (0, _reactHooks.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee21() {
|
1084
|
+
return _regenerator["default"].wrap(function _callee21$(_context25) {
|
1085
|
+
while (1) {
|
1086
|
+
switch (_context25.prev = _context25.next) {
|
1087
|
+
case 0:
|
1088
|
+
_react2.fireEvent.click(headers[0]);
|
1089
|
+
|
1090
|
+
case 1:
|
1091
|
+
case "end":
|
1092
|
+
return _context25.stop();
|
1093
|
+
}
|
1094
|
+
}
|
1095
|
+
}, _callee21);
|
1096
|
+
})));
|
1097
|
+
|
1098
|
+
case 31:
|
1099
|
+
expect(result.current.items[0].country).toBe('Canada');
|
1100
|
+
expect(result.current.items[1].country).toBe('China');
|
1101
|
+
expect(result.current.items[2].country).toBe('France');
|
1102
|
+
expect(result.current.items[3].country).toBe('USA');
|
1103
|
+
_context28.next = 37;
|
1104
|
+
return (0, _reactHooks.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee22() {
|
1105
|
+
return _regenerator["default"].wrap(function _callee22$(_context26) {
|
1106
|
+
while (1) {
|
1107
|
+
switch (_context26.prev = _context26.next) {
|
1108
|
+
case 0:
|
1109
|
+
_react2.fireEvent.click(headers[1]);
|
1110
|
+
|
1111
|
+
case 1:
|
1112
|
+
case "end":
|
1113
|
+
return _context26.stop();
|
1114
|
+
}
|
1115
|
+
}
|
1116
|
+
}, _callee22);
|
1117
|
+
})));
|
1118
|
+
|
1119
|
+
case 37:
|
1120
|
+
expect(result.current.items[0].population).toBe(37000000);
|
1121
|
+
expect(result.current.items[1].population).toBe(67000000);
|
1122
|
+
expect(result.current.items[2].population).toBe(320000000);
|
1123
|
+
expect(result.current.items[3].population).toBe(1398000000);
|
1124
|
+
_context28.next = 43;
|
1125
|
+
return (0, _reactHooks.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee23() {
|
1126
|
+
return _regenerator["default"].wrap(function _callee23$(_context27) {
|
1127
|
+
while (1) {
|
1128
|
+
switch (_context27.prev = _context27.next) {
|
1129
|
+
case 0:
|
1130
|
+
_react2.fireEvent.click(headers[2]);
|
1131
|
+
|
1132
|
+
case 1:
|
1133
|
+
case "end":
|
1134
|
+
return _context27.stop();
|
1135
|
+
}
|
1136
|
+
}
|
1137
|
+
}, _callee23);
|
1138
|
+
})));
|
1139
|
+
|
1140
|
+
case 43:
|
1141
|
+
expect(result.current.items[0].continent).toBe('Asia');
|
1142
|
+
expect(result.current.items[1].continent).toBe('Europe');
|
1143
|
+
expect(result.current.items[2].continent).toBe('North America');
|
1144
|
+
expect(result.current.items[3].continent).toBe('North America');
|
1145
|
+
|
1146
|
+
case 47:
|
1147
|
+
case "end":
|
1148
|
+
return _context28.stop();
|
1149
|
+
}
|
1150
|
+
}
|
1151
|
+
}, _callee24);
|
1152
|
+
})));
|
1153
|
+
test('click on column header should sort column Z => A', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee30() {
|
1154
|
+
var _renderHook6, result, sortableTable, headers;
|
1155
|
+
|
1156
|
+
return _regenerator["default"].wrap(function _callee30$(_context34) {
|
1157
|
+
while (1) {
|
1158
|
+
switch (_context34.prev = _context34.next) {
|
1159
|
+
case 0:
|
1160
|
+
_renderHook6 = (0, _reactHooks.renderHook)(function () {
|
1161
|
+
return (0, _data.useAsyncList)({
|
1162
|
+
load: function load() {
|
1163
|
+
return (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee25() {
|
1164
|
+
return _regenerator["default"].wrap(function _callee25$(_context29) {
|
1165
|
+
while (1) {
|
1166
|
+
switch (_context29.prev = _context29.next) {
|
1167
|
+
case 0:
|
1168
|
+
return _context29.abrupt("return", {
|
1169
|
+
items: rows
|
1170
|
+
});
|
1171
|
+
|
1172
|
+
case 1:
|
1173
|
+
case "end":
|
1174
|
+
return _context29.stop();
|
1175
|
+
}
|
1176
|
+
}
|
1177
|
+
}, _callee25);
|
1178
|
+
}))();
|
1179
|
+
},
|
1180
|
+
sort: function sort(_ref25) {
|
1181
|
+
return (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee26() {
|
1182
|
+
var items, sortDescriptor;
|
1183
|
+
return _regenerator["default"].wrap(function _callee26$(_context30) {
|
1184
|
+
while (1) {
|
1185
|
+
switch (_context30.prev = _context30.next) {
|
1186
|
+
case 0:
|
1187
|
+
items = _ref25.items, sortDescriptor = _ref25.sortDescriptor;
|
1188
|
+
return _context30.abrupt("return", {
|
1189
|
+
items: (0, _sort2["default"])(items).call(items, function (a, b) {
|
1190
|
+
var first = a[sortDescriptor.column];
|
1191
|
+
var second = b[sortDescriptor.column]; // eslint-disable-next-line radix
|
1192
|
+
|
1193
|
+
// eslint-disable-next-line radix
|
1194
|
+
var cmp = ((0, _parseInt2["default"])(first) || first) < ((0, _parseInt2["default"])(second) || second) ? -1 : 1;
|
1195
|
+
|
1196
|
+
if (sortDescriptor.direction === 'descending') {
|
1197
|
+
cmp *= -1;
|
1198
|
+
}
|
1199
|
+
|
1200
|
+
return cmp;
|
1201
|
+
})
|
1202
|
+
});
|
1203
|
+
|
1204
|
+
case 2:
|
1205
|
+
case "end":
|
1206
|
+
return _context30.stop();
|
1207
|
+
}
|
1208
|
+
}
|
1209
|
+
}, _callee26);
|
1210
|
+
}))();
|
1211
|
+
},
|
1212
|
+
initialSortDescriptor: {
|
1213
|
+
column: 'country',
|
1214
|
+
direction: 'ascending'
|
1215
|
+
}
|
1216
|
+
});
|
1217
|
+
}), result = _renderHook6.result;
|
1218
|
+
_context34.next = 3;
|
1219
|
+
return (0, _reactHooks.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee27() {
|
1220
|
+
return _regenerator["default"].wrap(function _callee27$(_context31) {
|
1221
|
+
while (1) {
|
1222
|
+
switch (_context31.prev = _context31.next) {
|
1223
|
+
case 0:
|
1224
|
+
jest.runOnlyPendingTimers();
|
1225
|
+
|
1226
|
+
case 1:
|
1227
|
+
case "end":
|
1228
|
+
return _context31.stop();
|
1229
|
+
}
|
1230
|
+
}
|
1231
|
+
}, _callee27);
|
1232
|
+
})));
|
1233
|
+
|
1234
|
+
case 3:
|
1235
|
+
sortableDataTable({
|
1236
|
+
result: result
|
1237
|
+
});
|
1238
|
+
_context34.next = 6;
|
1239
|
+
return (0, _reactHooks.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee28() {
|
1240
|
+
return _regenerator["default"].wrap(function _callee28$(_context32) {
|
1241
|
+
while (1) {
|
1242
|
+
switch (_context32.prev = _context32.next) {
|
1243
|
+
case 0:
|
1244
|
+
jest.runOnlyPendingTimers();
|
1245
|
+
|
1246
|
+
case 1:
|
1247
|
+
case "end":
|
1248
|
+
return _context32.stop();
|
1249
|
+
}
|
1250
|
+
}
|
1251
|
+
}, _callee28);
|
1252
|
+
})));
|
1253
|
+
|
1254
|
+
case 6:
|
1255
|
+
sortableTable = _react2.screen.getByTestId(testId);
|
1256
|
+
expect(sortableTable).toBeInTheDocument();
|
1257
|
+
expect(sortableTable).toBeVisible();
|
1258
|
+
headers = (0, _react2.within)(sortableTable).getAllByRole('columnheader');
|
1259
|
+
expect(headers).toHaveLength(3);
|
1260
|
+
expect(headers[0]).toHaveAttribute('aria-colindex', '1');
|
1261
|
+
expect(headers[1]).toHaveAttribute('aria-colindex', '2');
|
1262
|
+
expect(headers[2]).toHaveAttribute('aria-colindex', '3');
|
1263
|
+
expect(headers[0]).toHaveTextContent(columns[0].name);
|
1264
|
+
expect(headers[1]).toHaveTextContent(columns[1].name);
|
1265
|
+
expect(headers[2]).toHaveTextContent(columns[2].name);
|
1266
|
+
expect(result.current.items[0].country).toBe('USA');
|
1267
|
+
expect(result.current.items[1].country).toBe('Canada');
|
1268
|
+
expect(result.current.items[2].country).toBe('China');
|
1269
|
+
expect(result.current.items[3].country).toBe('France');
|
1270
|
+
expect(result.current.items[0].population).toBe(320000000);
|
1271
|
+
expect(result.current.items[1].population).toBe(37000000);
|
1272
|
+
expect(result.current.items[2].population).toBe(1398000000);
|
1273
|
+
expect(result.current.items[3].population).toBe(67000000);
|
1274
|
+
expect(result.current.items[0].continent).toBe('North America');
|
1275
|
+
expect(result.current.items[1].continent).toBe('North America');
|
1276
|
+
expect(result.current.items[2].continent).toBe('Asia');
|
1277
|
+
expect(result.current.items[3].continent).toBe('Europe');
|
1278
|
+
_context34.next = 31;
|
1279
|
+
return (0, _reactHooks.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee29() {
|
1280
|
+
return _regenerator["default"].wrap(function _callee29$(_context33) {
|
1281
|
+
while (1) {
|
1282
|
+
switch (_context33.prev = _context33.next) {
|
1283
|
+
case 0:
|
1284
|
+
_react2.fireEvent.click(headers[0]);
|
1285
|
+
|
1286
|
+
case 1:
|
1287
|
+
case "end":
|
1288
|
+
return _context33.stop();
|
1289
|
+
}
|
1290
|
+
}
|
1291
|
+
}, _callee29);
|
1292
|
+
})));
|
1293
|
+
|
1294
|
+
case 31:
|
1295
|
+
expect(result.current.items[0].country).toBe('USA');
|
1296
|
+
expect(result.current.items[1].country).toBe('France');
|
1297
|
+
expect(result.current.items[2].country).toBe('China');
|
1298
|
+
expect(result.current.items[3].country).toBe('Canada');
|
1299
|
+
|
1300
|
+
case 35:
|
1301
|
+
case "end":
|
1302
|
+
return _context34.stop();
|
1303
|
+
}
|
1304
|
+
}
|
1305
|
+
}, _callee30);
|
1306
|
+
})));
|
1307
|
+
});
|