@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,287 @@
|
|
|
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 _feedbackMenu = _interopRequireDefault(require("../feedback-menu"));
|
|
10
|
+
describe('feedback-menu', function () {
|
|
11
|
+
var onChange = jest.fn();
|
|
12
|
+
beforeEach(function () {
|
|
13
|
+
onChange.mockClear();
|
|
14
|
+
});
|
|
15
|
+
describe('rendering', function () {
|
|
16
|
+
it('renders feedback menu with default options', function () {
|
|
17
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
18
|
+
onChange: onChange,
|
|
19
|
+
classes: {}
|
|
20
|
+
})),
|
|
21
|
+
container = _render.container;
|
|
22
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
23
|
+
});
|
|
24
|
+
it('renders menu with feedback type selector', function () {
|
|
25
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
26
|
+
onChange: onChange,
|
|
27
|
+
value: {
|
|
28
|
+
type: 'default'
|
|
29
|
+
},
|
|
30
|
+
classes: {}
|
|
31
|
+
}));
|
|
32
|
+
// Menu button should be in the document
|
|
33
|
+
expect(_react2.screen.getByRole('button')).toBeInTheDocument();
|
|
34
|
+
});
|
|
35
|
+
it('renders with no feedback type', function () {
|
|
36
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
37
|
+
onChange: onChange,
|
|
38
|
+
value: {
|
|
39
|
+
type: 'none'
|
|
40
|
+
},
|
|
41
|
+
classes: {}
|
|
42
|
+
}));
|
|
43
|
+
expect(_react2.screen.getByRole('button')).toBeInTheDocument();
|
|
44
|
+
});
|
|
45
|
+
it('renders with custom feedback type', function () {
|
|
46
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
47
|
+
onChange: onChange,
|
|
48
|
+
value: {
|
|
49
|
+
type: 'custom'
|
|
50
|
+
},
|
|
51
|
+
classes: {}
|
|
52
|
+
}));
|
|
53
|
+
expect(_react2.screen.getByRole('button')).toBeInTheDocument();
|
|
54
|
+
});
|
|
55
|
+
it('renders feedback icon button', function () {
|
|
56
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
57
|
+
onChange: onChange,
|
|
58
|
+
classes: {}
|
|
59
|
+
}));
|
|
60
|
+
var button = _react2.screen.getByRole('button');
|
|
61
|
+
expect(button).toBeInTheDocument();
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
describe('user interactions', function () {
|
|
65
|
+
it('opens menu when button is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
66
|
+
var user, button;
|
|
67
|
+
return _regenerator["default"].wrap(function (_context) {
|
|
68
|
+
while (1) switch (_context.prev = _context.next) {
|
|
69
|
+
case 0:
|
|
70
|
+
user = _userEvent["default"].setup();
|
|
71
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
72
|
+
onChange: onChange,
|
|
73
|
+
value: {
|
|
74
|
+
type: 'default'
|
|
75
|
+
},
|
|
76
|
+
classes: {}
|
|
77
|
+
}));
|
|
78
|
+
button = _react2.screen.getByRole('button');
|
|
79
|
+
_context.next = 1;
|
|
80
|
+
return user.click(button);
|
|
81
|
+
case 1:
|
|
82
|
+
// Menu items should appear
|
|
83
|
+
expect(_react2.screen.getByText('No Feedback')).toBeInTheDocument();
|
|
84
|
+
expect(_react2.screen.getByText('Default')).toBeInTheDocument();
|
|
85
|
+
expect(_react2.screen.getByText('Custom')).toBeInTheDocument();
|
|
86
|
+
case 2:
|
|
87
|
+
case "end":
|
|
88
|
+
return _context.stop();
|
|
89
|
+
}
|
|
90
|
+
}, _callee);
|
|
91
|
+
})));
|
|
92
|
+
it('calls onChange with "none" when No Feedback is selected', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
93
|
+
var user, button, noFeedbackOption;
|
|
94
|
+
return _regenerator["default"].wrap(function (_context2) {
|
|
95
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
96
|
+
case 0:
|
|
97
|
+
user = _userEvent["default"].setup();
|
|
98
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
99
|
+
onChange: onChange,
|
|
100
|
+
value: {
|
|
101
|
+
type: 'default'
|
|
102
|
+
},
|
|
103
|
+
classes: {}
|
|
104
|
+
}));
|
|
105
|
+
button = _react2.screen.getByRole('button');
|
|
106
|
+
_context2.next = 1;
|
|
107
|
+
return user.click(button);
|
|
108
|
+
case 1:
|
|
109
|
+
noFeedbackOption = _react2.screen.getByText('No Feedback');
|
|
110
|
+
_context2.next = 2;
|
|
111
|
+
return user.click(noFeedbackOption);
|
|
112
|
+
case 2:
|
|
113
|
+
expect(onChange).toHaveBeenCalledWith('none');
|
|
114
|
+
case 3:
|
|
115
|
+
case "end":
|
|
116
|
+
return _context2.stop();
|
|
117
|
+
}
|
|
118
|
+
}, _callee2);
|
|
119
|
+
})));
|
|
120
|
+
it('calls onChange with "default" when Default is selected', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
121
|
+
var user, button, defaultOption;
|
|
122
|
+
return _regenerator["default"].wrap(function (_context3) {
|
|
123
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
124
|
+
case 0:
|
|
125
|
+
user = _userEvent["default"].setup();
|
|
126
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
127
|
+
onChange: onChange,
|
|
128
|
+
value: {
|
|
129
|
+
type: 'none'
|
|
130
|
+
},
|
|
131
|
+
classes: {}
|
|
132
|
+
}));
|
|
133
|
+
button = _react2.screen.getByRole('button');
|
|
134
|
+
_context3.next = 1;
|
|
135
|
+
return user.click(button);
|
|
136
|
+
case 1:
|
|
137
|
+
defaultOption = _react2.screen.getByText('Default');
|
|
138
|
+
_context3.next = 2;
|
|
139
|
+
return user.click(defaultOption);
|
|
140
|
+
case 2:
|
|
141
|
+
expect(onChange).toHaveBeenCalledWith('default');
|
|
142
|
+
case 3:
|
|
143
|
+
case "end":
|
|
144
|
+
return _context3.stop();
|
|
145
|
+
}
|
|
146
|
+
}, _callee3);
|
|
147
|
+
})));
|
|
148
|
+
it('calls onChange with "custom" when Custom is selected', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
149
|
+
var user, button, customOption;
|
|
150
|
+
return _regenerator["default"].wrap(function (_context4) {
|
|
151
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
152
|
+
case 0:
|
|
153
|
+
user = _userEvent["default"].setup();
|
|
154
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
155
|
+
onChange: onChange,
|
|
156
|
+
value: {
|
|
157
|
+
type: 'none'
|
|
158
|
+
},
|
|
159
|
+
classes: {}
|
|
160
|
+
}));
|
|
161
|
+
button = _react2.screen.getByRole('button');
|
|
162
|
+
_context4.next = 1;
|
|
163
|
+
return user.click(button);
|
|
164
|
+
case 1:
|
|
165
|
+
customOption = _react2.screen.getByText('Custom');
|
|
166
|
+
_context4.next = 2;
|
|
167
|
+
return user.click(customOption);
|
|
168
|
+
case 2:
|
|
169
|
+
expect(onChange).toHaveBeenCalledWith('custom');
|
|
170
|
+
case 3:
|
|
171
|
+
case "end":
|
|
172
|
+
return _context4.stop();
|
|
173
|
+
}
|
|
174
|
+
}, _callee4);
|
|
175
|
+
})));
|
|
176
|
+
it('closes menu after selection', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() {
|
|
177
|
+
var user, button, noFeedbackOption;
|
|
178
|
+
return _regenerator["default"].wrap(function (_context5) {
|
|
179
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
180
|
+
case 0:
|
|
181
|
+
user = _userEvent["default"].setup();
|
|
182
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
183
|
+
onChange: onChange,
|
|
184
|
+
value: {
|
|
185
|
+
type: 'default'
|
|
186
|
+
},
|
|
187
|
+
classes: {}
|
|
188
|
+
}));
|
|
189
|
+
button = _react2.screen.getByRole('button');
|
|
190
|
+
_context5.next = 1;
|
|
191
|
+
return user.click(button);
|
|
192
|
+
case 1:
|
|
193
|
+
expect(_react2.screen.getByText('No Feedback')).toBeInTheDocument();
|
|
194
|
+
noFeedbackOption = _react2.screen.getByText('No Feedback');
|
|
195
|
+
_context5.next = 2;
|
|
196
|
+
return user.click(noFeedbackOption);
|
|
197
|
+
case 2:
|
|
198
|
+
// Menu should close after selection
|
|
199
|
+
expect(onChange).toHaveBeenCalledWith('none');
|
|
200
|
+
case 3:
|
|
201
|
+
case "end":
|
|
202
|
+
return _context5.stop();
|
|
203
|
+
}
|
|
204
|
+
}, _callee5);
|
|
205
|
+
})));
|
|
206
|
+
});
|
|
207
|
+
describe('feedback type indicators', function () {
|
|
208
|
+
it('shows correct icon color for default feedback', function () {
|
|
209
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
210
|
+
onChange: onChange,
|
|
211
|
+
value: {
|
|
212
|
+
type: 'default'
|
|
213
|
+
},
|
|
214
|
+
classes: {}
|
|
215
|
+
})),
|
|
216
|
+
container = _render2.container;
|
|
217
|
+
// Icon should be present with primary color
|
|
218
|
+
expect(container.querySelector('svg')).toBeInTheDocument();
|
|
219
|
+
});
|
|
220
|
+
it('shows correct icon color for custom feedback', function () {
|
|
221
|
+
var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
222
|
+
onChange: onChange,
|
|
223
|
+
value: {
|
|
224
|
+
type: 'custom'
|
|
225
|
+
},
|
|
226
|
+
classes: {}
|
|
227
|
+
})),
|
|
228
|
+
container = _render3.container;
|
|
229
|
+
// Icon should be present with primary color
|
|
230
|
+
expect(container.querySelector('svg')).toBeInTheDocument();
|
|
231
|
+
});
|
|
232
|
+
it('shows correct icon color for disabled feedback', function () {
|
|
233
|
+
var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
234
|
+
onChange: onChange,
|
|
235
|
+
value: {
|
|
236
|
+
type: 'none'
|
|
237
|
+
},
|
|
238
|
+
classes: {}
|
|
239
|
+
})),
|
|
240
|
+
container = _render4.container;
|
|
241
|
+
// Icon should be present with disabled color
|
|
242
|
+
expect(container.querySelector('svg')).toBeInTheDocument();
|
|
243
|
+
});
|
|
244
|
+
});
|
|
245
|
+
describe('aria labels', function () {
|
|
246
|
+
it('has aria-label on button for default feedback', function () {
|
|
247
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
248
|
+
onChange: onChange,
|
|
249
|
+
value: {
|
|
250
|
+
type: 'default'
|
|
251
|
+
},
|
|
252
|
+
classes: {}
|
|
253
|
+
}));
|
|
254
|
+
var button = _react2.screen.getByRole('button', {
|
|
255
|
+
name: /Default Feedback/i
|
|
256
|
+
});
|
|
257
|
+
expect(button).toBeInTheDocument();
|
|
258
|
+
});
|
|
259
|
+
it('has aria-label on button for custom feedback', function () {
|
|
260
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
261
|
+
onChange: onChange,
|
|
262
|
+
value: {
|
|
263
|
+
type: 'custom'
|
|
264
|
+
},
|
|
265
|
+
classes: {}
|
|
266
|
+
}));
|
|
267
|
+
var button = _react2.screen.getByRole('button', {
|
|
268
|
+
name: /Custom Feedback/i
|
|
269
|
+
});
|
|
270
|
+
expect(button).toBeInTheDocument();
|
|
271
|
+
});
|
|
272
|
+
it('has aria-label on button for disabled feedback', function () {
|
|
273
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
|
|
274
|
+
onChange: onChange,
|
|
275
|
+
value: {
|
|
276
|
+
type: 'none'
|
|
277
|
+
},
|
|
278
|
+
classes: {}
|
|
279
|
+
}));
|
|
280
|
+
var button = _react2.screen.getByRole('button', {
|
|
281
|
+
name: /Feedback disabled/i
|
|
282
|
+
});
|
|
283
|
+
expect(button).toBeInTheDocument();
|
|
284
|
+
});
|
|
285
|
+
});
|
|
286
|
+
});
|
|
287
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfdXNlckV2ZW50IiwiX2ZlZWRiYWNrTWVudSIsImRlc2NyaWJlIiwib25DaGFuZ2UiLCJqZXN0IiwiZm4iLCJiZWZvcmVFYWNoIiwibW9ja0NsZWFyIiwiaXQiLCJfcmVuZGVyIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzZXMiLCJjb250YWluZXIiLCJleHBlY3QiLCJmaXJzdENoaWxkIiwidG9CZUluVGhlRG9jdW1lbnQiLCJ2YWx1ZSIsInR5cGUiLCJzY3JlZW4iLCJnZXRCeVJvbGUiLCJidXR0b24iLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInVzZXIiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInVzZXJFdmVudCIsInNldHVwIiwiY2xpY2siLCJnZXRCeVRleHQiLCJzdG9wIiwiX2NhbGxlZTIiLCJub0ZlZWRiYWNrT3B0aW9uIiwiX2NvbnRleHQyIiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiLCJfY2FsbGVlMyIsImRlZmF1bHRPcHRpb24iLCJfY29udGV4dDMiLCJfY2FsbGVlNCIsImN1c3RvbU9wdGlvbiIsIl9jb250ZXh0NCIsIl9jYWxsZWU1IiwiX2NvbnRleHQ1IiwiX3JlbmRlcjIiLCJxdWVyeVNlbGVjdG9yIiwiX3JlbmRlcjMiLCJfcmVuZGVyNCIsIm5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2hvaWNlLWNvbmZpZ3VyYXRpb24vX190ZXN0c19fL2ZlZWRiYWNrLW1lbnUudGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlbmRlciwgc2NyZWVuIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgdXNlckV2ZW50IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvdXNlci1ldmVudCc7XG5pbXBvcnQgRmVlZGJhY2tNZW51IGZyb20gJy4uL2ZlZWRiYWNrLW1lbnUnO1xuXG5kZXNjcmliZSgnZmVlZGJhY2stbWVudScsICgpID0+IHtcbiAgY29uc3Qgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgb25DaGFuZ2UubW9ja0NsZWFyKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgZmVlZGJhY2sgbWVudSB3aXRoIGRlZmF1bHQgb3B0aW9ucycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEZlZWRiYWNrTWVudSBvbkNoYW5nZT17b25DaGFuZ2V9IGNsYXNzZXM9e3t9fSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBtZW51IHdpdGggZmVlZGJhY2sgdHlwZSBzZWxlY3RvcicsICgpID0+IHtcbiAgICAgIHJlbmRlcig8RmVlZGJhY2tNZW51IG9uQ2hhbmdlPXtvbkNoYW5nZX0gdmFsdWU9e3sgdHlwZTogJ2RlZmF1bHQnIH19IGNsYXNzZXM9e3t9fSAvPik7XG4gICAgICAvLyBNZW51IGJ1dHRvbiBzaG91bGQgYmUgaW4gdGhlIGRvY3VtZW50XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIG5vIGZlZWRiYWNrIHR5cGUnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoPEZlZWRiYWNrTWVudSBvbkNoYW5nZT17b25DaGFuZ2V9IHZhbHVlPXt7IHR5cGU6ICdub25lJyB9fSBjbGFzc2VzPXt7fX0gLz4pO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgd2l0aCBjdXN0b20gZmVlZGJhY2sgdHlwZScsICgpID0+IHtcbiAgICAgIHJlbmRlcig8RmVlZGJhY2tNZW51IG9uQ2hhbmdlPXtvbkNoYW5nZX0gdmFsdWU9e3sgdHlwZTogJ2N1c3RvbScgfX0gY2xhc3Nlcz17e319IC8+KTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIGZlZWRiYWNrIGljb24gYnV0dG9uJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKDxGZWVkYmFja01lbnUgb25DaGFuZ2U9e29uQ2hhbmdlfSBjbGFzc2VzPXt7fX0gLz4pO1xuICAgICAgY29uc3QgYnV0dG9uID0gc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJyk7XG4gICAgICBleHBlY3QoYnV0dG9uKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndXNlciBpbnRlcmFjdGlvbnMnLCAoKSA9PiB7XG4gICAgaXQoJ29wZW5zIG1lbnUgd2hlbiBidXR0b24gaXMgY2xpY2tlZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICAgIHJlbmRlcig8RmVlZGJhY2tNZW51IG9uQ2hhbmdlPXtvbkNoYW5nZX0gdmFsdWU9e3sgdHlwZTogJ2RlZmF1bHQnIH19IGNsYXNzZXM9e3t9fSAvPik7XG5cbiAgICAgIGNvbnN0IGJ1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicpO1xuICAgICAgYXdhaXQgdXNlci5jbGljayhidXR0b24pO1xuXG4gICAgICAvLyBNZW51IGl0ZW1zIHNob3VsZCBhcHBlYXJcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdObyBGZWVkYmFjaycpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0RlZmF1bHQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdDdXN0b20nKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdjYWxscyBvbkNoYW5nZSB3aXRoIFwibm9uZVwiIHdoZW4gTm8gRmVlZGJhY2sgaXMgc2VsZWN0ZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICByZW5kZXIoPEZlZWRiYWNrTWVudSBvbkNoYW5nZT17b25DaGFuZ2V9IHZhbHVlPXt7IHR5cGU6ICdkZWZhdWx0JyB9fSBjbGFzc2VzPXt7fX0gLz4pO1xuXG4gICAgICBjb25zdCBidXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nKTtcbiAgICAgIGF3YWl0IHVzZXIuY2xpY2soYnV0dG9uKTtcblxuICAgICAgY29uc3Qgbm9GZWVkYmFja09wdGlvbiA9IHNjcmVlbi5nZXRCeVRleHQoJ05vIEZlZWRiYWNrJyk7XG4gICAgICBhd2FpdCB1c2VyLmNsaWNrKG5vRmVlZGJhY2tPcHRpb24pO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdub25lJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnY2FsbHMgb25DaGFuZ2Ugd2l0aCBcImRlZmF1bHRcIiB3aGVuIERlZmF1bHQgaXMgc2VsZWN0ZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICByZW5kZXIoPEZlZWRiYWNrTWVudSBvbkNoYW5nZT17b25DaGFuZ2V9IHZhbHVlPXt7IHR5cGU6ICdub25lJyB9fSBjbGFzc2VzPXt7fX0gLz4pO1xuXG4gICAgICBjb25zdCBidXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nKTtcbiAgICAgIGF3YWl0IHVzZXIuY2xpY2soYnV0dG9uKTtcblxuICAgICAgY29uc3QgZGVmYXVsdE9wdGlvbiA9IHNjcmVlbi5nZXRCeVRleHQoJ0RlZmF1bHQnKTtcbiAgICAgIGF3YWl0IHVzZXIuY2xpY2soZGVmYXVsdE9wdGlvbik7XG5cbiAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2RlZmF1bHQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdjYWxscyBvbkNoYW5nZSB3aXRoIFwiY3VzdG9tXCIgd2hlbiBDdXN0b20gaXMgc2VsZWN0ZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICByZW5kZXIoPEZlZWRiYWNrTWVudSBvbkNoYW5nZT17b25DaGFuZ2V9IHZhbHVlPXt7IHR5cGU6ICdub25lJyB9fSBjbGFzc2VzPXt7fX0gLz4pO1xuXG4gICAgICBjb25zdCBidXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nKTtcbiAgICAgIGF3YWl0IHVzZXIuY2xpY2soYnV0dG9uKTtcblxuICAgICAgY29uc3QgY3VzdG9tT3B0aW9uID0gc2NyZWVuLmdldEJ5VGV4dCgnQ3VzdG9tJyk7XG4gICAgICBhd2FpdCB1c2VyLmNsaWNrKGN1c3RvbU9wdGlvbik7XG5cbiAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2N1c3RvbScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Nsb3NlcyBtZW51IGFmdGVyIHNlbGVjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICAgIHJlbmRlcig8RmVlZGJhY2tNZW51IG9uQ2hhbmdlPXtvbkNoYW5nZX0gdmFsdWU9e3sgdHlwZTogJ2RlZmF1bHQnIH19IGNsYXNzZXM9e3t9fSAvPik7XG5cbiAgICAgIGNvbnN0IGJ1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicpO1xuICAgICAgYXdhaXQgdXNlci5jbGljayhidXR0b24pO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnTm8gRmVlZGJhY2snKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcblxuICAgICAgY29uc3Qgbm9GZWVkYmFja09wdGlvbiA9IHNjcmVlbi5nZXRCeVRleHQoJ05vIEZlZWRiYWNrJyk7XG4gICAgICBhd2FpdCB1c2VyLmNsaWNrKG5vRmVlZGJhY2tPcHRpb24pO1xuXG4gICAgICAvLyBNZW51IHNob3VsZCBjbG9zZSBhZnRlciBzZWxlY3Rpb25cbiAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ25vbmUnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2ZlZWRiYWNrIHR5cGUgaW5kaWNhdG9ycycsICgpID0+IHtcbiAgICBpdCgnc2hvd3MgY29ycmVjdCBpY29uIGNvbG9yIGZvciBkZWZhdWx0IGZlZWRiYWNrJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZlZWRiYWNrTWVudSBvbkNoYW5nZT17b25DaGFuZ2V9IHZhbHVlPXt7IHR5cGU6ICdkZWZhdWx0JyB9fSBjbGFzc2VzPXt7fX0gLz5cbiAgICAgICk7XG4gICAgICAvLyBJY29uIHNob3VsZCBiZSBwcmVzZW50IHdpdGggcHJpbWFyeSBjb2xvclxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG93cyBjb3JyZWN0IGljb24gY29sb3IgZm9yIGN1c3RvbSBmZWVkYmFjaycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxGZWVkYmFja01lbnUgb25DaGFuZ2U9e29uQ2hhbmdlfSB2YWx1ZT17eyB0eXBlOiAnY3VzdG9tJyB9fSBjbGFzc2VzPXt7fX0gLz5cbiAgICAgICk7XG4gICAgICAvLyBJY29uIHNob3VsZCBiZSBwcmVzZW50IHdpdGggcHJpbWFyeSBjb2xvclxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG93cyBjb3JyZWN0IGljb24gY29sb3IgZm9yIGRpc2FibGVkIGZlZWRiYWNrJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZlZWRiYWNrTWVudSBvbkNoYW5nZT17b25DaGFuZ2V9IHZhbHVlPXt7IHR5cGU6ICdub25lJyB9fSBjbGFzc2VzPXt7fX0gLz5cbiAgICAgICk7XG4gICAgICAvLyBJY29uIHNob3VsZCBiZSBwcmVzZW50IHdpdGggZGlzYWJsZWQgY29sb3JcbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdhcmlhIGxhYmVscycsICgpID0+IHtcbiAgICBpdCgnaGFzIGFyaWEtbGFiZWwgb24gYnV0dG9uIGZvciBkZWZhdWx0IGZlZWRiYWNrJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8RmVlZGJhY2tNZW51IG9uQ2hhbmdlPXtvbkNoYW5nZX0gdmFsdWU9e3sgdHlwZTogJ2RlZmF1bHQnIH19IGNsYXNzZXM9e3t9fSAvPlxuICAgICAgKTtcbiAgICAgIGNvbnN0IGJ1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogL0RlZmF1bHQgRmVlZGJhY2svaSB9KTtcbiAgICAgIGV4cGVjdChidXR0b24pLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIGFyaWEtbGFiZWwgb24gYnV0dG9uIGZvciBjdXN0b20gZmVlZGJhY2snLCAoKSA9PiB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxGZWVkYmFja01lbnUgb25DaGFuZ2U9e29uQ2hhbmdlfSB2YWx1ZT17eyB0eXBlOiAnY3VzdG9tJyB9fSBjbGFzc2VzPXt7fX0gLz5cbiAgICAgICk7XG4gICAgICBjb25zdCBidXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9DdXN0b20gRmVlZGJhY2svaSB9KTtcbiAgICAgIGV4cGVjdChidXR0b24pLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIGFyaWEtbGFiZWwgb24gYnV0dG9uIGZvciBkaXNhYmxlZCBmZWVkYmFjaycsICgpID0+IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPEZlZWRiYWNrTWVudSBvbkNoYW5nZT17b25DaGFuZ2V9IHZhbHVlPXt7IHR5cGU6ICdub25lJyB9fSBjbGFzc2VzPXt7fX0gLz5cbiAgICAgICk7XG4gICAgICBjb25zdCBidXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9GZWVkYmFjayBkaXNhYmxlZC9pIH0pO1xuICAgICAgZXhwZWN0KGJ1dHRvbikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxhQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFFQUksUUFBUSxDQUFDLGVBQWUsRUFBRSxZQUFNO0VBQzlCLElBQU1DLFFBQVEsR0FBR0MsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztFQUUxQkMsVUFBVSxDQUFDLFlBQU07SUFDZkgsUUFBUSxDQUFDSSxTQUFTLENBQUMsQ0FBQztFQUN0QixDQUFDLENBQUM7RUFFRkwsUUFBUSxDQUFDLFdBQVcsRUFBRSxZQUFNO0lBQzFCTSxFQUFFLENBQUMsNENBQTRDLEVBQUUs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
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
5
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
6
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _react2 = require("@testing-library/react");
|
|
9
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
10
|
+
var _index = require("../index");
|
|
11
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
12
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
13
|
+
jest.mock('@pie-lib/editable-html', function () {
|
|
14
|
+
return {
|
|
15
|
+
__esModule: true,
|
|
16
|
+
"default": function _default(_ref) {
|
|
17
|
+
var markup = _ref.markup,
|
|
18
|
+
_onChange = _ref.onChange,
|
|
19
|
+
disabled = _ref.disabled;
|
|
20
|
+
return /*#__PURE__*/_react["default"].createElement("textarea", {
|
|
21
|
+
"data-testid": "editable-html",
|
|
22
|
+
defaultValue: markup || '',
|
|
23
|
+
onChange: function onChange(e) {
|
|
24
|
+
return _onChange(e.target.value);
|
|
25
|
+
},
|
|
26
|
+
disabled: disabled
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
var defaultFeedback = {
|
|
32
|
+
correct: 'Correct',
|
|
33
|
+
incorrect: 'Incorrect'
|
|
34
|
+
};
|
|
35
|
+
var data = {
|
|
36
|
+
correct: true,
|
|
37
|
+
value: 'foo',
|
|
38
|
+
label: 'Foo',
|
|
39
|
+
feedback: {
|
|
40
|
+
type: 'custom'
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
var classes = {
|
|
44
|
+
choiceConfiguration: 'choiceConfiguration'
|
|
45
|
+
};
|
|
46
|
+
describe('ChoiceConfiguration', function () {
|
|
47
|
+
var onChange = jest.fn();
|
|
48
|
+
beforeEach(function () {
|
|
49
|
+
onChange.mockClear();
|
|
50
|
+
});
|
|
51
|
+
describe('rendering', function () {
|
|
52
|
+
it('renders correctly with default props', function () {
|
|
53
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
54
|
+
classes: classes,
|
|
55
|
+
defaultFeedback: defaultFeedback,
|
|
56
|
+
data: data,
|
|
57
|
+
onChange: onChange
|
|
58
|
+
})),
|
|
59
|
+
container = _render.container;
|
|
60
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
61
|
+
});
|
|
62
|
+
it('renders with checked state', function () {
|
|
63
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
64
|
+
classes: classes,
|
|
65
|
+
defaultFeedback: defaultFeedback,
|
|
66
|
+
data: data,
|
|
67
|
+
onChange: onChange,
|
|
68
|
+
mode: "checkbox"
|
|
69
|
+
}));
|
|
70
|
+
var checkbox = _react2.screen.getByRole('checkbox');
|
|
71
|
+
expect(checkbox).toBeChecked();
|
|
72
|
+
});
|
|
73
|
+
it('renders without feedback when allowFeedBack is false', function () {
|
|
74
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
75
|
+
allowFeedBack: false,
|
|
76
|
+
classes: classes,
|
|
77
|
+
defaultFeedback: defaultFeedback,
|
|
78
|
+
data: data,
|
|
79
|
+
onChange: onChange
|
|
80
|
+
}));
|
|
81
|
+
expect(_react2.screen.queryByRole('button', {
|
|
82
|
+
name: /feedback/i
|
|
83
|
+
})).not.toBeInTheDocument();
|
|
84
|
+
});
|
|
85
|
+
it('renders without delete button when allowDelete is false', function () {
|
|
86
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
87
|
+
allowDelete: false,
|
|
88
|
+
classes: classes,
|
|
89
|
+
defaultFeedback: defaultFeedback,
|
|
90
|
+
data: data,
|
|
91
|
+
onChange: onChange
|
|
92
|
+
}));
|
|
93
|
+
expect(_react2.screen.queryByRole('button', {
|
|
94
|
+
name: /delete/i
|
|
95
|
+
})).not.toBeInTheDocument();
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
describe('user interactions', function () {
|
|
99
|
+
it('calls onChange when label is edited', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
100
|
+
var user, editableHtmlElements, editableHtml;
|
|
101
|
+
return _regenerator["default"].wrap(function (_context) {
|
|
102
|
+
while (1) switch (_context.prev = _context.next) {
|
|
103
|
+
case 0:
|
|
104
|
+
user = _userEvent["default"].setup();
|
|
105
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
106
|
+
classes: classes,
|
|
107
|
+
defaultFeedback: defaultFeedback,
|
|
108
|
+
data: data,
|
|
109
|
+
onChange: onChange
|
|
110
|
+
}));
|
|
111
|
+
editableHtmlElements = _react2.screen.getAllByTestId('editable-html');
|
|
112
|
+
editableHtml = editableHtmlElements[0];
|
|
113
|
+
_context.next = 1;
|
|
114
|
+
return user.clear(editableHtml);
|
|
115
|
+
case 1:
|
|
116
|
+
_context.next = 2;
|
|
117
|
+
return user.type(editableHtml, 'new label');
|
|
118
|
+
case 2:
|
|
119
|
+
expect(onChange).toHaveBeenCalled();
|
|
120
|
+
expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
|
|
121
|
+
label: expect.stringContaining('new label')
|
|
122
|
+
}));
|
|
123
|
+
case 3:
|
|
124
|
+
case "end":
|
|
125
|
+
return _context.stop();
|
|
126
|
+
}
|
|
127
|
+
}, _callee);
|
|
128
|
+
})));
|
|
129
|
+
it('calls onChange when checkbox is toggled', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
130
|
+
var user, checkbox;
|
|
131
|
+
return _regenerator["default"].wrap(function (_context2) {
|
|
132
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
133
|
+
case 0:
|
|
134
|
+
user = _userEvent["default"].setup();
|
|
135
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
136
|
+
classes: classes,
|
|
137
|
+
defaultFeedback: defaultFeedback,
|
|
138
|
+
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
139
|
+
correct: false
|
|
140
|
+
}),
|
|
141
|
+
onChange: onChange,
|
|
142
|
+
mode: "checkbox"
|
|
143
|
+
}));
|
|
144
|
+
checkbox = _react2.screen.getByRole('checkbox');
|
|
145
|
+
_context2.next = 1;
|
|
146
|
+
return user.click(checkbox);
|
|
147
|
+
case 1:
|
|
148
|
+
expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
|
|
149
|
+
correct: true
|
|
150
|
+
}));
|
|
151
|
+
case 2:
|
|
152
|
+
case "end":
|
|
153
|
+
return _context2.stop();
|
|
154
|
+
}
|
|
155
|
+
}, _callee2);
|
|
156
|
+
})));
|
|
157
|
+
});
|
|
158
|
+
describe('prop variations', function () {
|
|
159
|
+
it('renders with radio mode instead of checkbox', function () {
|
|
160
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
161
|
+
classes: classes,
|
|
162
|
+
defaultFeedback: defaultFeedback,
|
|
163
|
+
data: data,
|
|
164
|
+
onChange: onChange,
|
|
165
|
+
mode: "radio"
|
|
166
|
+
}));
|
|
167
|
+
var radio = _react2.screen.getByRole('radio');
|
|
168
|
+
expect(radio).toBeInTheDocument();
|
|
169
|
+
});
|
|
170
|
+
it('renders with disabled state', function () {
|
|
171
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
172
|
+
classes: classes,
|
|
173
|
+
defaultFeedback: defaultFeedback,
|
|
174
|
+
data: data,
|
|
175
|
+
onChange: onChange,
|
|
176
|
+
disabled: true,
|
|
177
|
+
mode: "checkbox"
|
|
178
|
+
}));
|
|
179
|
+
var checkbox = _react2.screen.getByRole('checkbox');
|
|
180
|
+
expect(checkbox).toBeInTheDocument();
|
|
181
|
+
});
|
|
182
|
+
it('renders with custom feedback type', function () {
|
|
183
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
184
|
+
classes: classes,
|
|
185
|
+
defaultFeedback: defaultFeedback,
|
|
186
|
+
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
187
|
+
feedback: {
|
|
188
|
+
type: 'custom'
|
|
189
|
+
}
|
|
190
|
+
}),
|
|
191
|
+
onChange: onChange,
|
|
192
|
+
mode: "checkbox"
|
|
193
|
+
}));
|
|
194
|
+
var editableElements = _react2.screen.getAllByTestId('editable-html');
|
|
195
|
+
expect(editableElements.length).toBeGreaterThan(0);
|
|
196
|
+
});
|
|
197
|
+
it('renders with incorrect answer', function () {
|
|
198
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
199
|
+
classes: classes,
|
|
200
|
+
defaultFeedback: defaultFeedback,
|
|
201
|
+
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
202
|
+
correct: false
|
|
203
|
+
}),
|
|
204
|
+
onChange: onChange,
|
|
205
|
+
mode: "checkbox"
|
|
206
|
+
}));
|
|
207
|
+
var checkbox = _react2.screen.getByRole('checkbox');
|
|
208
|
+
expect(checkbox).not.toBeChecked();
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
describe('edge cases', function () {
|
|
212
|
+
it('handles data with empty label', function () {
|
|
213
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
214
|
+
classes: classes,
|
|
215
|
+
defaultFeedback: defaultFeedback,
|
|
216
|
+
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
217
|
+
label: ''
|
|
218
|
+
}),
|
|
219
|
+
onChange: onChange
|
|
220
|
+
}));
|
|
221
|
+
var editableElements = _react2.screen.getAllByTestId('editable-html');
|
|
222
|
+
expect(editableElements.length).toBeGreaterThan(0);
|
|
223
|
+
});
|
|
224
|
+
it('handles multiple feedback types', function () {
|
|
225
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
226
|
+
classes: classes,
|
|
227
|
+
defaultFeedback: defaultFeedback,
|
|
228
|
+
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
229
|
+
feedback: {
|
|
230
|
+
type: 'default'
|
|
231
|
+
}
|
|
232
|
+
}),
|
|
233
|
+
onChange: onChange
|
|
234
|
+
})),
|
|
235
|
+
rerender = _render2.rerender;
|
|
236
|
+
var editableElements = _react2.screen.getAllByTestId('editable-html');
|
|
237
|
+
expect(editableElements.length).toBeGreaterThan(0);
|
|
238
|
+
rerender(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
239
|
+
classes: classes,
|
|
240
|
+
defaultFeedback: defaultFeedback,
|
|
241
|
+
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
242
|
+
feedback: {
|
|
243
|
+
type: 'custom'
|
|
244
|
+
}
|
|
245
|
+
}),
|
|
246
|
+
onChange: onChange
|
|
247
|
+
}));
|
|
248
|
+
editableElements = _react2.screen.getAllByTestId('editable-html');
|
|
249
|
+
expect(editableElements.length).toBeGreaterThan(0);
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfdXNlckV2ZW50IiwiX2luZGV4Iiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJqZXN0IiwibW9jayIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX3JlZiIsIm1hcmt1cCIsIm9uQ2hhbmdlIiwiZGlzYWJsZWQiLCJjcmVhdGVFbGVtZW50IiwiZGVmYXVsdFZhbHVlIiwidGFyZ2V0IiwidmFsdWUiLCJkZWZhdWx0RmVlZGJhY2siLCJjb3JyZWN0IiwiaW5jb3JyZWN0IiwiZGF0YSIsImxhYmVsIiwiZmVlZGJhY2siLCJ0eXBlIiwiY2xhc3NlcyIsImNob2ljZUNvbmZpZ3VyYXRpb24iLCJkZXNjcmliZSIsImZuIiwiYmVmb3JlRWFjaCIsIm1vY2tDbGVhciIsIml0IiwiX3JlbmRlciIsInJlbmRlciIsIkNob2ljZUNvbmZpZ3VyYXRpb24iLCJjb250YWluZXIiLCJleHBlY3QiLCJmaXJzdENoaWxkIiwidG9CZUluVGhlRG9jdW1lbnQiLCJtb2RlIiwiY2hlY2tib3giLCJzY3JlZW4iLCJnZXRCeVJvbGUiLCJ0b0JlQ2hlY2tlZCIsImFsbG93RmVlZEJhY2siLCJxdWVyeUJ5Um9sZSIsIm5hbWUiLCJub3QiLCJhbGxvd0RlbGV0ZSIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwidXNlciIsImVkaXRhYmxlSHRtbEVsZW1lbnRzIiwiZWRpdGFibGVIdG1sIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJ1c2VyRXZlbnQiLCJzZXR1cCIsImdldEFsbEJ5VGVzdElkIiwiY2xlYXIiLCJ0b0hhdmVCZWVuQ2FsbGVkIiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiLCJvYmplY3RDb250YWluaW5nIiwic3RyaW5nQ29udGFpbmluZyIsInN0b3AiLCJfY2FsbGVlMiIsIl9jb250ZXh0MiIsImNsaWNrIiwicmFkaW8iLCJlZGl0YWJsZUVsZW1lbnRzIiwidG9CZUdyZWF0ZXJUaGFuIiwiX3JlbmRlcjIiLCJyZXJlbmRlciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jaG9pY2UtY29uZmlndXJhdGlvbi9fX3Rlc3RzX18vaW5kZXgudGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlbmRlciwgc2NyZWVuIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgdXNlckV2ZW50IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvdXNlci1ldmVudCc7XG5pbXBvcnQgeyBDaG9pY2VDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vaW5kZXgnO1xuXG5qZXN0Lm1vY2soJ0BwaWUtbGliL2VkaXRhYmxlLWh0bWwnLCAoKSA9PiAoe1xuICBfX2VzTW9kdWxlOiB0cnVlLFxuICBkZWZhdWx0OiAoeyBtYXJrdXAsIG9uQ2hhbmdlLCBkaXNhYmxlZCB9KSA9PiAoXG4gICAgPHRleHRhcmVhXG4gICAgICBkYXRhLXRlc3RpZD1cImVkaXRhYmxlLWh0bWxcIlxuICAgICAgZGVmYXVsdFZhbHVlPXttYXJrdXAgfHwgJyd9XG4gICAgICBvbkNoYW5nZT17KGUpID0+IG9uQ2hhbmdlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAvPlxuICApLFxufSkpO1xuXG5jb25zdCBkZWZhdWx0RmVlZGJhY2sgPSB7XG4gIGNvcnJlY3Q6ICdDb3JyZWN0JyxcbiAgaW5jb3JyZWN0OiAnSW5jb3JyZWN0Jyxcbn07XG5cbmNvbnN0IGRhdGEgPSB7XG4gIGNvcnJlY3Q6IHRydWUsXG4gIHZhbHVlOiAnZm9vJyxcbiAgbGFiZWw6ICdGb28nLFxuICBmZWVkYmFjazoge1xuICAgIHR5cGU6ICdjdXN0b20nLFxuICB9LFxufTtcblxuY29uc3QgY2xhc3NlcyA9IHtcbiAgY2hvaWNlQ29uZmlndXJhdGlvbjogJ2Nob2ljZUNvbmZpZ3VyYXRpb24nLFxufTtcblxuZGVzY3JpYmUoJ0Nob2ljZUNvbmZpZ3VyYXRpb24nLCAoKSA9PiB7XG4gIGNvbnN0IG9uQ2hhbmdlID0gamVzdC5mbigpO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIG9uQ2hhbmdlLm1vY2tDbGVhcigpO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVuZGVyaW5nJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIGNvcnJlY3RseSB3aXRoIGRlZmF1bHQgcHJvcHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8Q2hvaWNlQ29uZmlndXJhdGlvbiBjbGFzc2VzPXtjbGFzc2VzfSBkZWZhdWx0RmVlZGJhY2s9e2RlZmF1bHRGZWVkYmFja30gZGF0YT17ZGF0YX0gb25DaGFuZ2U9e29uQ2hhbmdlfSAvPixcbiAgICAgICk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGNoZWNrZWQgc3RhdGUnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxDaG9pY2VDb25maWd1cmF0aW9uXG4gICAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgICBkZWZhdWx0RmVlZGJhY2s9e2RlZmF1bHRGZWVkYmFja31cbiAgICAgICAgICBkYXRhPXtkYXRhfVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICBtb2RlPVwiY2hlY2tib3hcIlxuICAgICAgICAvPixcbiAgICAgICk7XG4gICAgICBjb25zdCBjaGVja2JveCA9IHNjcmVlbi5nZXRCeVJvbGUoJ2NoZWNrYm94Jyk7XG4gICAgICBleHBlY3QoY2hlY2tib3gpLnRvQmVDaGVja2VkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRob3V0IGZlZWRiYWNrIHdoZW4gYWxsb3dGZWVkQmFjayBpcyBmYWxzZScsICgpID0+IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPENob2ljZUNvbmZpZ3VyYXRpb25cbiAgICAgICAgICBhbGxvd0ZlZWRCYWNrPXtmYWxzZX1cbiAgICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICAgIGRlZmF1bHRGZWVkYmFjaz17ZGVmYXVsdEZlZWRiYWNrfVxuICAgICAgICAgIGRhdGE9e2RhdGF9XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAvPixcbiAgICAgICk7XG4gICAgICBleHBlY3Qoc2NyZWVuLnF1ZXJ5QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9mZWVkYmFjay9pIH0pKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGhvdXQgZGVsZXRlIGJ1dHRvbiB3aGVuIGFsbG93RGVsZXRlIGlzIGZhbHNlJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Q2hvaWNlQ29uZmlndXJhdGlvblxuICAgICAgICAgIGFsbG93RGVsZXRlPXtmYWxzZX1cbiAgICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICAgIGRlZmF1bHRGZWVkYmFjaz17ZGVmYXVsdEZlZWRiYWNrfVxuICAgICAgICAgIGRhdGE9e2RhdGF9XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAvPixcbiAgICAgICk7XG4gICAgICBleHBlY3Qoc2NyZWVuLnF1ZXJ5QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9kZWxldGUvaSB9KSkubm90LnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd1c2VyIGludGVyYWN0aW9ucycsICgpID0+IHtcbiAgICBpdCgnY2FsbHMgb25DaGFuZ2Ugd2hlbiBsYWJlbCBpcyBlZGl0ZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxDaG9pY2VDb25maWd1cmF0aW9uIGNsYXNzZXM9e2NsYXNzZXN9IGRlZmF1bHRGZWVkYmFjaz17ZGVmYXVsdEZlZWRiYWNrfSBkYXRhPXtkYXRhfSBvbkNoYW5nZT17b25DaGFuZ2V9IC8+LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgZWRpdGFibGVIdG1sRWxlbWVudHMgPSBzY3JlZW4uZ2V0QWxsQnlUZXN0SWQoJ2VkaXRhYmxlLWh0bWwnKTtcbiAgICAgIGNvbnN0IGVkaXRhYmxlSHRtbCA9IGVkaXRhYmxlSHRtbEVsZW1lbnRzWzBdO1xuICAgICAgYXdhaXQgdXNlci5jbGVhcihlZGl0YWJsZUh0bWwpO1xuICAgICAgYXdhaXQgdXNlci50eXBlKGVkaXRhYmxlSHRtbCwgJ25ldyBsYWJlbCcpO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgICAgICBsYWJlbDogZXhwZWN0LnN0cmluZ0NvbnRhaW5pbmcoJ25ldyBsYWJlbCcpLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnY2FsbHMgb25DaGFuZ2Ugd2hlbiBjaGVja2JveCBpcyB0b2dnbGVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Q2hvaWNlQ29uZmlndXJhdGlvblxuICAgICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgICAgZGVmYXVsdEZlZWRiYWNrPXtkZWZhdWx0RmVlZGJhY2t9XG4gICAgICAgICAgZGF0YT17eyAuLi5kYXRhLCBjb3JyZWN0OiBmYWxzZSB9fVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICBtb2RlPVwiY2hlY2tib3hcIlxuICAgICAgICAvPixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGNoZWNrYm94ID0gc2NyZWVuLmdldEJ5Um9sZSgnY2hlY2tib3gnKTtcbiAgICAgIGF3YWl0IHVzZXIuY2xpY2soY2hlY2tib3gpO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICAgICAgY29ycmVjdDogdHJ1ZSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncHJvcCB2YXJpYXRpb25zJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGggcmFkaW8gbW9kZSBpbnN0ZWFkIG9mIGNoZWNrYm94JywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Q2hvaWNlQ29uZmlndXJhdGlvblxuICAgICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgICAgZGVmYXVsdEZlZWRiYWNrPXtkZWZhdWx0RmVlZGJhY2t9XG4gICAgICAgICAgZGF0YT17ZGF0YX1cbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgbW9kZT1cInJhZGlvXCJcbiAgICAgICAgLz4sXG4gICAgICApO1xuICAgICAgY29uc3QgcmFkaW8gPSBzY3JlZW4uZ2V0QnlSb2xlKCdyYWRpbycpO1xuICAgICAgZXhwZWN0KHJhZGlvKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgd2l0aCBkaXNhYmxlZCBzdGF0ZScsICgpID0+IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPENob2ljZUNvbmZpZ3VyYXRpb25cbiAgICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICAgIGRlZmF1bHRGZWVkYmFjaz17ZGVmYXVsdEZlZWRiYWNrfVxuICAgICAgICAgIGRhdGE9e2RhdGF9XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgIGRpc2FibGVkPXt0cnVlfVxuICAgICAgICAgIG1vZGU9XCJjaGVja2JveFwiXG4gICAgICAgIC8+LFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNoZWNrYm94ID0gc2NyZWVuLmdldEJ5Um9sZSgnY2hlY2tib3gnKTtcbiAgICAgIGV4cGVjdChjaGVja2JveCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggY3VzdG9tIGZlZWRiYWNrIHR5cGUnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxDaG9pY2VDb25maWd1cmF0aW9uXG4gICAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgICBkZWZhdWx0RmVlZGJhY2s9e2RlZmF1bHRGZWVkYmFja31cbiAgICAgICAgICBkYXRhPXt7IC4uLmRhdGEsIGZlZWRiYWNrOiB7IHR5cGU6ICdjdXN0b20nIH0gfX1cbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgbW9kZT1cImNoZWNrYm94XCJcbiAgICAgICAgLz4sXG4gICAgICApO1xuICAgICAgY29uc3QgZWRpdGFibGVFbGVtZW50cyA9IHNjcmVlbi5nZXRBbGxCeVRlc3RJZCgnZWRpdGFibGUtaHRtbCcpO1xuICAgICAgZXhwZWN0KGVkaXRhYmxlRWxlbWVudHMubGVuZ3RoKS50b0JlR3JlYXRlclRoYW4oMCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGluY29ycmVjdCBhbnN3ZXInLCAoKSA9PiB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxDaG9pY2VDb25maWd1cmF0aW9uXG4gICAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgICBkZWZhdWx0RmVlZGJhY2s9e2RlZmF1bHRGZWVkYmFja31cbiAgICAgICAgICBkYXRhPXt7IC4uLmRhdGEsIGNvcnJlY3Q6IGZhbHNlIH19XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgIG1vZGU9XCJjaGVja2JveFwiXG4gICAgICAgIC8+LFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNoZWNrYm94ID0gc2NyZWVuLmdldEJ5Um9sZSgnY2hlY2tib3gnKTtcbiAgICAgIGV4cGVjdChjaGVja2JveCkubm90LnRvQmVDaGVja2VkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdlZGdlIGNhc2VzJywgKCkgPT4ge1xuICAgIGl0KCdoYW5kbGVzIGRhdGEgd2l0aCBlbXB0eSBsYWJlbCcsICgpID0+IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPENob2ljZUNvbmZpZ3VyYXRpb25cbiAgICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICAgIGRlZmF1bHRGZWVkYmFjaz17ZGVmYXVsdEZlZWRiYWNrfVxuICAgICAgICAgIGRhdGE9e3sgLi4uZGF0YSwgbGFiZWw6ICcnIH19XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAvPixcbiAgICAgICk7XG4gICAgICBjb25zdCBlZGl0YWJsZUVsZW1lbnRzID0gc2NyZWVuLmdldEFsbEJ5VGVzdElkKCdlZGl0YWJsZS1odG1sJyk7XG4gICAgICBleHBlY3QoZWRpdGFibGVFbGVtZW50cy5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYW5kbGVzIG11bHRpcGxlIGZlZWRiYWNrIHR5cGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyByZXJlbmRlciB9ID0gcmVuZGVyKFxuICAgICAgICA8Q2hvaWNlQ29uZmlndXJhdGlvblxuICAgICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgICAgZGVmYXVsdEZlZWRiYWNrPXtkZWZhdWx0RmVlZGJhY2t9XG4gICAgICAgICAgZGF0YT17eyAuLi5kYXRhLCBmZWVkYmFjazogeyB0eXBlOiAnZGVmYXVsdCcgfSB9fVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICBsZXQgZWRpdGFibGVFbGVtZW50cyA9IHNjcmVlbi5nZXRBbGxCeVRlc3RJZCgnZWRpdGFibGUtaHRtbCcpO1xuICAgICAgZXhwZWN0KGVkaXRhYmxlRWxlbWVudHMubGVuZ3RoKS50b0JlR3JlYXRlclRoYW4oMCk7XG5cbiAgICAgIHJlcmVuZGVyKFxuICAgICAgICA8Q2hvaWNlQ29uZmlndXJhdGlvblxuICAgICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgICAgZGVmYXVsdEZlZWRiYWNrPXtkZWZhdWx0RmVlZGJhY2t9XG4gICAgICAgICAgZGF0YT17eyAuLi5kYXRhLCBmZWVkYmFjazogeyB0eXBlOiAnY3VzdG9tJyB9IH19XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAvPixcbiAgICAgICk7XG5cbiAgICAgIGVkaXRhYmxlRWxlbWVudHMgPSBzY3JlZW4uZ2V0QWxsQnlUZXN0SWQoJ2VkaXRhYmxlLWh0bWwnKTtcbiAgICAgIGV4cGVjdChlZGl0YWJsZUVsZW1lbnRzLmxlbmd0aCkudG9CZUdyZWF0ZXJUaGFuKDApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFILHNCQUFBLENBQUFDLE9B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
|