@pie-lib/config-ui 13.0.13 → 13.1.0-beta.1
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/CHANGELOG.md +0 -42
- package/lib/__tests__/alert-dialog.test.js +262 -0
- package/lib/__tests__/alert-dialog.test.js.map +1 -0
- package/lib/__tests__/checkbox.test.js +227 -0
- package/lib/__tests__/checkbox.test.js.map +1 -0
- package/lib/__tests__/choice-utils.test.js +14 -0
- package/lib/__tests__/choice-utils.test.js.map +1 -0
- package/lib/__tests__/form-section.test.js +252 -0
- package/lib/__tests__/form-section.test.js.map +1 -0
- package/lib/__tests__/help.test.js +270 -0
- package/lib/__tests__/help.test.js.map +1 -0
- package/lib/__tests__/input.test.js +268 -0
- package/lib/__tests__/input.test.js.map +1 -0
- package/lib/__tests__/langs.test.js +541 -0
- package/lib/__tests__/langs.test.js.map +1 -0
- package/lib/__tests__/number-text-field-custom.test.js +362 -0
- package/lib/__tests__/number-text-field-custom.test.js.map +1 -0
- package/lib/__tests__/number-text-field.test.js +421 -0
- package/lib/__tests__/number-text-field.test.js.map +1 -0
- package/lib/__tests__/radio-with-label.test.js +233 -0
- package/lib/__tests__/radio-with-label.test.js.map +1 -0
- package/lib/__tests__/settings-panel.test.js +184 -0
- package/lib/__tests__/settings-panel.test.js.map +1 -0
- package/lib/__tests__/settings.test.js +653 -0
- package/lib/__tests__/settings.test.js.map +1 -0
- package/lib/__tests__/tabs.test.js +211 -0
- package/lib/__tests__/tabs.test.js.map +1 -0
- package/lib/__tests__/two-choice.test.js +124 -0
- package/lib/__tests__/two-choice.test.js.map +1 -0
- package/lib/__tests__/with-stateful-model.test.js +221 -0
- package/lib/__tests__/with-stateful-model.test.js.map +1 -0
- package/lib/choice-configuration/__tests__/feedback-menu.test.js +287 -0
- package/lib/choice-configuration/__tests__/feedback-menu.test.js.map +1 -0
- package/lib/choice-configuration/__tests__/index.test.js +253 -0
- package/lib/choice-configuration/__tests__/index.test.js.map +1 -0
- package/lib/feedback-config/__tests__/feedback-config.test.js +201 -0
- package/lib/feedback-config/__tests__/feedback-config.test.js.map +1 -0
- package/lib/feedback-config/__tests__/feedback-selector.test.js +177 -0
- package/lib/feedback-config/__tests__/feedback-selector.test.js.map +1 -0
- package/lib/layout/__tests__/config.layout.test.js +70 -0
- package/lib/layout/__tests__/config.layout.test.js.map +1 -0
- package/lib/layout/__tests__/layout-content.test.js +6 -0
- package/lib/layout/__tests__/layout-content.test.js.map +1 -0
- package/lib/tags-input/__tests__/index.test.js +183 -0
- package/lib/tags-input/__tests__/index.test.js.map +1 -0
- package/package.json +5 -5
- package/LICENSE.md +0 -5
package/CHANGELOG.md
CHANGED
|
@@ -3,48 +3,6 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
## [13.0.13](https://github.com/pie-framework/pie-lib/compare/@pie-lib/config-ui@13.0.12...@pie-lib/config-ui@13.0.13) (2026-07-31)
|
|
7
|
-
|
|
8
|
-
**Note:** Version bump only for package @pie-lib/config-ui
|
|
9
|
-
|
|
10
|
-
## [13.0.12](https://github.com/pie-framework/pie-lib/compare/@pie-lib/config-ui@13.0.11...@pie-lib/config-ui@13.0.12) (2026-07-08)
|
|
11
|
-
|
|
12
|
-
**Note:** Version bump only for package @pie-lib/config-ui
|
|
13
|
-
|
|
14
|
-
## [13.0.11](https://github.com/pie-framework/pie-lib/compare/@pie-lib/config-ui@13.0.10...@pie-lib/config-ui@13.0.11) (2026-07-01)
|
|
15
|
-
|
|
16
|
-
**Note:** Version bump only for package @pie-lib/config-ui
|
|
17
|
-
|
|
18
|
-
## [13.0.10](https://github.com/pie-framework/pie-lib/compare/@pie-lib/config-ui@13.0.9...@pie-lib/config-ui@13.0.10) (2026-06-25)
|
|
19
|
-
|
|
20
|
-
**Note:** Version bump only for package @pie-lib/config-ui
|
|
21
|
-
|
|
22
|
-
## [13.0.9](https://github.com/pie-framework/pie-lib/compare/@pie-lib/config-ui@13.0.8...@pie-lib/config-ui@13.0.9) (2026-06-19)
|
|
23
|
-
|
|
24
|
-
**Note:** Version bump only for package @pie-lib/config-ui
|
|
25
|
-
|
|
26
|
-
## [13.0.8](https://github.com/pie-framework/pie-lib/compare/@pie-lib/config-ui@13.0.7...@pie-lib/config-ui@13.0.8) (2026-06-17)
|
|
27
|
-
|
|
28
|
-
**Note:** Version bump only for package @pie-lib/config-ui
|
|
29
|
-
|
|
30
|
-
## [13.0.7](https://github.com/pie-framework/pie-lib/compare/@pie-lib/config-ui@13.0.6...@pie-lib/config-ui@13.0.7) (2026-06-12)
|
|
31
|
-
|
|
32
|
-
### Bug Fixes
|
|
33
|
-
|
|
34
|
-
- correct @emotion/style typo to @emotion/styled in package deps PIE-678 ([d529ac7](https://github.com/pie-framework/pie-lib/commit/d529ac7bc3dfa94d8037688452d4c70c66f2590b))
|
|
35
|
-
|
|
36
|
-
## [13.0.6](https://github.com/pie-framework/pie-lib/compare/@pie-lib/config-ui@13.0.5...@pie-lib/config-ui@13.0.6) (2026-06-03)
|
|
37
|
-
|
|
38
|
-
**Note:** Version bump only for package @pie-lib/config-ui
|
|
39
|
-
|
|
40
|
-
## [13.0.5](https://github.com/pie-framework/pie-lib/compare/@pie-lib/config-ui@13.0.4...@pie-lib/config-ui@13.0.5) (2026-06-01)
|
|
41
|
-
|
|
42
|
-
**Note:** Version bump only for package @pie-lib/config-ui
|
|
43
|
-
|
|
44
|
-
## [13.0.4](https://github.com/pie-framework/pie-lib/compare/@pie-lib/config-ui@13.0.3...@pie-lib/config-ui@13.0.4) (2026-05-21)
|
|
45
|
-
|
|
46
|
-
**Note:** Version bump only for package @pie-lib/config-ui
|
|
47
|
-
|
|
48
6
|
## [13.0.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/config-ui@13.0.2...@pie-lib/config-ui@13.0.3) (2026-05-15)
|
|
49
7
|
|
|
50
8
|
**Note:** Version bump only for package @pie-lib/config-ui
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
5
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
6
|
+
var _react = _interopRequireDefault(require("react"));
|
|
7
|
+
var _react2 = require("@testing-library/react");
|
|
8
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
9
|
+
var _alertDialog = _interopRequireDefault(require("../alert-dialog"));
|
|
10
|
+
describe('AlertDialog Component', function () {
|
|
11
|
+
var onClose = jest.fn();
|
|
12
|
+
var onConfirm = jest.fn();
|
|
13
|
+
beforeEach(function () {
|
|
14
|
+
onClose.mockClear();
|
|
15
|
+
onConfirm.mockClear();
|
|
16
|
+
});
|
|
17
|
+
describe('Rendering when open', function () {
|
|
18
|
+
it('should render dialog when open is true', function () {
|
|
19
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_alertDialog["default"], {
|
|
20
|
+
open: true,
|
|
21
|
+
title: "Confirm",
|
|
22
|
+
text: "Are you sure?",
|
|
23
|
+
onClose: onClose,
|
|
24
|
+
onConfirm: onConfirm
|
|
25
|
+
}));
|
|
26
|
+
expect(_react2.screen.getByText('Confirm')).toBeInTheDocument();
|
|
27
|
+
expect(_react2.screen.getByText('Are you sure?')).toBeInTheDocument();
|
|
28
|
+
});
|
|
29
|
+
it('should not render dialog when open is false', function () {
|
|
30
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_alertDialog["default"], {
|
|
31
|
+
open: false,
|
|
32
|
+
title: "Confirm",
|
|
33
|
+
text: "Are you sure?",
|
|
34
|
+
onClose: onClose,
|
|
35
|
+
onConfirm: onConfirm
|
|
36
|
+
})),
|
|
37
|
+
container = _render.container;
|
|
38
|
+
var dialogs = container.querySelectorAll('[role="dialog"]');
|
|
39
|
+
expect(dialogs.length).toBe(0);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
describe('Title and Text', function () {
|
|
43
|
+
it('should handle both title and text', function () {
|
|
44
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_alertDialog["default"], {
|
|
45
|
+
open: true,
|
|
46
|
+
title: "Important",
|
|
47
|
+
text: "This is an important message",
|
|
48
|
+
onClose: onClose,
|
|
49
|
+
onConfirm: onConfirm
|
|
50
|
+
}));
|
|
51
|
+
expect(_react2.screen.getByText('Important')).toBeInTheDocument();
|
|
52
|
+
expect(_react2.screen.getByText('This is an important message')).toBeInTheDocument();
|
|
53
|
+
});
|
|
54
|
+
it('should handle text as object', function () {
|
|
55
|
+
var textObj = /*#__PURE__*/_react["default"].createElement("div", null, "Rich text content");
|
|
56
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_alertDialog["default"], {
|
|
57
|
+
open: true,
|
|
58
|
+
title: "Rich Content",
|
|
59
|
+
text: textObj,
|
|
60
|
+
onClose: onClose,
|
|
61
|
+
onConfirm: onConfirm
|
|
62
|
+
}));
|
|
63
|
+
expect(_react2.screen.getByText('Rich text content')).toBeInTheDocument();
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe('Buttons', function () {
|
|
67
|
+
it('should render close button when onClose is provided', function () {
|
|
68
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_alertDialog["default"], {
|
|
69
|
+
open: true,
|
|
70
|
+
title: "Dialog",
|
|
71
|
+
text: "Content",
|
|
72
|
+
onClose: onClose,
|
|
73
|
+
onConfirm: onConfirm
|
|
74
|
+
}));
|
|
75
|
+
expect(_react2.screen.getByRole('button', {
|
|
76
|
+
name: 'CANCEL'
|
|
77
|
+
})).toBeInTheDocument();
|
|
78
|
+
});
|
|
79
|
+
it('should render confirm button when onConfirm is provided', function () {
|
|
80
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_alertDialog["default"], {
|
|
81
|
+
open: true,
|
|
82
|
+
title: "Dialog",
|
|
83
|
+
text: "Content",
|
|
84
|
+
onClose: onClose,
|
|
85
|
+
onConfirm: onConfirm
|
|
86
|
+
}));
|
|
87
|
+
expect(_react2.screen.getByRole('button', {
|
|
88
|
+
name: 'OK'
|
|
89
|
+
})).toBeInTheDocument();
|
|
90
|
+
});
|
|
91
|
+
it('should have default button text', function () {
|
|
92
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_alertDialog["default"], {
|
|
93
|
+
open: true,
|
|
94
|
+
title: "Dialog",
|
|
95
|
+
text: "Content",
|
|
96
|
+
onClose: onClose,
|
|
97
|
+
onConfirm: onConfirm
|
|
98
|
+
}));
|
|
99
|
+
expect(_react2.screen.getByRole('button', {
|
|
100
|
+
name: 'CANCEL'
|
|
101
|
+
})).toBeInTheDocument();
|
|
102
|
+
expect(_react2.screen.getByRole('button', {
|
|
103
|
+
name: 'OK'
|
|
104
|
+
})).toBeInTheDocument();
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
describe('User interactions', function () {
|
|
108
|
+
it('should call onClose when close button is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
109
|
+
var user, closeButton;
|
|
110
|
+
return _regenerator["default"].wrap(function (_context) {
|
|
111
|
+
while (1) switch (_context.prev = _context.next) {
|
|
112
|
+
case 0:
|
|
113
|
+
user = _userEvent["default"].setup();
|
|
114
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_alertDialog["default"], {
|
|
115
|
+
open: true,
|
|
116
|
+
title: "Dialog",
|
|
117
|
+
text: "Content",
|
|
118
|
+
onClose: onClose,
|
|
119
|
+
onConfirm: onConfirm
|
|
120
|
+
}));
|
|
121
|
+
closeButton = _react2.screen.getByRole('button', {
|
|
122
|
+
name: 'CANCEL'
|
|
123
|
+
});
|
|
124
|
+
_context.next = 1;
|
|
125
|
+
return user.click(closeButton);
|
|
126
|
+
case 1:
|
|
127
|
+
expect(onClose).toHaveBeenCalled();
|
|
128
|
+
case 2:
|
|
129
|
+
case "end":
|
|
130
|
+
return _context.stop();
|
|
131
|
+
}
|
|
132
|
+
}, _callee);
|
|
133
|
+
})));
|
|
134
|
+
it('should call onConfirm when confirm button is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
135
|
+
var user, confirmButton;
|
|
136
|
+
return _regenerator["default"].wrap(function (_context2) {
|
|
137
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
138
|
+
case 0:
|
|
139
|
+
user = _userEvent["default"].setup();
|
|
140
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_alertDialog["default"], {
|
|
141
|
+
open: true,
|
|
142
|
+
title: "Dialog",
|
|
143
|
+
text: "Content",
|
|
144
|
+
onClose: onClose,
|
|
145
|
+
onConfirm: onConfirm
|
|
146
|
+
}));
|
|
147
|
+
confirmButton = _react2.screen.getByRole('button', {
|
|
148
|
+
name: 'OK'
|
|
149
|
+
});
|
|
150
|
+
_context2.next = 1;
|
|
151
|
+
return user.click(confirmButton);
|
|
152
|
+
case 1:
|
|
153
|
+
expect(onConfirm).toHaveBeenCalled();
|
|
154
|
+
case 2:
|
|
155
|
+
case "end":
|
|
156
|
+
return _context2.stop();
|
|
157
|
+
}
|
|
158
|
+
}, _callee2);
|
|
159
|
+
})));
|
|
160
|
+
});
|
|
161
|
+
describe('Focus management', function () {
|
|
162
|
+
it('should have autoFocus on confirm button by default', function () {
|
|
163
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_alertDialog["default"], {
|
|
164
|
+
open: true,
|
|
165
|
+
title: "Dialog",
|
|
166
|
+
text: "Content",
|
|
167
|
+
onClose: onClose,
|
|
168
|
+
onConfirm: onConfirm
|
|
169
|
+
}));
|
|
170
|
+
var confirmButton = _react2.screen.getByRole('button', {
|
|
171
|
+
name: 'OK'
|
|
172
|
+
});
|
|
173
|
+
expect(confirmButton).toBeInTheDocument();
|
|
174
|
+
});
|
|
175
|
+
it('should disable auto focus when disableAutoFocus is true', function () {
|
|
176
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_alertDialog["default"], {
|
|
177
|
+
open: true,
|
|
178
|
+
title: "Dialog",
|
|
179
|
+
text: "Content",
|
|
180
|
+
onClose: onClose,
|
|
181
|
+
onConfirm: onConfirm,
|
|
182
|
+
disableAutoFocus: true
|
|
183
|
+
}));
|
|
184
|
+
expect(_react2.screen.getByText('Dialog')).toBeInTheDocument();
|
|
185
|
+
});
|
|
186
|
+
it('should disable enforce focus when disableEnforceFocus is true', function () {
|
|
187
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_alertDialog["default"], {
|
|
188
|
+
open: true,
|
|
189
|
+
title: "Dialog",
|
|
190
|
+
text: "Content",
|
|
191
|
+
onClose: onClose,
|
|
192
|
+
onConfirm: onConfirm,
|
|
193
|
+
disableEnforceFocus: true
|
|
194
|
+
}));
|
|
195
|
+
expect(_react2.screen.getByText('Dialog')).toBeInTheDocument();
|
|
196
|
+
});
|
|
197
|
+
it('should disable restore focus when disableRestoreFocus is true', function () {
|
|
198
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_alertDialog["default"], {
|
|
199
|
+
open: true,
|
|
200
|
+
title: "Dialog",
|
|
201
|
+
text: "Content",
|
|
202
|
+
onClose: onClose,
|
|
203
|
+
onConfirm: onConfirm,
|
|
204
|
+
disableRestoreFocus: true
|
|
205
|
+
}));
|
|
206
|
+
expect(_react2.screen.getByText('Dialog')).toBeInTheDocument();
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
describe('Edge cases', function () {
|
|
210
|
+
it('should handle very long title', function () {
|
|
211
|
+
var longTitle = 'This is a very long title that should wrap properly in the dialog';
|
|
212
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_alertDialog["default"], {
|
|
213
|
+
open: true,
|
|
214
|
+
title: longTitle,
|
|
215
|
+
text: "Content",
|
|
216
|
+
onClose: onClose,
|
|
217
|
+
onConfirm: onConfirm
|
|
218
|
+
}));
|
|
219
|
+
expect(_react2.screen.getByText(longTitle)).toBeInTheDocument();
|
|
220
|
+
});
|
|
221
|
+
it('should handle very long text', function () {
|
|
222
|
+
var longText = 'This is a very long text that should wrap properly in the dialog. '.repeat(10);
|
|
223
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_alertDialog["default"], {
|
|
224
|
+
open: true,
|
|
225
|
+
title: "Dialog",
|
|
226
|
+
text: longText,
|
|
227
|
+
onClose: onClose,
|
|
228
|
+
onConfirm: onConfirm
|
|
229
|
+
}));
|
|
230
|
+
expect(_react2.screen.getByText(new RegExp(longText.slice(0, 50)))).toBeInTheDocument();
|
|
231
|
+
});
|
|
232
|
+
it('should handle only close callback', function () {
|
|
233
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_alertDialog["default"], {
|
|
234
|
+
open: true,
|
|
235
|
+
title: "Close Only",
|
|
236
|
+
text: "Content",
|
|
237
|
+
onClose: onClose
|
|
238
|
+
}));
|
|
239
|
+
expect(_react2.screen.getByRole('button', {
|
|
240
|
+
name: 'CANCEL'
|
|
241
|
+
})).toBeInTheDocument();
|
|
242
|
+
expect(_react2.screen.queryByRole('button', {
|
|
243
|
+
name: 'OK'
|
|
244
|
+
})).not.toBeInTheDocument();
|
|
245
|
+
});
|
|
246
|
+
it('should handle only confirm callback', function () {
|
|
247
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_alertDialog["default"], {
|
|
248
|
+
open: true,
|
|
249
|
+
title: "Confirm Only",
|
|
250
|
+
text: "Content",
|
|
251
|
+
onConfirm: onConfirm
|
|
252
|
+
}));
|
|
253
|
+
expect(_react2.screen.getByRole('button', {
|
|
254
|
+
name: 'OK'
|
|
255
|
+
})).toBeInTheDocument();
|
|
256
|
+
expect(_react2.screen.queryByRole('button', {
|
|
257
|
+
name: 'CANCEL'
|
|
258
|
+
})).not.toBeInTheDocument();
|
|
259
|
+
});
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
//# sourceMappingURL=alert-dialog.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert-dialog.test.js","names":["_react","_interopRequireDefault","require","_react2","_userEvent","_alertDialog","describe","onClose","jest","fn","onConfirm","beforeEach","mockClear","it","render","createElement","open","title","text","expect","screen","getByText","toBeInTheDocument","_render","container","dialogs","querySelectorAll","length","toBe","textObj","getByRole","name","_asyncToGenerator2","_regenerator","mark","_callee","user","closeButton","wrap","_context","prev","next","userEvent","setup","click","toHaveBeenCalled","stop","_callee2","confirmButton","_context2","disableAutoFocus","disableEnforceFocus","disableRestoreFocus","longTitle","longText","repeat","RegExp","slice","queryByRole","not"],"sources":["../../src/__tests__/alert-dialog.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render, screen } from '@testing-library/react';\nimport userEvent from '@testing-library/user-event';\nimport AlertDialog from '../alert-dialog';\n\ndescribe('AlertDialog Component', () => {\n const onClose = jest.fn();\n const onConfirm = jest.fn();\n\n beforeEach(() => {\n onClose.mockClear();\n onConfirm.mockClear();\n });\n\n describe('Rendering when open', () => {\n it('should render dialog when open is true', () => {\n render(<AlertDialog open={true} title=\"Confirm\" text=\"Are you sure?\" onClose={onClose} onConfirm={onConfirm} />);\n\n expect(screen.getByText('Confirm')).toBeInTheDocument();\n expect(screen.getByText('Are you sure?')).toBeInTheDocument();\n });\n\n it('should not render dialog when open is false', () => {\n const { container } = render(\n <AlertDialog open={false} title=\"Confirm\" text=\"Are you sure?\" onClose={onClose} onConfirm={onConfirm} />,\n );\n\n const dialogs = container.querySelectorAll('[role=\"dialog\"]');\n expect(dialogs.length).toBe(0);\n });\n });\n\n describe('Title and Text', () => {\n it('should handle both title and text', () => {\n render(\n <AlertDialog\n open={true}\n title=\"Important\"\n text=\"This is an important message\"\n onClose={onClose}\n onConfirm={onConfirm}\n />,\n );\n\n expect(screen.getByText('Important')).toBeInTheDocument();\n expect(screen.getByText('This is an important message')).toBeInTheDocument();\n });\n\n it('should handle text as object', () => {\n const textObj = <div>Rich text content</div>;\n render(<AlertDialog open={true} title=\"Rich Content\" text={textObj} onClose={onClose} onConfirm={onConfirm} />);\n\n expect(screen.getByText('Rich text content')).toBeInTheDocument();\n });\n });\n\n describe('Buttons', () => {\n it('should render close button when onClose is provided', () => {\n render(<AlertDialog open={true} title=\"Dialog\" text=\"Content\" onClose={onClose} onConfirm={onConfirm} />);\n\n expect(screen.getByRole('button', { name: 'CANCEL' })).toBeInTheDocument();\n });\n\n it('should render confirm button when onConfirm is provided', () => {\n render(<AlertDialog open={true} title=\"Dialog\" text=\"Content\" onClose={onClose} onConfirm={onConfirm} />);\n\n expect(screen.getByRole('button', { name: 'OK' })).toBeInTheDocument();\n });\n\n it('should have default button text', () => {\n render(<AlertDialog open={true} title=\"Dialog\" text=\"Content\" onClose={onClose} onConfirm={onConfirm} />);\n\n expect(screen.getByRole('button', { name: 'CANCEL' })).toBeInTheDocument();\n expect(screen.getByRole('button', { name: 'OK' })).toBeInTheDocument();\n });\n });\n\n describe('User interactions', () => {\n it('should call onClose when close button is clicked', async () => {\n const user = userEvent.setup();\n render(<AlertDialog open={true} title=\"Dialog\" text=\"Content\" onClose={onClose} onConfirm={onConfirm} />);\n\n const closeButton = screen.getByRole('button', { name: 'CANCEL' });\n await user.click(closeButton);\n\n expect(onClose).toHaveBeenCalled();\n });\n\n it('should call onConfirm when confirm button is clicked', async () => {\n const user = userEvent.setup();\n render(<AlertDialog open={true} title=\"Dialog\" text=\"Content\" onClose={onClose} onConfirm={onConfirm} />);\n\n const confirmButton = screen.getByRole('button', { name: 'OK' });\n await user.click(confirmButton);\n\n expect(onConfirm).toHaveBeenCalled();\n });\n });\n\n describe('Focus management', () => {\n it('should have autoFocus on confirm button by default', () => {\n render(<AlertDialog open={true} title=\"Dialog\" text=\"Content\" onClose={onClose} onConfirm={onConfirm} />);\n\n const confirmButton = screen.getByRole('button', { name: 'OK' });\n expect(confirmButton).toBeInTheDocument();\n });\n\n it('should disable auto focus when disableAutoFocus is true', () => {\n render(\n <AlertDialog\n open={true}\n title=\"Dialog\"\n text=\"Content\"\n onClose={onClose}\n onConfirm={onConfirm}\n disableAutoFocus={true}\n />,\n );\n\n expect(screen.getByText('Dialog')).toBeInTheDocument();\n });\n\n it('should disable enforce focus when disableEnforceFocus is true', () => {\n render(\n <AlertDialog\n open={true}\n title=\"Dialog\"\n text=\"Content\"\n onClose={onClose}\n onConfirm={onConfirm}\n disableEnforceFocus={true}\n />,\n );\n\n expect(screen.getByText('Dialog')).toBeInTheDocument();\n });\n\n it('should disable restore focus when disableRestoreFocus is true', () => {\n render(\n <AlertDialog\n open={true}\n title=\"Dialog\"\n text=\"Content\"\n onClose={onClose}\n onConfirm={onConfirm}\n disableRestoreFocus={true}\n />,\n );\n\n expect(screen.getByText('Dialog')).toBeInTheDocument();\n });\n });\n\n describe('Edge cases', () => {\n it('should handle very long title', () => {\n const longTitle = 'This is a very long title that should wrap properly in the dialog';\n render(<AlertDialog open={true} title={longTitle} text=\"Content\" onClose={onClose} onConfirm={onConfirm} />);\n\n expect(screen.getByText(longTitle)).toBeInTheDocument();\n });\n\n it('should handle very long text', () => {\n const longText = 'This is a very long text that should wrap properly in the dialog. '.repeat(10);\n render(<AlertDialog open={true} title=\"Dialog\" text={longText} onClose={onClose} onConfirm={onConfirm} />);\n\n expect(screen.getByText(new RegExp(longText.slice(0, 50)))).toBeInTheDocument();\n });\n\n it('should handle only close callback', () => {\n render(<AlertDialog open={true} title=\"Close Only\" text=\"Content\" onClose={onClose} />);\n\n expect(screen.getByRole('button', { name: 'CANCEL' })).toBeInTheDocument();\n expect(screen.queryByRole('button', { name: 'OK' })).not.toBeInTheDocument();\n });\n\n it('should handle only confirm callback', () => {\n render(<AlertDialog open={true} title=\"Confirm Only\" text=\"Content\" onConfirm={onConfirm} />);\n\n expect(screen.getByRole('button', { name: 'OK' })).toBeInTheDocument();\n expect(screen.queryByRole('button', { name: 'CANCEL' })).not.toBeInTheDocument();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
5
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
6
|
+
var _react = _interopRequireDefault(require("react"));
|
|
7
|
+
var _react2 = require("@testing-library/react");
|
|
8
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
9
|
+
var _checkbox = _interopRequireDefault(require("../checkbox"));
|
|
10
|
+
describe('Checkbox Component', function () {
|
|
11
|
+
var onChange = jest.fn();
|
|
12
|
+
beforeEach(function () {
|
|
13
|
+
onChange.mockClear();
|
|
14
|
+
});
|
|
15
|
+
describe('Rendering', function () {
|
|
16
|
+
it('should render checkbox with label', function () {
|
|
17
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
18
|
+
checked: false,
|
|
19
|
+
onChange: onChange,
|
|
20
|
+
label: "Accept terms"
|
|
21
|
+
}));
|
|
22
|
+
expect(_react2.screen.getByText('Accept terms')).toBeInTheDocument();
|
|
23
|
+
expect(_react2.screen.getByRole('checkbox')).toBeInTheDocument();
|
|
24
|
+
});
|
|
25
|
+
it('should render checkbox in checked state', function () {
|
|
26
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
27
|
+
checked: true,
|
|
28
|
+
onChange: onChange,
|
|
29
|
+
label: "Accept terms"
|
|
30
|
+
}));
|
|
31
|
+
expect(_react2.screen.getByRole('checkbox')).toBeChecked();
|
|
32
|
+
});
|
|
33
|
+
it('should render checkbox in unchecked state', function () {
|
|
34
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
35
|
+
checked: false,
|
|
36
|
+
onChange: onChange,
|
|
37
|
+
label: "Accept terms"
|
|
38
|
+
}));
|
|
39
|
+
expect(_react2.screen.getByRole('checkbox')).not.toBeChecked();
|
|
40
|
+
});
|
|
41
|
+
it('should render mini checkbox with reduced styling', function () {
|
|
42
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
43
|
+
checked: false,
|
|
44
|
+
onChange: onChange,
|
|
45
|
+
label: "Mini",
|
|
46
|
+
mini: true
|
|
47
|
+
}));
|
|
48
|
+
expect(_react2.screen.getByRole('checkbox')).toBeInTheDocument();
|
|
49
|
+
expect(_react2.screen.getByText('Mini')).toBeInTheDocument();
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe('User interaction', function () {
|
|
53
|
+
it('should call onChange when checkbox is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
54
|
+
var user, checkbox;
|
|
55
|
+
return _regenerator["default"].wrap(function (_context) {
|
|
56
|
+
while (1) switch (_context.prev = _context.next) {
|
|
57
|
+
case 0:
|
|
58
|
+
user = _userEvent["default"].setup();
|
|
59
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
60
|
+
checked: false,
|
|
61
|
+
onChange: onChange,
|
|
62
|
+
label: "Accept"
|
|
63
|
+
}));
|
|
64
|
+
checkbox = _react2.screen.getByRole('checkbox');
|
|
65
|
+
_context.next = 1;
|
|
66
|
+
return user.click(checkbox);
|
|
67
|
+
case 1:
|
|
68
|
+
expect(onChange).toHaveBeenCalled();
|
|
69
|
+
case 2:
|
|
70
|
+
case "end":
|
|
71
|
+
return _context.stop();
|
|
72
|
+
}
|
|
73
|
+
}, _callee);
|
|
74
|
+
})));
|
|
75
|
+
it('should call onChange when label is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
76
|
+
var user, label;
|
|
77
|
+
return _regenerator["default"].wrap(function (_context2) {
|
|
78
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
79
|
+
case 0:
|
|
80
|
+
user = _userEvent["default"].setup();
|
|
81
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
82
|
+
checked: false,
|
|
83
|
+
onChange: onChange,
|
|
84
|
+
label: "Click label"
|
|
85
|
+
}));
|
|
86
|
+
label = _react2.screen.getByText('Click label');
|
|
87
|
+
_context2.next = 1;
|
|
88
|
+
return user.click(label);
|
|
89
|
+
case 1:
|
|
90
|
+
expect(onChange).toHaveBeenCalled();
|
|
91
|
+
case 2:
|
|
92
|
+
case "end":
|
|
93
|
+
return _context2.stop();
|
|
94
|
+
}
|
|
95
|
+
}, _callee2);
|
|
96
|
+
})));
|
|
97
|
+
});
|
|
98
|
+
describe('Props', function () {
|
|
99
|
+
it('should handle value prop', function () {
|
|
100
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
101
|
+
checked: true,
|
|
102
|
+
onChange: onChange,
|
|
103
|
+
label: "With value",
|
|
104
|
+
value: "option1"
|
|
105
|
+
}));
|
|
106
|
+
expect(_react2.screen.getByRole('checkbox')).toBeInTheDocument();
|
|
107
|
+
});
|
|
108
|
+
it('should display error styling when error is true', function () {
|
|
109
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
110
|
+
checked: false,
|
|
111
|
+
onChange: onChange,
|
|
112
|
+
label: "Error state",
|
|
113
|
+
error: true
|
|
114
|
+
}));
|
|
115
|
+
expect(_react2.screen.getByRole('checkbox')).toBeInTheDocument();
|
|
116
|
+
expect(_react2.screen.getByText('Error state')).toBeInTheDocument();
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
describe('Default props', function () {
|
|
120
|
+
it('should have mini default to false', function () {
|
|
121
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
122
|
+
checked: true,
|
|
123
|
+
onChange: onChange,
|
|
124
|
+
label: "Test"
|
|
125
|
+
})),
|
|
126
|
+
container = _render.container;
|
|
127
|
+
expect(_react2.screen.getByRole('checkbox')).toBeInTheDocument();
|
|
128
|
+
});
|
|
129
|
+
it('should have error default to false', function () {
|
|
130
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
131
|
+
checked: true,
|
|
132
|
+
onChange: onChange,
|
|
133
|
+
label: "Test"
|
|
134
|
+
})),
|
|
135
|
+
container = _render2.container;
|
|
136
|
+
expect(_react2.screen.getByRole('checkbox')).toBeInTheDocument();
|
|
137
|
+
});
|
|
138
|
+
it('should have value default to empty string', function () {
|
|
139
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
140
|
+
checked: true,
|
|
141
|
+
onChange: onChange,
|
|
142
|
+
label: "Test"
|
|
143
|
+
}));
|
|
144
|
+
expect(_react2.screen.getByRole('checkbox')).toBeInTheDocument();
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
describe('Accessibility', function () {
|
|
148
|
+
it('should have proper label association', function () {
|
|
149
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
150
|
+
checked: false,
|
|
151
|
+
onChange: onChange,
|
|
152
|
+
label: "Accessible label"
|
|
153
|
+
}));
|
|
154
|
+
expect(_react2.screen.getByLabelText('Accessible label')).toBeInTheDocument();
|
|
155
|
+
});
|
|
156
|
+
it('should be keyboard accessible', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
157
|
+
var user, checkbox;
|
|
158
|
+
return _regenerator["default"].wrap(function (_context3) {
|
|
159
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
160
|
+
case 0:
|
|
161
|
+
user = _userEvent["default"].setup();
|
|
162
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
163
|
+
checked: false,
|
|
164
|
+
onChange: onChange,
|
|
165
|
+
label: "Keyboard test"
|
|
166
|
+
}));
|
|
167
|
+
checkbox = _react2.screen.getByRole('checkbox');
|
|
168
|
+
checkbox.focus();
|
|
169
|
+
expect(checkbox).toHaveFocus();
|
|
170
|
+
_context3.next = 1;
|
|
171
|
+
return user.keyboard(' ');
|
|
172
|
+
case 1:
|
|
173
|
+
expect(onChange).toHaveBeenCalled();
|
|
174
|
+
case 2:
|
|
175
|
+
case "end":
|
|
176
|
+
return _context3.stop();
|
|
177
|
+
}
|
|
178
|
+
}, _callee3);
|
|
179
|
+
})));
|
|
180
|
+
});
|
|
181
|
+
describe('Multiple checkboxes', function () {
|
|
182
|
+
it('should render multiple independent checkboxes', function () {
|
|
183
|
+
var onChange1 = jest.fn();
|
|
184
|
+
var onChange2 = jest.fn();
|
|
185
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
186
|
+
checked: true,
|
|
187
|
+
onChange: onChange1,
|
|
188
|
+
label: "Option 1"
|
|
189
|
+
}), /*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
190
|
+
checked: false,
|
|
191
|
+
onChange: onChange2,
|
|
192
|
+
label: "Option 2"
|
|
193
|
+
})));
|
|
194
|
+
expect(_react2.screen.getByLabelText('Option 1')).toBeChecked();
|
|
195
|
+
expect(_react2.screen.getByLabelText('Option 2')).not.toBeChecked();
|
|
196
|
+
});
|
|
197
|
+
it('should handle independent onChange callbacks', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
198
|
+
var user, onChange1, onChange2;
|
|
199
|
+
return _regenerator["default"].wrap(function (_context4) {
|
|
200
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
201
|
+
case 0:
|
|
202
|
+
user = _userEvent["default"].setup();
|
|
203
|
+
onChange1 = jest.fn();
|
|
204
|
+
onChange2 = jest.fn();
|
|
205
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
206
|
+
checked: true,
|
|
207
|
+
onChange: onChange1,
|
|
208
|
+
label: "Option 1"
|
|
209
|
+
}), /*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
210
|
+
checked: false,
|
|
211
|
+
onChange: onChange2,
|
|
212
|
+
label: "Option 2"
|
|
213
|
+
})));
|
|
214
|
+
_context4.next = 1;
|
|
215
|
+
return user.click(_react2.screen.getByLabelText('Option 2'));
|
|
216
|
+
case 1:
|
|
217
|
+
expect(onChange2).toHaveBeenCalled();
|
|
218
|
+
expect(onChange1).not.toHaveBeenCalled();
|
|
219
|
+
case 2:
|
|
220
|
+
case "end":
|
|
221
|
+
return _context4.stop();
|
|
222
|
+
}
|
|
223
|
+
}, _callee4);
|
|
224
|
+
})));
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
//# sourceMappingURL=checkbox.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.test.js","names":["_react","_interopRequireDefault","require","_react2","_userEvent","_checkbox","describe","onChange","jest","fn","beforeEach","mockClear","it","render","createElement","checked","label","expect","screen","getByText","toBeInTheDocument","getByRole","toBeChecked","not","mini","_asyncToGenerator2","_regenerator","mark","_callee","user","checkbox","wrap","_context","prev","next","userEvent","setup","click","toHaveBeenCalled","stop","_callee2","_context2","value","error","_render","container","_render2","getByLabelText","_callee3","_context3","focus","toHaveFocus","keyboard","onChange1","onChange2","Fragment","_callee4","_context4"],"sources":["../../src/__tests__/checkbox.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render, screen } from '@testing-library/react';\nimport userEvent from '@testing-library/user-event';\nimport Checkbox from '../checkbox';\n\ndescribe('Checkbox Component', () => {\n const onChange = jest.fn();\n\n beforeEach(() => {\n onChange.mockClear();\n });\n\n describe('Rendering', () => {\n it('should render checkbox with label', () => {\n render(<Checkbox checked={false} onChange={onChange} label=\"Accept terms\" />);\n\n expect(screen.getByText('Accept terms')).toBeInTheDocument();\n expect(screen.getByRole('checkbox')).toBeInTheDocument();\n });\n\n it('should render checkbox in checked state', () => {\n render(<Checkbox checked={true} onChange={onChange} label=\"Accept terms\" />);\n\n expect(screen.getByRole('checkbox')).toBeChecked();\n });\n\n it('should render checkbox in unchecked state', () => {\n render(<Checkbox checked={false} onChange={onChange} label=\"Accept terms\" />);\n\n expect(screen.getByRole('checkbox')).not.toBeChecked();\n });\n\n it('should render mini checkbox with reduced styling', () => {\n render(<Checkbox checked={false} onChange={onChange} label=\"Mini\" mini={true} />);\n\n expect(screen.getByRole('checkbox')).toBeInTheDocument();\n expect(screen.getByText('Mini')).toBeInTheDocument();\n });\n });\n\n describe('User interaction', () => {\n it('should call onChange when checkbox is clicked', async () => {\n const user = userEvent.setup();\n render(<Checkbox checked={false} onChange={onChange} label=\"Accept\" />);\n\n const checkbox = screen.getByRole('checkbox');\n await user.click(checkbox);\n\n expect(onChange).toHaveBeenCalled();\n });\n\n it('should call onChange when label is clicked', async () => {\n const user = userEvent.setup();\n render(<Checkbox checked={false} onChange={onChange} label=\"Click label\" />);\n\n const label = screen.getByText('Click label');\n await user.click(label);\n\n expect(onChange).toHaveBeenCalled();\n });\n });\n\n describe('Props', () => {\n it('should handle value prop', () => {\n render(<Checkbox checked={true} onChange={onChange} label=\"With value\" value=\"option1\" />);\n\n expect(screen.getByRole('checkbox')).toBeInTheDocument();\n });\n\n it('should display error styling when error is true', () => {\n render(<Checkbox checked={false} onChange={onChange} label=\"Error state\" error={true} />);\n\n expect(screen.getByRole('checkbox')).toBeInTheDocument();\n expect(screen.getByText('Error state')).toBeInTheDocument();\n });\n });\n\n describe('Default props', () => {\n it('should have mini default to false', () => {\n const { container } = render(<Checkbox checked={true} onChange={onChange} label=\"Test\" />);\n\n expect(screen.getByRole('checkbox')).toBeInTheDocument();\n });\n\n it('should have error default to false', () => {\n const { container } = render(<Checkbox checked={true} onChange={onChange} label=\"Test\" />);\n\n expect(screen.getByRole('checkbox')).toBeInTheDocument();\n });\n\n it('should have value default to empty string', () => {\n render(<Checkbox checked={true} onChange={onChange} label=\"Test\" />);\n\n expect(screen.getByRole('checkbox')).toBeInTheDocument();\n });\n });\n\n describe('Accessibility', () => {\n it('should have proper label association', () => {\n render(<Checkbox checked={false} onChange={onChange} label=\"Accessible label\" />);\n\n expect(screen.getByLabelText('Accessible label')).toBeInTheDocument();\n });\n\n it('should be keyboard accessible', async () => {\n const user = userEvent.setup();\n render(<Checkbox checked={false} onChange={onChange} label=\"Keyboard test\" />);\n\n const checkbox = screen.getByRole('checkbox');\n checkbox.focus();\n expect(checkbox).toHaveFocus();\n\n await user.keyboard(' ');\n expect(onChange).toHaveBeenCalled();\n });\n });\n\n describe('Multiple checkboxes', () => {\n it('should render multiple independent checkboxes', () => {\n const onChange1 = jest.fn();\n const onChange2 = jest.fn();\n\n render(\n <>\n <Checkbox checked={true} onChange={onChange1} label=\"Option 1\" />\n <Checkbox checked={false} onChange={onChange2} label=\"Option 2\" />\n </>,\n );\n\n expect(screen.getByLabelText('Option 1')).toBeChecked();\n expect(screen.getByLabelText('Option 2')).not.toBeChecked();\n });\n\n it('should handle independent onChange callbacks', async () => {\n const user = userEvent.setup();\n const onChange1 = jest.fn();\n const onChange2 = jest.fn();\n\n render(\n <>\n <Checkbox checked={true} onChange={onChange1} label=\"Option 1\" />\n <Checkbox checked={false} onChange={onChange2} label=\"Option 2\" />\n </>,\n );\n\n await user.click(screen.getByLabelText('Option 2'));\n\n expect(onChange2).toHaveBeenCalled();\n expect(onChange1).not.toHaveBeenCalled();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _choiceUtils = require("../choice-utils");
|
|
4
|
+
describe('firstAvailableIndex', function () {
|
|
5
|
+
var assert = function assert(values, index, expected) {
|
|
6
|
+
it("[".concat(values.join(','), "], ").concat(index, " ==> ").concat(expected), function () {
|
|
7
|
+
expect((0, _choiceUtils.firstAvailableIndex)(['0'], 0)).toEqual('1');
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
assert(['0'], 0, '1');
|
|
11
|
+
assert(['0', '1', '2'], 0, '3');
|
|
12
|
+
assert(['0', '1', '2'], 100, '100');
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=choice-utils.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"choice-utils.test.js","names":["_choiceUtils","require","describe","assert","values","index","expected","it","concat","join","expect","firstAvailableIndex","toEqual"],"sources":["../../src/__tests__/choice-utils.test.js"],"sourcesContent":["import { firstAvailableIndex } from '../choice-utils';\n\ndescribe('firstAvailableIndex', () => {\n const assert = (values, index, expected) => {\n it(`[${values.join(',')}], ${index} ==> ${expected}`, () => {\n expect(firstAvailableIndex(['0'], 0)).toEqual('1');\n });\n };\n assert(['0'], 0, '1');\n assert(['0', '1', '2'], 0, '3');\n assert(['0', '1', '2'], 100, '100');\n});\n"],"mappings":";;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEAC,QAAQ,CAAC,qBAAqB,EAAE,YAAM;EACpC,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAIC,MAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAK;IAC1CC,EAAE,KAAAC,MAAA,CAAKJ,MAAM,CAACK,IAAI,CAAC,GAAG,CAAC,SAAAD,MAAA,CAAMH,KAAK,WAAAG,MAAA,CAAQF,QAAQ,GAAI,YAAM;MAC1DI,MAAM,CAAC,IAAAC,gCAAmB,EAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAACC,OAAO,CAAC,GAAG,CAAC;IACpD,CAAC,CAAC;EACJ,CAAC;EACDT,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;EACrBA,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;EAC/BA,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;AACrC,CAAC,CAAC","ignoreList":[]}
|