@pie-lib/config-ui 11.30.3-next.2 → 11.30.4-next.0
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 +7 -78
- package/lib/__tests__/alert-dialog.test.js +262 -0
- package/lib/__tests__/checkbox.test.js +227 -0
- package/lib/__tests__/choice-utils.test.js +14 -0
- package/lib/__tests__/form-section.test.js +252 -0
- package/lib/__tests__/help.test.js +270 -0
- package/lib/__tests__/input.test.js +268 -0
- package/lib/__tests__/langs.test.js +541 -0
- package/lib/__tests__/number-text-field-custom.test.js +362 -0
- package/lib/__tests__/number-text-field.test.js +421 -0
- package/lib/__tests__/radio-with-label.test.js +233 -0
- package/lib/__tests__/settings-panel.test.js +184 -0
- package/lib/__tests__/settings.test.js +653 -0
- package/lib/__tests__/tabs.test.js +211 -0
- package/lib/__tests__/two-choice.test.js +124 -0
- package/lib/__tests__/with-stateful-model.test.js +221 -0
- package/lib/alert-dialog.js +36 -43
- package/lib/alert-dialog.js.map +1 -1
- package/lib/checkbox.js +57 -72
- package/lib/checkbox.js.map +1 -1
- package/lib/choice-configuration/__tests__/feedback-menu.test.js +287 -0
- package/lib/choice-configuration/__tests__/index.test.js +253 -0
- package/lib/choice-configuration/feedback-menu.js +30 -65
- package/lib/choice-configuration/feedback-menu.js.map +1 -1
- package/lib/choice-configuration/index.js +203 -263
- package/lib/choice-configuration/index.js.map +1 -1
- package/lib/choice-utils.js +7 -19
- package/lib/choice-utils.js.map +1 -1
- package/lib/feedback-config/__tests__/feedback-config.test.js +201 -0
- package/lib/feedback-config/__tests__/feedback-selector.test.js +177 -0
- package/lib/feedback-config/feedback-selector.js +80 -116
- package/lib/feedback-config/feedback-selector.js.map +1 -1
- package/lib/feedback-config/group.js +27 -41
- package/lib/feedback-config/group.js.map +1 -1
- package/lib/feedback-config/index.js +48 -91
- package/lib/feedback-config/index.js.map +1 -1
- package/lib/form-section.js +32 -34
- package/lib/form-section.js.map +1 -1
- package/lib/help.js +40 -81
- package/lib/help.js.map +1 -1
- package/lib/index.js +2 -32
- package/lib/index.js.map +1 -1
- package/lib/input.js +22 -55
- package/lib/input.js.map +1 -1
- package/lib/inputs.js +62 -96
- package/lib/inputs.js.map +1 -1
- package/lib/langs.js +59 -102
- package/lib/langs.js.map +1 -1
- package/lib/layout/__tests__/config.layout.test.js +70 -0
- package/lib/layout/__tests__/layout-content.test.js +6 -0
- package/lib/layout/config-layout.js +41 -71
- package/lib/layout/config-layout.js.map +1 -1
- package/lib/layout/index.js +1 -4
- package/lib/layout/index.js.map +1 -1
- package/lib/layout/layout-contents.js +73 -104
- package/lib/layout/layout-contents.js.map +1 -1
- package/lib/layout/settings-box.js +28 -57
- package/lib/layout/settings-box.js.map +1 -1
- package/lib/mui-box/index.js +42 -58
- package/lib/mui-box/index.js.map +1 -1
- package/lib/number-text-field-custom.js +80 -162
- package/lib/number-text-field-custom.js.map +1 -1
- package/lib/number-text-field.js +81 -115
- package/lib/number-text-field.js.map +1 -1
- package/lib/radio-with-label.js +31 -32
- package/lib/radio-with-label.js.map +1 -1
- package/lib/settings/display-size.js +17 -33
- package/lib/settings/display-size.js.map +1 -1
- package/lib/settings/index.js +15 -48
- package/lib/settings/index.js.map +1 -1
- package/lib/settings/panel.js +160 -230
- package/lib/settings/panel.js.map +1 -1
- package/lib/settings/settings-radio-label.js +29 -31
- package/lib/settings/settings-radio-label.js.map +1 -1
- package/lib/settings/toggle.js +36 -47
- package/lib/settings/toggle.js.map +1 -1
- package/lib/tabs/index.js +23 -58
- package/lib/tabs/index.js.map +1 -1
- package/lib/tags-input/__tests__/index.test.js +183 -0
- package/lib/tags-input/index.js +51 -100
- package/lib/tags-input/index.js.map +1 -1
- package/lib/two-choice.js +47 -91
- package/lib/two-choice.js.map +1 -1
- package/lib/with-stateful-model.js +9 -32
- package/lib/with-stateful-model.js.map +1 -1
- package/package.json +12 -20
- package/src/__tests__/alert-dialog.test.jsx +283 -0
- package/src/__tests__/checkbox.test.jsx +249 -0
- package/src/__tests__/form-section.test.jsx +334 -0
- package/src/__tests__/help.test.jsx +184 -0
- package/src/__tests__/input.test.jsx +192 -0
- package/src/__tests__/langs.test.jsx +435 -15
- package/src/__tests__/number-text-field-custom.test.jsx +438 -0
- package/src/__tests__/number-text-field.test.jsx +295 -102
- package/src/__tests__/radio-with-label.test.jsx +259 -0
- package/src/__tests__/settings-panel.test.js +66 -83
- package/src/__tests__/settings.test.jsx +515 -0
- package/src/__tests__/tabs.test.jsx +193 -0
- package/src/__tests__/two-choice.test.js +104 -18
- package/src/__tests__/with-stateful-model.test.jsx +145 -0
- package/src/alert-dialog.jsx +21 -19
- package/src/checkbox.jsx +42 -46
- package/src/choice-configuration/__tests__/feedback-menu.test.jsx +157 -4
- package/src/choice-configuration/__tests__/index.test.jsx +198 -56
- package/src/choice-configuration/feedback-menu.jsx +6 -6
- package/src/choice-configuration/index.jsx +201 -196
- package/src/feedback-config/__tests__/feedback-config.test.jsx +130 -60
- package/src/feedback-config/__tests__/feedback-selector.test.jsx +87 -40
- package/src/feedback-config/feedback-selector.jsx +52 -53
- package/src/feedback-config/group.jsx +21 -22
- package/src/feedback-config/index.jsx +27 -29
- package/src/form-section.jsx +26 -18
- package/src/help.jsx +20 -28
- package/src/input.jsx +1 -1
- package/src/inputs.jsx +34 -50
- package/src/langs.jsx +41 -46
- package/src/layout/__tests__/config.layout.test.jsx +55 -38
- package/src/layout/config-layout.jsx +38 -32
- package/src/layout/layout-contents.jsx +38 -39
- package/src/layout/settings-box.jsx +16 -19
- package/src/mui-box/index.jsx +35 -43
- package/src/number-text-field-custom.jsx +30 -36
- package/src/number-text-field.jsx +45 -29
- package/src/radio-with-label.jsx +25 -13
- package/src/settings/display-size.jsx +12 -11
- package/src/settings/panel.jsx +97 -91
- package/src/settings/settings-radio-label.jsx +25 -13
- package/src/settings/toggle.jsx +30 -29
- package/src/tabs/index.jsx +8 -8
- package/src/tags-input/__tests__/index.test.jsx +88 -37
- package/src/tags-input/index.jsx +35 -38
- package/src/two-choice.jsx +15 -19
- package/esm/index.css +0 -847
- package/esm/index.js +0 -213950
- package/esm/index.js.map +0 -1
- package/esm/package.json +0 -3
- package/src/__tests__/__snapshots__/langs.test.jsx.snap +0 -32
- package/src/__tests__/__snapshots__/settings-panel.test.js.snap +0 -115
- package/src/__tests__/__snapshots__/two-choice.test.js.snap +0 -171
- package/src/choice-configuration/__tests__/__snapshots__/feedback-menu.test.jsx.snap +0 -51
- package/src/choice-configuration/__tests__/__snapshots__/index.test.jsx.snap +0 -519
- package/src/feedback-config/__tests__/__snapshots__/feedback-config.test.jsx.snap +0 -27
- package/src/feedback-config/__tests__/__snapshots__/feedback-selector.test.jsx.snap +0 -38
- package/src/layout/__tests__/__snapshots__/config.layout.test.jsx.snap +0 -59
- package/src/tags-input/__tests__/__snapshots__/index.test.jsx.snap +0 -170
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
6
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
7
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _react2 = require("@testing-library/react");
|
|
10
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
11
|
+
var _help = _interopRequireWildcard(require("../help"));
|
|
12
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
13
|
+
describe('HelpButton', function () {
|
|
14
|
+
it('renders help icon button', function () {
|
|
15
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpButton, null));
|
|
16
|
+
var button = _react2.screen.getByRole('button');
|
|
17
|
+
expect(button).toBeInTheDocument();
|
|
18
|
+
});
|
|
19
|
+
it('calls onClick when clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
20
|
+
var user, onClick, button;
|
|
21
|
+
return _regenerator["default"].wrap(function (_context) {
|
|
22
|
+
while (1) switch (_context.prev = _context.next) {
|
|
23
|
+
case 0:
|
|
24
|
+
user = _userEvent["default"].setup();
|
|
25
|
+
onClick = jest.fn();
|
|
26
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpButton, {
|
|
27
|
+
onClick: onClick
|
|
28
|
+
}));
|
|
29
|
+
button = _react2.screen.getByRole('button');
|
|
30
|
+
_context.next = 1;
|
|
31
|
+
return user.click(button);
|
|
32
|
+
case 1:
|
|
33
|
+
expect(onClick).toHaveBeenCalledTimes(1);
|
|
34
|
+
case 2:
|
|
35
|
+
case "end":
|
|
36
|
+
return _context.stop();
|
|
37
|
+
}
|
|
38
|
+
}, _callee);
|
|
39
|
+
})));
|
|
40
|
+
it('renders with large size', function () {
|
|
41
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpButton, null)),
|
|
42
|
+
container = _render.container;
|
|
43
|
+
var button = container.querySelector('button[class*="sizeLarge"]');
|
|
44
|
+
expect(button || _react2.screen.getByRole('button')).toBeInTheDocument();
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
describe('HelpDialog', function () {
|
|
48
|
+
var defaultProps = {
|
|
49
|
+
open: true,
|
|
50
|
+
onClose: jest.fn(),
|
|
51
|
+
title: 'Help Title',
|
|
52
|
+
children: 'Help content here'
|
|
53
|
+
};
|
|
54
|
+
beforeEach(function () {
|
|
55
|
+
jest.clearAllMocks();
|
|
56
|
+
});
|
|
57
|
+
it('renders when open is true', function () {
|
|
58
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, defaultProps));
|
|
59
|
+
expect(_react2.screen.getByText('Help Title')).toBeInTheDocument();
|
|
60
|
+
expect(_react2.screen.getByText('Help content here')).toBeInTheDocument();
|
|
61
|
+
});
|
|
62
|
+
it('does not render when open is false', function () {
|
|
63
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, (0, _extends2["default"])({}, defaultProps, {
|
|
64
|
+
open: false
|
|
65
|
+
})));
|
|
66
|
+
expect(_react2.screen.queryByText('Help Title')).not.toBeInTheDocument();
|
|
67
|
+
});
|
|
68
|
+
it('displays title correctly', function () {
|
|
69
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, (0, _extends2["default"])({}, defaultProps, {
|
|
70
|
+
title: "Custom Help"
|
|
71
|
+
})));
|
|
72
|
+
expect(_react2.screen.getByText('Custom Help')).toBeInTheDocument();
|
|
73
|
+
});
|
|
74
|
+
it('displays children content', function () {
|
|
75
|
+
var content = 'This is helpful information';
|
|
76
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, (0, _extends2["default"])({}, defaultProps, {
|
|
77
|
+
children: content
|
|
78
|
+
})));
|
|
79
|
+
expect(_react2.screen.getByText(content)).toBeInTheDocument();
|
|
80
|
+
});
|
|
81
|
+
it('calls onClose when OK button is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
82
|
+
var user, onClose, okButton;
|
|
83
|
+
return _regenerator["default"].wrap(function (_context2) {
|
|
84
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
85
|
+
case 0:
|
|
86
|
+
user = _userEvent["default"].setup();
|
|
87
|
+
onClose = jest.fn();
|
|
88
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, (0, _extends2["default"])({}, defaultProps, {
|
|
89
|
+
onClose: onClose
|
|
90
|
+
})));
|
|
91
|
+
okButton = _react2.screen.getByRole('button', {
|
|
92
|
+
name: /OK/i
|
|
93
|
+
});
|
|
94
|
+
_context2.next = 1;
|
|
95
|
+
return user.click(okButton);
|
|
96
|
+
case 1:
|
|
97
|
+
expect(onClose).toHaveBeenCalledTimes(1);
|
|
98
|
+
case 2:
|
|
99
|
+
case "end":
|
|
100
|
+
return _context2.stop();
|
|
101
|
+
}
|
|
102
|
+
}, _callee2);
|
|
103
|
+
})));
|
|
104
|
+
it('calls onClose when dialog is closed via backdrop', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
105
|
+
var user, onClose, dialog;
|
|
106
|
+
return _regenerator["default"].wrap(function (_context3) {
|
|
107
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
108
|
+
case 0:
|
|
109
|
+
user = _userEvent["default"].setup();
|
|
110
|
+
onClose = jest.fn();
|
|
111
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, (0, _extends2["default"])({}, defaultProps, {
|
|
112
|
+
onClose: onClose
|
|
113
|
+
})));
|
|
114
|
+
|
|
115
|
+
// Simulate backdrop click by calling onClose (MUI Dialog prop)
|
|
116
|
+
dialog = _react2.screen.getByRole('dialog', {
|
|
117
|
+
hidden: true
|
|
118
|
+
});
|
|
119
|
+
expect(dialog).toBeInTheDocument();
|
|
120
|
+
case 1:
|
|
121
|
+
case "end":
|
|
122
|
+
return _context3.stop();
|
|
123
|
+
}
|
|
124
|
+
}, _callee3);
|
|
125
|
+
})));
|
|
126
|
+
it('renders OK button', function () {
|
|
127
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, defaultProps));
|
|
128
|
+
var okButton = _react2.screen.getByRole('button', {
|
|
129
|
+
name: /OK/i
|
|
130
|
+
});
|
|
131
|
+
expect(okButton).toBeInTheDocument();
|
|
132
|
+
});
|
|
133
|
+
it('handles multiline children content', function () {
|
|
134
|
+
var content = ['Line 1', 'Line 2', 'Line 3'];
|
|
135
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, defaultProps, content.map(function (line, i) {
|
|
136
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
137
|
+
key: i
|
|
138
|
+
}, line);
|
|
139
|
+
})));
|
|
140
|
+
expect(_react2.screen.getByText('Line 1')).toBeInTheDocument();
|
|
141
|
+
expect(_react2.screen.getByText('Line 2')).toBeInTheDocument();
|
|
142
|
+
expect(_react2.screen.getByText('Line 3')).toBeInTheDocument();
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
describe('Help Component', function () {
|
|
146
|
+
var defaultProps = {
|
|
147
|
+
title: 'Help Title',
|
|
148
|
+
children: 'Help content'
|
|
149
|
+
};
|
|
150
|
+
beforeEach(function () {
|
|
151
|
+
jest.clearAllMocks();
|
|
152
|
+
});
|
|
153
|
+
it('renders help button initially', function () {
|
|
154
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help["default"], defaultProps));
|
|
155
|
+
var button = _react2.screen.getByRole('button');
|
|
156
|
+
expect(button).toBeInTheDocument();
|
|
157
|
+
});
|
|
158
|
+
it('opens dialog when help button is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
159
|
+
var user, button;
|
|
160
|
+
return _regenerator["default"].wrap(function (_context4) {
|
|
161
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
162
|
+
case 0:
|
|
163
|
+
user = _userEvent["default"].setup();
|
|
164
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help["default"], defaultProps));
|
|
165
|
+
button = _react2.screen.getByRole('button');
|
|
166
|
+
_context4.next = 1;
|
|
167
|
+
return user.click(button);
|
|
168
|
+
case 1:
|
|
169
|
+
expect(_react2.screen.getByText('Help Title')).toBeInTheDocument();
|
|
170
|
+
expect(_react2.screen.getByText('Help content')).toBeInTheDocument();
|
|
171
|
+
case 2:
|
|
172
|
+
case "end":
|
|
173
|
+
return _context4.stop();
|
|
174
|
+
}
|
|
175
|
+
}, _callee4);
|
|
176
|
+
})));
|
|
177
|
+
it('closes dialog when OK button is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() {
|
|
178
|
+
var user, helpButton, okButton;
|
|
179
|
+
return _regenerator["default"].wrap(function (_context5) {
|
|
180
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
181
|
+
case 0:
|
|
182
|
+
user = _userEvent["default"].setup();
|
|
183
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help["default"], defaultProps));
|
|
184
|
+
helpButton = _react2.screen.getByRole('button', {
|
|
185
|
+
name: ''
|
|
186
|
+
});
|
|
187
|
+
_context5.next = 1;
|
|
188
|
+
return user.click(helpButton);
|
|
189
|
+
case 1:
|
|
190
|
+
okButton = _react2.screen.getByRole('button', {
|
|
191
|
+
name: /OK/i
|
|
192
|
+
});
|
|
193
|
+
_context5.next = 2;
|
|
194
|
+
return user.click(okButton);
|
|
195
|
+
case 2:
|
|
196
|
+
_context5.next = 3;
|
|
197
|
+
return (0, _react2.waitFor)(function () {
|
|
198
|
+
expect(_react2.screen.queryByText('Help Title')).not.toBeInTheDocument();
|
|
199
|
+
});
|
|
200
|
+
case 3:
|
|
201
|
+
case "end":
|
|
202
|
+
return _context5.stop();
|
|
203
|
+
}
|
|
204
|
+
}, _callee5);
|
|
205
|
+
})));
|
|
206
|
+
it('displays title prop', function () {
|
|
207
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help["default"], {
|
|
208
|
+
title: "Custom Title",
|
|
209
|
+
children: "content"
|
|
210
|
+
}));
|
|
211
|
+
var button = _react2.screen.getByRole('button');
|
|
212
|
+
expect(button).toBeInTheDocument();
|
|
213
|
+
});
|
|
214
|
+
it('displays children prop', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee6() {
|
|
215
|
+
var user, button;
|
|
216
|
+
return _regenerator["default"].wrap(function (_context6) {
|
|
217
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
218
|
+
case 0:
|
|
219
|
+
user = _userEvent["default"].setup();
|
|
220
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
221
|
+
children: "Custom help content"
|
|
222
|
+
})));
|
|
223
|
+
button = _react2.screen.getByRole('button');
|
|
224
|
+
_context6.next = 1;
|
|
225
|
+
return user.click(button);
|
|
226
|
+
case 1:
|
|
227
|
+
expect(_react2.screen.getByText('Custom help content')).toBeInTheDocument();
|
|
228
|
+
case 2:
|
|
229
|
+
case "end":
|
|
230
|
+
return _context6.stop();
|
|
231
|
+
}
|
|
232
|
+
}, _callee6);
|
|
233
|
+
})));
|
|
234
|
+
it('can open and close dialog multiple times', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee7() {
|
|
235
|
+
var user, helpButton, okButton;
|
|
236
|
+
return _regenerator["default"].wrap(function (_context7) {
|
|
237
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
238
|
+
case 0:
|
|
239
|
+
user = _userEvent["default"].setup();
|
|
240
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help["default"], defaultProps));
|
|
241
|
+
helpButton = _react2.screen.getByRole('button', {
|
|
242
|
+
name: ''
|
|
243
|
+
});
|
|
244
|
+
_context7.next = 1;
|
|
245
|
+
return user.click(helpButton);
|
|
246
|
+
case 1:
|
|
247
|
+
expect(_react2.screen.getByText('Help Title')).toBeInTheDocument();
|
|
248
|
+
okButton = _react2.screen.getByRole('button', {
|
|
249
|
+
name: /OK/i
|
|
250
|
+
});
|
|
251
|
+
_context7.next = 2;
|
|
252
|
+
return user.click(okButton);
|
|
253
|
+
case 2:
|
|
254
|
+
_context7.next = 3;
|
|
255
|
+
return (0, _react2.waitFor)(function () {
|
|
256
|
+
expect(_react2.screen.queryByText('Help Title')).not.toBeInTheDocument();
|
|
257
|
+
});
|
|
258
|
+
case 3:
|
|
259
|
+
_context7.next = 4;
|
|
260
|
+
return user.click(helpButton);
|
|
261
|
+
case 4:
|
|
262
|
+
expect(_react2.screen.getByText('Help Title')).toBeInTheDocument();
|
|
263
|
+
case 5:
|
|
264
|
+
case "end":
|
|
265
|
+
return _context7.stop();
|
|
266
|
+
}
|
|
267
|
+
}, _callee7);
|
|
268
|
+
})));
|
|
269
|
+
});
|
|
270
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfdXNlckV2ZW50IiwiX2hlbHAiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZGVzY3JpYmUiLCJpdCIsInJlbmRlciIsImNyZWF0ZUVsZW1lbnQiLCJIZWxwQnV0dG9uIiwiYnV0dG9uIiwic2NyZWVuIiwiZ2V0QnlSb2xlIiwiZXhwZWN0IiwidG9CZUluVGhlRG9jdW1lbnQiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInVzZXIiLCJvbkNsaWNrIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJ1c2VyRXZlbnQiLCJzZXR1cCIsImplc3QiLCJmbiIsImNsaWNrIiwidG9IYXZlQmVlbkNhbGxlZFRpbWVzIiwic3RvcCIsIl9yZW5kZXIiLCJjb250YWluZXIiLCJxdWVyeVNlbGVjdG9yIiwiZGVmYXVsdFByb3BzIiwib3BlbiIsIm9uQ2xvc2UiLCJ0aXRsZSIsImNoaWxkcmVuIiwiYmVmb3JlRWFjaCIsImNsZWFyQWxsTW9ja3MiLCJIZWxwRGlhbG9nIiwiZ2V0QnlUZXh0IiwiX2V4dGVuZHMyIiwicXVlcnlCeVRleHQiLCJub3QiLCJjb250ZW50IiwiX2NhbGxlZTIiLCJva0J1dHRvbiIsIl9jb250ZXh0MiIsIm5hbWUiLCJfY2FsbGVlMyIsImRpYWxvZyIsIl9jb250ZXh0MyIsImhpZGRlbiIsIm1hcCIsImxpbmUiLCJrZXkiLCJfY2FsbGVlNCIsIl9jb250ZXh0NCIsIl9jYWxsZWU1IiwiaGVscEJ1dHRvbiIsIl9jb250ZXh0NSIsIndhaXRGb3IiLCJfY2FsbGVlNiIsIl9jb250ZXh0NiIsIl9jYWxsZWU3IiwiX2NvbnRleHQ3Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy9oZWxwLnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIsIHNjcmVlbiwgd2FpdEZvciB9IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvcmVhY3QnO1xuaW1wb3J0IHVzZXJFdmVudCBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3VzZXItZXZlbnQnO1xuaW1wb3J0IEhlbHAsIHsgSGVscEJ1dHRvbiwgSGVscERpYWxvZyB9IGZyb20gJy4uL2hlbHAnO1xuXG5kZXNjcmliZSgnSGVscEJ1dHRvbicsICgpID0+IHtcbiAgaXQoJ3JlbmRlcnMgaGVscCBpY29uIGJ1dHRvbicsICgpID0+IHtcbiAgICByZW5kZXIoPEhlbHBCdXR0b24gLz4pO1xuICAgIGNvbnN0IGJ1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicpO1xuICAgIGV4cGVjdChidXR0b24pLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdjYWxscyBvbkNsaWNrIHdoZW4gY2xpY2tlZCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgY29uc3Qgb25DbGljayA9IGplc3QuZm4oKTtcbiAgICByZW5kZXIoPEhlbHBCdXR0b24gb25DbGljaz17b25DbGlja30gLz4pO1xuICAgIFxuICAgIGNvbnN0IGJ1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicpO1xuICAgIGF3YWl0IHVzZXIuY2xpY2soYnV0dG9uKTtcbiAgICBcbiAgICBleHBlY3Qob25DbGljaykudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICB9KTtcblxuICBpdCgncmVuZGVycyB3aXRoIGxhcmdlIHNpemUnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8SGVscEJ1dHRvbiAvPik7XG4gICAgY29uc3QgYnV0dG9uID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbltjbGFzcyo9XCJzaXplTGFyZ2VcIl0nKTtcbiAgICBleHBlY3QoYnV0dG9uIHx8IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnSGVscERpYWxvZycsICgpID0+IHtcbiAgY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAgIG9wZW46IHRydWUsXG4gICAgb25DbG9zZTogamVzdC5mbigpLFxuICAgIHRpdGxlOiAnSGVscCBUaXRsZScsXG4gICAgY2hpbGRyZW46ICdIZWxwIGNvbnRlbnQgaGVyZScsXG4gIH07XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgamVzdC5jbGVhckFsbE1vY2tzKCk7XG4gIH0pO1xuXG4gIGl0KCdyZW5kZXJzIHdoZW4gb3BlbiBpcyB0cnVlJywgKCkgPT4ge1xuICAgIHJlbmRlcig8SGVscERpYWxvZyB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0hlbHAgVGl0bGUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnSGVscCBjb250ZW50IGhlcmUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2RvZXMgbm90IHJlbmRlciB3aGVuIG9wZW4gaXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgcmVuZGVyKDxIZWxwRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9IG9wZW49e2ZhbHNlfSAvPik7XG4gICAgZXhwZWN0KHNjcmVlbi5xdWVyeUJ5VGV4dCgnSGVscCBUaXRsZScpKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2Rpc3BsYXlzIHRpdGxlIGNvcnJlY3RseScsICgpID0+IHtcbiAgICByZW5kZXIoPEhlbHBEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gdGl0bGU9XCJDdXN0b20gSGVscFwiIC8+KTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnQ3VzdG9tIEhlbHAnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2Rpc3BsYXlzIGNoaWxkcmVuIGNvbnRlbnQnLCAoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9ICdUaGlzIGlzIGhlbHBmdWwgaW5mb3JtYXRpb24nO1xuICAgIHJlbmRlcig8SGVscERpYWxvZyB7Li4uZGVmYXVsdFByb3BzfSBjaGlsZHJlbj17Y29udGVudH0gLz4pO1xuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KGNvbnRlbnQpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnY2FsbHMgb25DbG9zZSB3aGVuIE9LIGJ1dHRvbiBpcyBjbGlja2VkJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICBjb25zdCBvbkNsb3NlID0gamVzdC5mbigpO1xuICAgIHJlbmRlcig8SGVscERpYWxvZyB7Li4uZGVmYXVsdFByb3BzfSBvbkNsb3NlPXtvbkNsb3NlfSAvPik7XG4gICAgXG4gICAgY29uc3Qgb2tCdXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9PSy9pIH0pO1xuICAgIGF3YWl0IHVzZXIuY2xpY2sob2tCdXR0b24pO1xuICAgIFxuICAgIGV4cGVjdChvbkNsb3NlKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gIH0pO1xuXG4gIGl0KCdjYWxscyBvbkNsb3NlIHdoZW4gZGlhbG9nIGlzIGNsb3NlZCB2aWEgYmFja2Ryb3AnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgIGNvbnN0IG9uQ2xvc2UgPSBqZXN0LmZuKCk7XG4gICAgcmVuZGVyKDxIZWxwRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9IG9uQ2xvc2U9e29uQ2xvc2V9IC8+KTtcbiAgICBcbiAgICAvLyBTaW11bGF0ZSBiYWNrZHJvcCBjbGljayBieSBjYWxsaW5nIG9uQ2xvc2UgKE1VSSBEaWFsb2cgcHJvcClcbiAgICBjb25zdCBkaWFsb2cgPSBzY3JlZW4uZ2V0QnlSb2xlKCdkaWFsb2cnLCB7IGhpZGRlbjogdHJ1ZSB9KTtcbiAgICBleHBlY3QoZGlhbG9nKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgncmVuZGVycyBPSyBidXR0b24nLCAoKSA9PiB7XG4gICAgcmVuZGVyKDxIZWxwRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICBjb25zdCBva0J1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogL09LL2kgfSk7XG4gICAgZXhwZWN0KG9rQnV0dG9uKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnaGFuZGxlcyBtdWx0aWxpbmUgY2hpbGRyZW4gY29udGVudCcsICgpID0+IHtcbiAgICBjb25zdCBjb250ZW50ID0gWydMaW5lIDEnLCAnTGluZSAyJywgJ0xpbmUgMyddO1xuICAgIHJlbmRlcihcbiAgICAgIDxIZWxwRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9PlxuICAgICAgICB7Y29udGVudC5tYXAoKGxpbmUsIGkpID0+IChcbiAgICAgICAgICA8ZGl2IGtleT17aX0+e2xpbmV9PC9kaXY+XG4gICAgICAgICkpfVxuICAgICAgPC9IZWxwRGlhbG9nPlxuICAgICk7XG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0xpbmUgMScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdMaW5lIDInKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnTGluZSAzJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdIZWxwIENvbXBvbmVudCcsICgpID0+IHtcbiAgY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAgIHRpdGxlOiAnSGVscCBUaXRsZScsXG4gICAgY2hpbGRyZW46ICdIZWxwIGNvbnRlbnQnLFxuICB9O1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGplc3QuY2xlYXJBbGxNb2NrcygpO1xuICB9KTtcblxuICBpdCgncmVuZGVycyBoZWxwIGJ1dHRvbiBpbml0aWFsbHknLCAoKSA9PiB7XG4gICAgcmVuZGVyKDxIZWxwIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICBjb25zdCBidXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nKTtcbiAgICBleHBlY3QoYnV0dG9uKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnb3BlbnMgZGlhbG9nIHdoZW4gaGVscCBidXR0b24gaXMgY2xpY2tlZCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgcmVuZGVyKDxIZWxwIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICBcbiAgICBjb25zdCBidXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nKTtcbiAgICBhd2FpdCB1c2VyLmNsaWNrKGJ1dHRvbik7XG4gICAgXG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0hlbHAgVGl0bGUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnSGVscCBjb250ZW50JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdjbG9zZXMgZGlhbG9nIHdoZW4gT0sgYnV0dG9uIGlzIGNsaWNrZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgIHJlbmRlcig8SGVscCB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgXG4gICAgY29uc3QgaGVscEJ1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogJycgfSk7XG4gICAgYXdhaXQgdXNlci5jbGljayhoZWxwQnV0dG9uKTtcbiAgICBcbiAgICBjb25zdCBva0J1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogL09LL2kgfSk7XG4gICAgYXdhaXQgdXNlci5jbGljayhva0J1dHRvbik7XG4gICAgXG4gICAgYXdhaXQgd2FpdEZvcigoKSA9PiB7XG4gICAgICBleHBlY3Qoc2NyZWVuLnF1ZXJ5QnlUZXh0KCdIZWxwIFRpdGxlJykpLm5vdC50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnZGlzcGxheXMgdGl0bGUgcHJvcCcsICgpID0+IHtcbiAgICByZW5kZXIoPEhlbHAgdGl0bGU9XCJDdXN0b20gVGl0bGVcIiBjaGlsZHJlbj1cImNvbnRlbnRcIiAvPik7XG4gICAgY29uc3QgYnV0dG9uID0gc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJyk7XG4gICAgZXhwZWN0KGJ1dHRvbikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2Rpc3BsYXlzIGNoaWxkcmVuIHByb3AnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgIHJlbmRlcig8SGVscCB7Li4uZGVmYXVsdFByb3BzfSBjaGlsZHJlbj1cIkN1c3RvbSBoZWxwIGNvbnRlbnRcIiAvPik7XG4gICAgXG4gICAgY29uc3QgYnV0dG9uID0gc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJyk7XG4gICAgYXdhaXQgdXNlci5jbGljayhidXR0b24pO1xuICAgIFxuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdDdXN0b20gaGVscCBjb250ZW50JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdjYW4gb3BlbiBhbmQgY2xvc2UgZGlhbG9nIG11bHRpcGxlIHRpbWVzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICByZW5kZXIoPEhlbHAgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgIFxuICAgIGNvbnN0IGhlbHBCdXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6ICcnIH0pO1xuICAgIFxuICAgIGF3YWl0IHVzZXIuY2xpY2soaGVscEJ1dHRvbik7XG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0hlbHAgVGl0bGUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICBcbiAgICBsZXQgb2tCdXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9PSy9pIH0pO1xuICAgIGF3YWl0IHVzZXIuY2xpY2sob2tCdXR0b24pO1xuICAgIFxuICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4ge1xuICAgICAgZXhwZWN0KHNjcmVlbi5xdWVyeUJ5VGV4dCgnSGVscCBUaXRsZScpKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgICBcbiAgICBhd2FpdCB1c2VyLmNsaWNrKGhlbHBCdXR0b24pO1xuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdIZWxwIFRpdGxlJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxLQUFBLEdBQUFDLHVCQUFBLENBQUFKLE9BQUE7QUFBdUQsU0FBQUksd0JBQUFDLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFB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
|
|
@@ -0,0 +1,268 @@
|
|
|
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 _input = _interopRequireDefault(require("../input"));
|
|
10
|
+
describe('Input Component', function () {
|
|
11
|
+
var onChange = jest.fn();
|
|
12
|
+
beforeEach(function () {
|
|
13
|
+
onChange.mockClear();
|
|
14
|
+
});
|
|
15
|
+
describe('Rendering', function () {
|
|
16
|
+
it('should render input without label', function () {
|
|
17
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
18
|
+
type: "text",
|
|
19
|
+
value: "test",
|
|
20
|
+
onChange: onChange
|
|
21
|
+
})),
|
|
22
|
+
container = _render.container;
|
|
23
|
+
var input = container.querySelector('input');
|
|
24
|
+
expect(input).toBeInTheDocument();
|
|
25
|
+
expect(input.value).toBe('test');
|
|
26
|
+
});
|
|
27
|
+
it('should render input with label', function () {
|
|
28
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
29
|
+
type: "text",
|
|
30
|
+
label: "Email",
|
|
31
|
+
value: "test@example.com",
|
|
32
|
+
onChange: onChange
|
|
33
|
+
}));
|
|
34
|
+
expect(_react2.screen.getByText('Email')).toBeInTheDocument();
|
|
35
|
+
var input = _react2.screen.getByDisplayValue('test@example.com');
|
|
36
|
+
expect(input).toBeInTheDocument();
|
|
37
|
+
});
|
|
38
|
+
it('should render input with different types', function () {
|
|
39
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
40
|
+
type: "number",
|
|
41
|
+
value: 123,
|
|
42
|
+
onChange: onChange
|
|
43
|
+
})),
|
|
44
|
+
numberContainer = _render2.container;
|
|
45
|
+
expect(numberContainer.querySelector('input[type="number"]')).toBeInTheDocument();
|
|
46
|
+
var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
47
|
+
type: "email",
|
|
48
|
+
value: "test@example.com",
|
|
49
|
+
onChange: onChange
|
|
50
|
+
})),
|
|
51
|
+
emailContainer = _render3.container;
|
|
52
|
+
expect(emailContainer.querySelector('input[type="email"]')).toBeInTheDocument();
|
|
53
|
+
var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
54
|
+
type: "password",
|
|
55
|
+
value: "secret",
|
|
56
|
+
onChange: onChange
|
|
57
|
+
})),
|
|
58
|
+
passwordContainer = _render4.container;
|
|
59
|
+
expect(passwordContainer.querySelector('input[type="password"]')).toBeInTheDocument();
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
describe('Value handling', function () {
|
|
63
|
+
it('should handle string values', function () {
|
|
64
|
+
var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
65
|
+
type: "text",
|
|
66
|
+
value: "hello",
|
|
67
|
+
onChange: onChange
|
|
68
|
+
})),
|
|
69
|
+
container = _render5.container;
|
|
70
|
+
expect(container.querySelector('input').value).toBe('hello');
|
|
71
|
+
});
|
|
72
|
+
it('should handle number values', function () {
|
|
73
|
+
var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
74
|
+
type: "number",
|
|
75
|
+
value: 42,
|
|
76
|
+
onChange: onChange
|
|
77
|
+
})),
|
|
78
|
+
container = _render6.container;
|
|
79
|
+
expect(container.querySelector('input').value).toBe('42');
|
|
80
|
+
});
|
|
81
|
+
it('should handle empty values', function () {
|
|
82
|
+
var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
83
|
+
type: "text",
|
|
84
|
+
value: "",
|
|
85
|
+
onChange: onChange
|
|
86
|
+
})),
|
|
87
|
+
container = _render7.container;
|
|
88
|
+
expect(container.querySelector('input').value).toBe('');
|
|
89
|
+
});
|
|
90
|
+
it('should update when prop changes', function () {
|
|
91
|
+
var _render8 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
92
|
+
type: "text",
|
|
93
|
+
value: "initial",
|
|
94
|
+
onChange: onChange
|
|
95
|
+
})),
|
|
96
|
+
container = _render8.container,
|
|
97
|
+
rerender = _render8.rerender;
|
|
98
|
+
expect(container.querySelector('input').value).toBe('initial');
|
|
99
|
+
rerender(/*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
100
|
+
type: "text",
|
|
101
|
+
value: "updated",
|
|
102
|
+
onChange: onChange
|
|
103
|
+
}));
|
|
104
|
+
expect(container.querySelector('input').value).toBe('updated');
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
describe('onChange behavior', function () {
|
|
108
|
+
it('should call onChange on input change', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
109
|
+
var user, _render9, container, input;
|
|
110
|
+
return _regenerator["default"].wrap(function (_context) {
|
|
111
|
+
while (1) switch (_context.prev = _context.next) {
|
|
112
|
+
case 0:
|
|
113
|
+
user = _userEvent["default"].setup();
|
|
114
|
+
_render9 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
115
|
+
type: "text",
|
|
116
|
+
value: "",
|
|
117
|
+
onChange: onChange
|
|
118
|
+
})), container = _render9.container;
|
|
119
|
+
input = container.querySelector('input');
|
|
120
|
+
_context.next = 1;
|
|
121
|
+
return user.type(input, 'hello');
|
|
122
|
+
case 1:
|
|
123
|
+
expect(onChange).toHaveBeenCalled();
|
|
124
|
+
case 2:
|
|
125
|
+
case "end":
|
|
126
|
+
return _context.stop();
|
|
127
|
+
}
|
|
128
|
+
}, _callee);
|
|
129
|
+
})));
|
|
130
|
+
it('should handle custom error function', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
131
|
+
var user, customError, _render0, container, input;
|
|
132
|
+
return _regenerator["default"].wrap(function (_context2) {
|
|
133
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
134
|
+
case 0:
|
|
135
|
+
user = _userEvent["default"].setup();
|
|
136
|
+
customError = jest.fn(function (value) {
|
|
137
|
+
return value.length < 3;
|
|
138
|
+
});
|
|
139
|
+
_render0 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
140
|
+
type: "text",
|
|
141
|
+
value: "",
|
|
142
|
+
onChange: onChange,
|
|
143
|
+
error: customError
|
|
144
|
+
})), container = _render0.container;
|
|
145
|
+
input = container.querySelector('input');
|
|
146
|
+
_context2.next = 1;
|
|
147
|
+
return user.type(input, 'ab');
|
|
148
|
+
case 1:
|
|
149
|
+
expect(customError).toHaveBeenCalled();
|
|
150
|
+
case 2:
|
|
151
|
+
case "end":
|
|
152
|
+
return _context2.stop();
|
|
153
|
+
}
|
|
154
|
+
}, _callee2);
|
|
155
|
+
})));
|
|
156
|
+
});
|
|
157
|
+
describe('Error state', function () {
|
|
158
|
+
it('should display error state when validation fails', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
159
|
+
var user, customError, _render1, container, input;
|
|
160
|
+
return _regenerator["default"].wrap(function (_context3) {
|
|
161
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
162
|
+
case 0:
|
|
163
|
+
user = _userEvent["default"].setup();
|
|
164
|
+
customError = jest.fn(function () {
|
|
165
|
+
return true;
|
|
166
|
+
});
|
|
167
|
+
_render1 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
168
|
+
type: "text",
|
|
169
|
+
value: "",
|
|
170
|
+
onChange: onChange,
|
|
171
|
+
error: customError
|
|
172
|
+
})), container = _render1.container;
|
|
173
|
+
input = container.querySelector('input');
|
|
174
|
+
_context3.next = 1;
|
|
175
|
+
return user.type(input, 'test');
|
|
176
|
+
case 1:
|
|
177
|
+
expect(customError).toHaveBeenCalled();
|
|
178
|
+
case 2:
|
|
179
|
+
case "end":
|
|
180
|
+
return _context3.stop();
|
|
181
|
+
}
|
|
182
|
+
}, _callee3);
|
|
183
|
+
})));
|
|
184
|
+
it('should clear error state when validation passes', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
185
|
+
var user, customError, _render10, container, input;
|
|
186
|
+
return _regenerator["default"].wrap(function (_context4) {
|
|
187
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
188
|
+
case 0:
|
|
189
|
+
user = _userEvent["default"].setup();
|
|
190
|
+
customError = jest.fn(function (value) {
|
|
191
|
+
return !value;
|
|
192
|
+
});
|
|
193
|
+
_render10 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
194
|
+
type: "text",
|
|
195
|
+
value: "",
|
|
196
|
+
onChange: onChange,
|
|
197
|
+
error: customError
|
|
198
|
+
})), container = _render10.container;
|
|
199
|
+
input = container.querySelector('input');
|
|
200
|
+
_context4.next = 1;
|
|
201
|
+
return user.type(input, 'test');
|
|
202
|
+
case 1:
|
|
203
|
+
// After typing valid content, error should be false
|
|
204
|
+
expect(customError).toHaveBeenCalled();
|
|
205
|
+
case 2:
|
|
206
|
+
case "end":
|
|
207
|
+
return _context4.stop();
|
|
208
|
+
}
|
|
209
|
+
}, _callee4);
|
|
210
|
+
})));
|
|
211
|
+
});
|
|
212
|
+
describe('Props spreading', function () {
|
|
213
|
+
it('should handle disabled state', function () {
|
|
214
|
+
var _render11 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
215
|
+
type: "text",
|
|
216
|
+
value: "",
|
|
217
|
+
onChange: onChange,
|
|
218
|
+
disabled: true
|
|
219
|
+
})),
|
|
220
|
+
container = _render11.container;
|
|
221
|
+
var input = container.querySelector('input');
|
|
222
|
+
expect(input).toBeDisabled();
|
|
223
|
+
});
|
|
224
|
+
it('should handle readonly state', function () {
|
|
225
|
+
var _render12 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
226
|
+
type: "text",
|
|
227
|
+
value: "readonly",
|
|
228
|
+
onChange: onChange,
|
|
229
|
+
readOnly: true
|
|
230
|
+
})),
|
|
231
|
+
container = _render12.container;
|
|
232
|
+
var input = container.querySelector('input');
|
|
233
|
+
expect(input).toHaveAttribute('readonly');
|
|
234
|
+
});
|
|
235
|
+
});
|
|
236
|
+
describe('Default props', function () {
|
|
237
|
+
it('should use default type of text', function () {
|
|
238
|
+
var _render13 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
239
|
+
value: "",
|
|
240
|
+
onChange: onChange
|
|
241
|
+
})),
|
|
242
|
+
container = _render13.container;
|
|
243
|
+
var input = container.querySelector('input');
|
|
244
|
+
expect(input.type).toBe('text');
|
|
245
|
+
});
|
|
246
|
+
it('should use default error function that validates number type', function () {
|
|
247
|
+
var _render14 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
248
|
+
type: "number",
|
|
249
|
+
value: "",
|
|
250
|
+
onChange: onChange
|
|
251
|
+
})),
|
|
252
|
+
container = _render14.container;
|
|
253
|
+
var input = container.querySelector('input');
|
|
254
|
+
expect(input).toBeInTheDocument();
|
|
255
|
+
});
|
|
256
|
+
it('should have noModelUpdateOnError default to false', function () {
|
|
257
|
+
var _render15 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
258
|
+
type: "text",
|
|
259
|
+
value: "",
|
|
260
|
+
onChange: onChange
|
|
261
|
+
})),
|
|
262
|
+
container = _render15.container;
|
|
263
|
+
var input = container.querySelector('input');
|
|
264
|
+
expect(input).toBeInTheDocument();
|
|
265
|
+
});
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfdXNlckV2ZW50IiwiX2lucHV0IiwiZGVzY3JpYmUiLCJvbkNoYW5nZSIsImplc3QiLCJmbiIsImJlZm9yZUVhY2giLCJtb2NrQ2xlYXIiLCJpdCIsIl9yZW5kZXIiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwidHlwZSIsInZhbHVlIiwiY29udGFpbmVyIiwiaW5wdXQiLCJxdWVyeVNlbGVjdG9yIiwiZXhwZWN0IiwidG9CZUluVGhlRG9jdW1lbnQiLCJ0b0JlIiwibGFiZWwiLCJzY3JlZW4iLCJnZXRCeVRleHQiLCJnZXRCeURpc3BsYXlWYWx1ZSIsIl9yZW5kZXIyIiwibnVtYmVyQ29udGFpbmVyIiwiX3JlbmRlcjMiLCJlbWFpbENvbnRhaW5lciIsIl9yZW5kZXI0IiwicGFzc3dvcmRDb250YWluZXIiLCJfcmVuZGVyNSIsIl9yZW5kZXI2IiwiX3JlbmRlcjciLCJfcmVuZGVyOCIsInJlcmVuZGVyIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJ1c2VyIiwiX3JlbmRlcjkiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInVzZXJFdmVudCIsInNldHVwIiwidG9IYXZlQmVlbkNhbGxlZCIsInN0b3AiLCJfY2FsbGVlMiIsImN1c3RvbUVycm9yIiwiX3JlbmRlcjAiLCJfY29udGV4dDIiLCJsZW5ndGgiLCJlcnJvciIsIl9jYWxsZWUzIiwiX3JlbmRlcjEiLCJfY29udGV4dDMiLCJfY2FsbGVlNCIsIl9yZW5kZXIxMCIsIl9jb250ZXh0NCIsIl9yZW5kZXIxMSIsImRpc2FibGVkIiwidG9CZURpc2FibGVkIiwiX3JlbmRlcjEyIiwicmVhZE9ubHkiLCJ0b0hhdmVBdHRyaWJ1dGUiLCJfcmVuZGVyMTMiLCJfcmVuZGVyMTQiLCJfcmVuZGVyMTUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2lucHV0LnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIsIHNjcmVlbiwgd2FpdEZvciB9IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvcmVhY3QnO1xuaW1wb3J0IHVzZXJFdmVudCBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3VzZXItZXZlbnQnO1xuaW1wb3J0IElucHV0IGZyb20gJy4uL2lucHV0JztcblxuZGVzY3JpYmUoJ0lucHV0IENvbXBvbmVudCcsICgpID0+IHtcbiAgY29uc3Qgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgb25DaGFuZ2UubW9ja0NsZWFyKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdSZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZW5kZXIgaW5wdXQgd2l0aG91dCBsYWJlbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxJbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPVwidGVzdFwiIG9uQ2hhbmdlPXtvbkNoYW5nZX0gLz4sXG4gICAgICApO1xuXG4gICAgICBjb25zdCBpbnB1dCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICAgICAgZXhwZWN0KGlucHV0KS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KGlucHV0LnZhbHVlKS50b0JlKCd0ZXN0Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlbmRlciBpbnB1dCB3aXRoIGxhYmVsJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8SW5wdXQgdHlwZT1cInRleHRcIiBsYWJlbD1cIkVtYWlsXCIgdmFsdWU9XCJ0ZXN0QGV4YW1wbGUuY29tXCIgb25DaGFuZ2U9e29uQ2hhbmdlfSAvPixcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdFbWFpbCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgY29uc3QgaW5wdXQgPSBzY3JlZW4uZ2V0QnlEaXNwbGF5VmFsdWUoJ3Rlc3RAZXhhbXBsZS5jb20nKTtcbiAgICAgIGV4cGVjdChpbnB1dCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVuZGVyIGlucHV0IHdpdGggZGlmZmVyZW50IHR5cGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXI6IG51bWJlckNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8SW5wdXQgdHlwZT1cIm51bWJlclwiIHZhbHVlPXsxMjN9IG9uQ2hhbmdlPXtvbkNoYW5nZX0gLz4sXG4gICAgICApO1xuICAgICAgZXhwZWN0KG51bWJlckNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwibnVtYmVyXCJdJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG5cbiAgICAgIGNvbnN0IHsgY29udGFpbmVyOiBlbWFpbENvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8SW5wdXQgdHlwZT1cImVtYWlsXCIgdmFsdWU9XCJ0ZXN0QGV4YW1wbGUuY29tXCIgb25DaGFuZ2U9e29uQ2hhbmdlfSAvPixcbiAgICAgICk7XG4gICAgICBleHBlY3QoZW1haWxDb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cImVtYWlsXCJdJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG5cbiAgICAgIGNvbnN0IHsgY29udGFpbmVyOiBwYXNzd29yZENvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8SW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgdmFsdWU9XCJzZWNyZXRcIiBvbkNoYW5nZT17b25DaGFuZ2V9IC8+LFxuICAgICAgKTtcbiAgICAgIGV4cGVjdChwYXNzd29yZENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0nKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1ZhbHVlIGhhbmRsaW5nJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgaGFuZGxlIHN0cmluZyB2YWx1ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8SW5wdXQgdHlwZT1cInRleHRcIiB2YWx1ZT1cImhlbGxvXCIgb25DaGFuZ2U9e29uQ2hhbmdlfSAvPixcbiAgICAgICk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykudmFsdWUpLnRvQmUoJ2hlbGxvJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBudW1iZXIgdmFsdWVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPElucHV0IHR5cGU9XCJudW1iZXJcIiB2YWx1ZT17NDJ9IG9uQ2hhbmdlPXtvbkNoYW5nZX0gLz4sXG4gICAgICApO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLnZhbHVlKS50b0JlKCc0MicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgZW1wdHkgdmFsdWVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPElucHV0IHR5cGU9XCJ0ZXh0XCIgdmFsdWU9XCJcIiBvbkNoYW5nZT17b25DaGFuZ2V9IC8+LFxuICAgICAgKTtcbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZSkudG9CZSgnJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHVwZGF0ZSB3aGVuIHByb3AgY2hhbmdlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyLCByZXJlbmRlciB9ID0gcmVuZGVyKFxuICAgICAgICA8SW5wdXQgdHlwZT1cInRleHRcIiB2YWx1ZT1cImluaXRpYWxcIiBvbkNoYW5nZT17b25DaGFuZ2V9IC8+LFxuICAgICAgKTtcbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZSkudG9CZSgnaW5pdGlhbCcpO1xuXG4gICAgICByZXJlbmRlcig8SW5wdXQgdHlwZT1cInRleHRcIiB2YWx1ZT1cInVwZGF0ZWRcIiBvbkNoYW5nZT17b25DaGFuZ2V9IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZSkudG9CZSgndXBkYXRlZCcpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnb25DaGFuZ2UgYmVoYXZpb3InLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBjYWxsIG9uQ2hhbmdlIG9uIGlucHV0IGNoYW5nZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxJbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPVwiXCIgb25DaGFuZ2U9e29uQ2hhbmdlfSAvPixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGlucHV0ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgICBhd2FpdCB1c2VyLnR5cGUoaW5wdXQsICdoZWxsbycpO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGN1c3RvbSBlcnJvciBmdW5jdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICAgIGNvbnN0IGN1c3RvbUVycm9yID0gamVzdC5mbigodmFsdWUpID0+IHZhbHVlLmxlbmd0aCA8IDMpO1xuICAgICAgXG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8SW5wdXQgdHlwZT1cInRleHRcIiB2YWx1ZT1cIlwiIG9uQ2hhbmdlPXtvbkNoYW5nZX0gZXJyb3I9e2N1c3RvbUVycm9yfSAvPixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGlucHV0ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgICBhd2FpdCB1c2VyLnR5cGUoaW5wdXQsICdhYicpO1xuXG4gICAgICBleHBlY3QoY3VzdG9tRXJyb3IpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0Vycm9yIHN0YXRlJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgZGlzcGxheSBlcnJvciBzdGF0ZSB3aGVuIHZhbGlkYXRpb24gZmFpbHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICBjb25zdCBjdXN0b21FcnJvciA9IGplc3QuZm4oKCkgPT4gdHJ1ZSk7XG4gICAgICBcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxJbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPVwiXCIgb25DaGFuZ2U9e29uQ2hhbmdlfSBlcnJvcj17Y3VzdG9tRXJyb3J9IC8+LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgaW5wdXQgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgICAgIGF3YWl0IHVzZXIudHlwZShpbnB1dCwgJ3Rlc3QnKTtcblxuICAgICAgZXhwZWN0KGN1c3RvbUVycm9yKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNsZWFyIGVycm9yIHN0YXRlIHdoZW4gdmFsaWRhdGlvbiBwYXNzZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICBjb25zdCBjdXN0b21FcnJvciA9IGplc3QuZm4oKHZhbHVlKSA9PiAhdmFsdWUpO1xuICAgICAgXG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8SW5wdXQgdHlwZT1cInRleHRcIiB2YWx1ZT1cIlwiIG9uQ2hhbmdlPXtvbkNoYW5nZX0gZXJyb3I9e2N1c3RvbUVycm9yfSAvPixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGlucHV0ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgICBhd2FpdCB1c2VyLnR5cGUoaW5wdXQsICd0ZXN0Jyk7XG5cbiAgICAgIC8vIEFmdGVyIHR5cGluZyB2YWxpZCBjb250ZW50LCBlcnJvciBzaG91bGQgYmUgZmFsc2VcbiAgICAgIGV4cGVjdChjdXN0b21FcnJvcikudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnUHJvcHMgc3ByZWFkaW5nJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgaGFuZGxlIGRpc2FibGVkIHN0YXRlJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPElucHV0IHR5cGU9XCJ0ZXh0XCIgdmFsdWU9XCJcIiBvbkNoYW5nZT17b25DaGFuZ2V9IGRpc2FibGVkIC8+LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgaW5wdXQgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgICAgIGV4cGVjdChpbnB1dCkudG9CZURpc2FibGVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSByZWFkb25seSBzdGF0ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxJbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPVwicmVhZG9ubHlcIiBvbkNoYW5nZT17b25DaGFuZ2V9IHJlYWRPbmx5IC8+LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgaW5wdXQgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgICAgIGV4cGVjdChpbnB1dCkudG9IYXZlQXR0cmlidXRlKCdyZWFkb25seScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRGVmYXVsdCBwcm9wcycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHVzZSBkZWZhdWx0IHR5cGUgb2YgdGV4dCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxJbnB1dCB2YWx1ZT1cIlwiIG9uQ2hhbmdlPXtvbkNoYW5nZX0gLz4sXG4gICAgICApO1xuXG4gICAgICBjb25zdCBpbnB1dCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICAgICAgZXhwZWN0KGlucHV0LnR5cGUpLnRvQmUoJ3RleHQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdXNlIGRlZmF1bHQgZXJyb3IgZnVuY3Rpb24gdGhhdCB2YWxpZGF0ZXMgbnVtYmVyIHR5cGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8SW5wdXQgdHlwZT1cIm51bWJlclwiIHZhbHVlPVwiXCIgb25DaGFuZ2U9e29uQ2hhbmdlfSAvPixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGlucHV0ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgICBleHBlY3QoaW5wdXQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhdmUgbm9Nb2RlbFVwZGF0ZU9uRXJyb3IgZGVmYXVsdCB0byBmYWxzZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxJbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPVwiXCIgb25DaGFuZ2U9e29uQ2hhbmdlfSAvPixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGlucHV0ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgICBleHBlY3QoaW5wdXQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBRUFJLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxZQUFNO0VBQ2hDLElBQU1DLFFBQVEsR0FBR0MsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztFQUUxQkMsVUFBVSxDQUFDLFlBQU07SUFDZkgsUUFBUSxDQUFDSSxTQUFTLENBQUMsQ0FBQztFQUN0QixDQUFDLENBQUM7RUFFRkwsUUFBUSxDQUFDLFdBQVcsRUFBRSxZQUFNO0lBQzFCTSxFQUFFLENBQUMsbUNBQW1DLEVBQUUsWUFBTTtNQUM1QyxJQUFBQyxPQUFBLEdBQXNCLElBQUFDLGNBQU0sZUFDMUJkLE1BQUEsWUFBQWUsYUFBQSxDQUFDVixNQUFBLFdBQUs7VUFBQ1csSUFBSSxFQUFDLE1BQU07VUFBQ0MsS0FBSyxFQUFDLE1BQU07VUFBQ1YsUUFBUSxFQUFFQTtRQUFTLENBQUUsQ0FDdkQsQ0FBQztRQUZPVyxTQUFTLEdBQUFMLE9BQUEsQ0FBVEssU0FBUztNQUlqQixJQUFNQyxLQUFLLEdBQUdELFNBQVMsQ0FBQ0UsYUFBYSxDQUFDLE9BQU8sQ0FBQztNQUM5Q0MsTUFBTSxDQUFDRixLQUFLLENBQUMsQ0FBQ0csaUJBQWlCLENBQUMsQ0FBQztNQUNqQ0QsTUFBTSxDQUFDRixLQUFLLENBQUNGLEtBQUssQ0FBQyxDQUFDTSxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ2xDLENBQUMsQ0FBQztJQUVGWCxFQUFFLENBQUMsZ0NBQWdD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
|