@pie-lib/config-ui 12.2.0-next.2 → 12.2.0-next.4
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 +27 -43
- package/LICENSE.md +5 -0
- package/lib/alert-dialog.js +1 -1
- package/lib/checkbox.js +1 -1
- package/lib/choice-configuration/feedback-menu.js +1 -1
- package/lib/choice-configuration/index.js +1 -1
- package/lib/choice-utils.js +1 -1
- package/lib/feedback-config/feedback-selector.js +1 -1
- package/lib/feedback-config/group.js +1 -1
- package/lib/feedback-config/index.js +1 -1
- package/lib/form-section.js +1 -1
- package/lib/help.js +1 -1
- package/lib/index.js +1 -1
- package/lib/input.js +1 -1
- package/lib/inputs.js +1 -1
- package/lib/langs.js +1 -1
- package/lib/layout/config-layout.js +1 -1
- package/lib/layout/index.js +1 -1
- package/lib/layout/layout-contents.js +1 -1
- package/lib/layout/settings-box.js +1 -1
- package/lib/mui-box/index.js +1 -1
- package/lib/number-text-field-custom.js +1 -1
- package/lib/number-text-field.js +1 -1
- package/lib/radio-with-label.js +1 -1
- package/lib/settings/display-size.js +1 -1
- package/lib/settings/index.js +1 -1
- package/lib/settings/panel.js +1 -1
- package/lib/settings/settings-radio-label.js +1 -1
- package/lib/settings/toggle.js +1 -1
- package/lib/tabs/index.js +1 -1
- package/lib/tags-input/index.js +1 -1
- package/lib/two-choice.js +1 -1
- package/lib/with-stateful-model.js +1 -1
- package/package.json +3 -3
- package/lib/__tests__/alert-dialog.test.js +0 -262
- package/lib/__tests__/checkbox.test.js +0 -227
- package/lib/__tests__/choice-utils.test.js +0 -14
- package/lib/__tests__/form-section.test.js +0 -252
- package/lib/__tests__/help.test.js +0 -270
- package/lib/__tests__/input.test.js +0 -268
- package/lib/__tests__/langs.test.js +0 -541
- package/lib/__tests__/number-text-field-custom.test.js +0 -362
- package/lib/__tests__/number-text-field.test.js +0 -421
- package/lib/__tests__/radio-with-label.test.js +0 -233
- package/lib/__tests__/settings-panel.test.js +0 -184
- package/lib/__tests__/settings.test.js +0 -653
- package/lib/__tests__/tabs.test.js +0 -211
- package/lib/__tests__/two-choice.test.js +0 -124
- package/lib/__tests__/with-stateful-model.test.js +0 -221
- package/lib/choice-configuration/__tests__/feedback-menu.test.js +0 -287
- package/lib/choice-configuration/__tests__/index.test.js +0 -253
- package/lib/feedback-config/__tests__/feedback-config.test.js +0 -201
- package/lib/feedback-config/__tests__/feedback-selector.test.js +0 -177
- package/lib/layout/__tests__/config.layout.test.js +0 -70
- package/lib/layout/__tests__/layout-content.test.js +0 -6
- package/lib/tags-input/__tests__/index.test.js +0 -183
|
@@ -1,252 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _react = _interopRequireDefault(require("react"));
|
|
5
|
-
var _react2 = require("@testing-library/react");
|
|
6
|
-
var _formSection = _interopRequireDefault(require("../form-section"));
|
|
7
|
-
describe('FormSection Component', function () {
|
|
8
|
-
describe('Rendering', function () {
|
|
9
|
-
it('should render with label and children', function () {
|
|
10
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
11
|
-
label: "Settings"
|
|
12
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, "Child content")));
|
|
13
|
-
expect(_react2.screen.getByText('Settings')).toBeInTheDocument();
|
|
14
|
-
expect(_react2.screen.getByText('Child content')).toBeInTheDocument();
|
|
15
|
-
});
|
|
16
|
-
it('should render label as subtitle1 typography', function () {
|
|
17
|
-
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
18
|
-
label: "Configuration"
|
|
19
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
20
|
-
container = _render.container;
|
|
21
|
-
var typography = container.querySelector('[class*="MuiTypography"]');
|
|
22
|
-
expect(typography).toBeInTheDocument();
|
|
23
|
-
});
|
|
24
|
-
it('should render with custom className', function () {
|
|
25
|
-
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
26
|
-
label: "Custom",
|
|
27
|
-
className: "custom-class"
|
|
28
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
29
|
-
container = _render2.container;
|
|
30
|
-
expect(container.querySelector('.custom-class')).toBeInTheDocument();
|
|
31
|
-
});
|
|
32
|
-
it('should render multiple children', function () {
|
|
33
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
34
|
-
label: "Multiple Children"
|
|
35
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, "First child"), /*#__PURE__*/_react["default"].createElement("div", null, "Second child"), /*#__PURE__*/_react["default"].createElement("div", null, "Third child")));
|
|
36
|
-
expect(_react2.screen.getByText('First child')).toBeInTheDocument();
|
|
37
|
-
expect(_react2.screen.getByText('Second child')).toBeInTheDocument();
|
|
38
|
-
expect(_react2.screen.getByText('Third child')).toBeInTheDocument();
|
|
39
|
-
});
|
|
40
|
-
it('should render with single child', function () {
|
|
41
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
42
|
-
label: "Single Child"
|
|
43
|
-
}, /*#__PURE__*/_react["default"].createElement("input", {
|
|
44
|
-
type: "text",
|
|
45
|
-
placeholder: "Input"
|
|
46
|
-
})));
|
|
47
|
-
expect(_react2.screen.getByPlaceholderText('Input')).toBeInTheDocument();
|
|
48
|
-
});
|
|
49
|
-
it('should render with complex child components', function () {
|
|
50
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
51
|
-
label: "Complex"
|
|
52
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("label", null, "Name:"), /*#__PURE__*/_react["default"].createElement("input", {
|
|
53
|
-
type: "text",
|
|
54
|
-
placeholder: "Enter name"
|
|
55
|
-
})), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("label", null, "Email:"), /*#__PURE__*/_react["default"].createElement("input", {
|
|
56
|
-
type: "email",
|
|
57
|
-
placeholder: "Enter email"
|
|
58
|
-
}))));
|
|
59
|
-
expect(_react2.screen.getByPlaceholderText('Enter name')).toBeInTheDocument();
|
|
60
|
-
expect(_react2.screen.getByPlaceholderText('Enter email')).toBeInTheDocument();
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
describe('Labels', function () {
|
|
64
|
-
it('should display different labels', function () {
|
|
65
|
-
var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
66
|
-
label: "First Label"
|
|
67
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
68
|
-
rerender = _render3.rerender;
|
|
69
|
-
expect(_react2.screen.getByText('First Label')).toBeInTheDocument();
|
|
70
|
-
rerender(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
71
|
-
label: "Second Label"
|
|
72
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content")));
|
|
73
|
-
expect(_react2.screen.getByText('Second Label')).toBeInTheDocument();
|
|
74
|
-
expect(_react2.screen.queryByText('First Label')).not.toBeInTheDocument();
|
|
75
|
-
});
|
|
76
|
-
it('should handle empty label', function () {
|
|
77
|
-
var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
78
|
-
label: ""
|
|
79
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
80
|
-
container = _render4.container;
|
|
81
|
-
expect(container.querySelector('[class*="MuiTypography"]')).toBeInTheDocument();
|
|
82
|
-
expect(_react2.screen.getByText('Content')).toBeInTheDocument();
|
|
83
|
-
});
|
|
84
|
-
it('should handle long labels', function () {
|
|
85
|
-
var longLabel = 'This is a very long label that should wrap properly within the form section';
|
|
86
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
87
|
-
label: longLabel
|
|
88
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content")));
|
|
89
|
-
expect(_react2.screen.getByText(longLabel)).toBeInTheDocument();
|
|
90
|
-
});
|
|
91
|
-
it('should handle special characters in labels', function () {
|
|
92
|
-
var specialLabel = 'Settings & Configuration < Advanced > Test @ #1';
|
|
93
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
94
|
-
label: specialLabel
|
|
95
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content")));
|
|
96
|
-
expect(_react2.screen.getByText(specialLabel)).toBeInTheDocument();
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
describe('Styling and Layout', function () {
|
|
100
|
-
it('should apply default spacing', function () {
|
|
101
|
-
var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
102
|
-
label: "Spaced"
|
|
103
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
104
|
-
container = _render5.container;
|
|
105
|
-
var formSection = container.querySelector('[class*="MuiBox"], div');
|
|
106
|
-
expect(formSection).toBeInTheDocument();
|
|
107
|
-
});
|
|
108
|
-
it('should apply labelExtraStyle to the label', function () {
|
|
109
|
-
var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
110
|
-
label: "Styled Label",
|
|
111
|
-
labelExtraStyle: {
|
|
112
|
-
color: 'red',
|
|
113
|
-
fontWeight: 'bold'
|
|
114
|
-
}
|
|
115
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
116
|
-
container = _render6.container;
|
|
117
|
-
var typography = container.querySelector('[class*="MuiTypography"]');
|
|
118
|
-
expect(typography).toHaveStyle('color: red');
|
|
119
|
-
expect(typography).toHaveStyle('fontWeight: bold');
|
|
120
|
-
});
|
|
121
|
-
it('should apply multiple labelExtraStyle properties', function () {
|
|
122
|
-
var extraStyle = {
|
|
123
|
-
fontSize: '18px',
|
|
124
|
-
margin: '10px',
|
|
125
|
-
padding: '5px'
|
|
126
|
-
};
|
|
127
|
-
var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
128
|
-
label: "Multi-styled",
|
|
129
|
-
labelExtraStyle: extraStyle
|
|
130
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
131
|
-
container = _render7.container;
|
|
132
|
-
var typography = container.querySelector('[class*="MuiTypography"]');
|
|
133
|
-
expect(typography).toHaveStyle('fontSize: 18px');
|
|
134
|
-
expect(typography).toHaveStyle('margin: 10px');
|
|
135
|
-
expect(typography).toHaveStyle('padding: 5px');
|
|
136
|
-
});
|
|
137
|
-
it('should handle no labelExtraStyle', function () {
|
|
138
|
-
var _render8 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
139
|
-
label: "No Extra Style"
|
|
140
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
141
|
-
container = _render8.container;
|
|
142
|
-
expect(container.querySelector('[class*="MuiTypography"]')).toBeInTheDocument();
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
describe('CSS classes', function () {
|
|
146
|
-
it('should support multiple custom classes', function () {
|
|
147
|
-
var _render9 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
148
|
-
label: "Test",
|
|
149
|
-
className: "class1 class2 class3"
|
|
150
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
151
|
-
container = _render9.container;
|
|
152
|
-
var element = container.querySelector('.class1.class2.class3');
|
|
153
|
-
expect(element).toBeInTheDocument();
|
|
154
|
-
});
|
|
155
|
-
it('should work without custom className', function () {
|
|
156
|
-
var _render0 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
157
|
-
label: "Test"
|
|
158
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
159
|
-
container = _render0.container;
|
|
160
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
161
|
-
});
|
|
162
|
-
});
|
|
163
|
-
describe('Content variations', function () {
|
|
164
|
-
it('should render form inputs as children', function () {
|
|
165
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
166
|
-
label: "Form Inputs"
|
|
167
|
-
}, /*#__PURE__*/_react["default"].createElement("input", {
|
|
168
|
-
type: "text",
|
|
169
|
-
placeholder: "Text input"
|
|
170
|
-
}), /*#__PURE__*/_react["default"].createElement("input", {
|
|
171
|
-
type: "number",
|
|
172
|
-
placeholder: "Number input"
|
|
173
|
-
}), /*#__PURE__*/_react["default"].createElement("textarea", {
|
|
174
|
-
placeholder: "Text area"
|
|
175
|
-
})));
|
|
176
|
-
expect(_react2.screen.getByPlaceholderText('Text input')).toBeInTheDocument();
|
|
177
|
-
expect(_react2.screen.getByPlaceholderText('Number input')).toBeInTheDocument();
|
|
178
|
-
expect(_react2.screen.getByPlaceholderText('Text area')).toBeInTheDocument();
|
|
179
|
-
});
|
|
180
|
-
it('should render lists as children', function () {
|
|
181
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
182
|
-
label: "Options"
|
|
183
|
-
}, /*#__PURE__*/_react["default"].createElement("ul", null, /*#__PURE__*/_react["default"].createElement("li", null, "Option 1"), /*#__PURE__*/_react["default"].createElement("li", null, "Option 2"), /*#__PURE__*/_react["default"].createElement("li", null, "Option 3"))));
|
|
184
|
-
expect(_react2.screen.getByText('Option 1')).toBeInTheDocument();
|
|
185
|
-
expect(_react2.screen.getByText('Option 2')).toBeInTheDocument();
|
|
186
|
-
expect(_react2.screen.getByText('Option 3')).toBeInTheDocument();
|
|
187
|
-
});
|
|
188
|
-
it('should render buttons as children', function () {
|
|
189
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
190
|
-
label: "Actions"
|
|
191
|
-
}, /*#__PURE__*/_react["default"].createElement("button", null, "Save"), /*#__PURE__*/_react["default"].createElement("button", null, "Cancel")));
|
|
192
|
-
expect(_react2.screen.getByRole('button', {
|
|
193
|
-
name: 'Save'
|
|
194
|
-
})).toBeInTheDocument();
|
|
195
|
-
expect(_react2.screen.getByRole('button', {
|
|
196
|
-
name: 'Cancel'
|
|
197
|
-
})).toBeInTheDocument();
|
|
198
|
-
});
|
|
199
|
-
it('should render nested form sections', function () {
|
|
200
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
201
|
-
label: "Outer"
|
|
202
|
-
}, /*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
203
|
-
label: "Inner"
|
|
204
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, "Nested content"))));
|
|
205
|
-
expect(_react2.screen.getByText('Outer')).toBeInTheDocument();
|
|
206
|
-
expect(_react2.screen.getByText('Inner')).toBeInTheDocument();
|
|
207
|
-
expect(_react2.screen.getByText('Nested content')).toBeInTheDocument();
|
|
208
|
-
});
|
|
209
|
-
});
|
|
210
|
-
describe('Edge cases', function () {
|
|
211
|
-
it('should render with conditional children', function () {
|
|
212
|
-
var showContent = true;
|
|
213
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
214
|
-
label: "Conditional"
|
|
215
|
-
}, showContent && /*#__PURE__*/_react["default"].createElement("div", null, "Visible"), !showContent && /*#__PURE__*/_react["default"].createElement("div", null, "Hidden")));
|
|
216
|
-
expect(_react2.screen.getByText('Visible')).toBeInTheDocument();
|
|
217
|
-
expect(_react2.screen.queryByText('Hidden')).not.toBeInTheDocument();
|
|
218
|
-
});
|
|
219
|
-
it('should update when children change', function () {
|
|
220
|
-
var _render1 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
221
|
-
label: "Dynamic"
|
|
222
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, "Initial content"))),
|
|
223
|
-
rerender = _render1.rerender;
|
|
224
|
-
expect(_react2.screen.getByText('Initial content')).toBeInTheDocument();
|
|
225
|
-
rerender(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
226
|
-
label: "Dynamic"
|
|
227
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, "Updated content")));
|
|
228
|
-
expect(_react2.screen.queryByText('Initial content')).not.toBeInTheDocument();
|
|
229
|
-
expect(_react2.screen.getByText('Updated content')).toBeInTheDocument();
|
|
230
|
-
});
|
|
231
|
-
});
|
|
232
|
-
describe('Accessibility', function () {
|
|
233
|
-
it('should have proper heading hierarchy', function () {
|
|
234
|
-
var _render10 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
235
|
-
label: "Accessible Section"
|
|
236
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
237
|
-
container = _render10.container;
|
|
238
|
-
var typography = container.querySelector('[class*="MuiTypography"]');
|
|
239
|
-
expect(typography).toBeInTheDocument();
|
|
240
|
-
});
|
|
241
|
-
it('should be properly semantically structured', function () {
|
|
242
|
-
var _render11 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
243
|
-
label: "Semantic"
|
|
244
|
-
}, /*#__PURE__*/_react["default"].createElement("input", {
|
|
245
|
-
type: "text"
|
|
246
|
-
}))),
|
|
247
|
-
container = _render11.container;
|
|
248
|
-
expect(container.querySelector('div')).toBeInTheDocument();
|
|
249
|
-
});
|
|
250
|
-
});
|
|
251
|
-
});
|
|
252
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfZm9ybVNlY3Rpb24iLCJkZXNjcmliZSIsIml0IiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsImxhYmVsIiwiZXhwZWN0Iiwic2NyZWVuIiwiZ2V0QnlUZXh0IiwidG9CZUluVGhlRG9jdW1lbnQiLCJfcmVuZGVyIiwiY29udGFpbmVyIiwidHlwb2dyYXBoeSIsInF1ZXJ5U2VsZWN0b3IiLCJfcmVuZGVyMiIsImNsYXNzTmFtZSIsInR5cGUiLCJwbGFjZWhvbGRlciIsImdldEJ5UGxhY2Vob2xkZXJUZXh0IiwiX3JlbmRlcjMiLCJyZXJlbmRlciIsInF1ZXJ5QnlUZXh0Iiwibm90IiwiX3JlbmRlcjQiLCJsb25nTGFiZWwiLCJzcGVjaWFsTGFiZWwiLCJfcmVuZGVyNSIsImZvcm1TZWN0aW9uIiwiX3JlbmRlcjYiLCJsYWJlbEV4dHJhU3R5bGUiLCJjb2xvciIsImZvbnRXZWlnaHQiLCJ0b0hhdmVTdHlsZSIsImV4dHJhU3R5bGUiLCJmb250U2l6ZSIsIm1hcmdpbiIsInBhZGRpbmciLCJfcmVuZGVyNyIsIl9yZW5kZXI4IiwiX3JlbmRlcjkiLCJlbGVtZW50IiwiX3JlbmRlcjAiLCJmaXJzdENoaWxkIiwiZ2V0QnlSb2xlIiwibmFtZSIsInNob3dDb250ZW50IiwiX3JlbmRlcjEiLCJfcmVuZGVyMTAiLCJfcmVuZGVyMTEiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2Zvcm0tc2VjdGlvbi50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyLCBzY3JlZW4gfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCBGb3JtU2VjdGlvbiBmcm9tICcuLi9mb3JtLXNlY3Rpb24nO1xuXG5kZXNjcmliZSgnRm9ybVNlY3Rpb24gQ29tcG9uZW50JywgKCkgPT4ge1xuICBkZXNjcmliZSgnUmVuZGVyaW5nJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmVuZGVyIHdpdGggbGFiZWwgYW5kIGNoaWxkcmVuJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJTZXR0aW5nc1wiPlxuICAgICAgICAgIDxkaXY+Q2hpbGQgY29udGVudDwvZGl2PlxuICAgICAgICA8L0Zvcm1TZWN0aW9uPixcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdTZXR0aW5ncycpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0NoaWxkIGNvbnRlbnQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVuZGVyIGxhYmVsIGFzIHN1YnRpdGxlMSB0eXBvZ3JhcGh5JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiQ29uZmlndXJhdGlvblwiPlxuICAgICAgICAgIDxkaXY+Q29udGVudDwvZGl2PlxuICAgICAgICA8L0Zvcm1TZWN0aW9uPixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHR5cG9ncmFwaHkgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignW2NsYXNzKj1cIk11aVR5cG9ncmFwaHlcIl0nKTtcbiAgICAgIGV4cGVjdCh0eXBvZ3JhcGh5KS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZW5kZXIgd2l0aCBjdXN0b20gY2xhc3NOYW1lJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiQ3VzdG9tXCIgY2xhc3NOYW1lPVwiY3VzdG9tLWNsYXNzXCI+XG4gICAgICAgICAgPGRpdj5Db250ZW50PC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuY3VzdG9tLWNsYXNzJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlbmRlciBtdWx0aXBsZSBjaGlsZHJlbicsICgpID0+IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiTXVsdGlwbGUgQ2hpbGRyZW5cIj5cbiAgICAgICAgICA8ZGl2PkZpcnN0IGNoaWxkPC9kaXY+XG4gICAgICAgICAgPGRpdj5TZWNvbmQgY2hpbGQ8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlRoaXJkIGNoaWxkPC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0ZpcnN0IGNoaWxkJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnU2Vjb25kIGNoaWxkJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnVGhpcmQgY2hpbGQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVuZGVyIHdpdGggc2luZ2xlIGNoaWxkJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJTaW5nbGUgQ2hpbGRcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIklucHV0XCIgLz5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5UGxhY2Vob2xkZXJUZXh0KCdJbnB1dCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZW5kZXIgd2l0aCBjb21wbGV4IGNoaWxkIGNvbXBvbmVudHMnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxGb3JtU2VjdGlvbiBsYWJlbD1cIkNvbXBsZXhcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGxhYmVsPk5hbWU6PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgbmFtZVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxsYWJlbD5FbWFpbDo8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJlbWFpbFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgZW1haWxcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0Zvcm1TZWN0aW9uPixcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlQbGFjZWhvbGRlclRleHQoJ0VudGVyIG5hbWUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlQbGFjZWhvbGRlclRleHQoJ0VudGVyIGVtYWlsJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdMYWJlbHMnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBkaXNwbGF5IGRpZmZlcmVudCBsYWJlbHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IHJlcmVuZGVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxGb3JtU2VjdGlvbiBsYWJlbD1cIkZpcnN0IExhYmVsXCI+XG4gICAgICAgICAgPGRpdj5Db250ZW50PC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0ZpcnN0IExhYmVsJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG5cbiAgICAgIHJlcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJTZWNvbmQgTGFiZWxcIj5cbiAgICAgICAgICA8ZGl2PkNvbnRlbnQ8L2Rpdj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnU2Vjb25kIExhYmVsJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLnF1ZXJ5QnlUZXh0KCdGaXJzdCBMYWJlbCcpKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGVtcHR5IGxhYmVsJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiXCI+XG4gICAgICAgICAgPGRpdj5Db250ZW50PC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdbY2xhc3MqPVwiTXVpVHlwb2dyYXBoeVwiXScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0NvbnRlbnQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGxvbmcgbGFiZWxzJywgKCkgPT4ge1xuICAgICAgY29uc3QgbG9uZ0xhYmVsID0gJ1RoaXMgaXMgYSB2ZXJ5IGxvbmcgbGFiZWwgdGhhdCBzaG91bGQgd3JhcCBwcm9wZXJseSB3aXRoaW4gdGhlIGZvcm0gc2VjdGlvbic7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxGb3JtU2VjdGlvbiBsYWJlbD17bG9uZ0xhYmVsfT5cbiAgICAgICAgICA8ZGl2PkNvbnRlbnQ8L2Rpdj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dChsb25nTGFiZWwpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIGxhYmVscycsICgpID0+IHtcbiAgICAgIGNvbnN0IHNwZWNpYWxMYWJlbCA9ICdTZXR0aW5ncyAmIENvbmZpZ3VyYXRpb24gPCBBZHZhbmNlZCA+IFRlc3QgQCAjMSc7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxGb3JtU2VjdGlvbiBsYWJlbD17c3BlY2lhbExhYmVsfT5cbiAgICAgICAgICA8ZGl2PkNvbnRlbnQ8L2Rpdj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dChzcGVjaWFsTGFiZWwpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnU3R5bGluZyBhbmQgTGF5b3V0JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgYXBwbHkgZGVmYXVsdCBzcGFjaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiU3BhY2VkXCI+XG4gICAgICAgICAgPGRpdj5Db250ZW50PC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgZm9ybVNlY3Rpb24gPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignW2NsYXNzKj1cIk11aUJveFwiXSwgZGl2Jyk7XG4gICAgICBleHBlY3QoZm9ybVNlY3Rpb24pLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFwcGx5IGxhYmVsRXh0cmFTdHlsZSB0byB0aGUgbGFiZWwnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJTdHlsZWQgTGFiZWxcIiBsYWJlbEV4dHJhU3R5bGU9e3sgY29sb3I6ICdyZWQnLCBmb250V2VpZ2h0OiAnYm9sZCcgfX0+XG4gICAgICAgICAgPGRpdj5Db250ZW50PC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgdHlwb2dyYXBoeSA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdbY2xhc3MqPVwiTXVpVHlwb2dyYXBoeVwiXScpO1xuICAgICAgZXhwZWN0KHR5cG9ncmFwaHkpLnRvSGF2ZVN0eWxlKCdjb2xvcjogcmVkJyk7XG4gICAgICBleHBlY3QodHlwb2dyYXBoeSkudG9IYXZlU3R5bGUoJ2ZvbnRXZWlnaHQ6IGJvbGQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYXBwbHkgbXVsdGlwbGUgbGFiZWxFeHRyYVN0eWxlIHByb3BlcnRpZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBleHRyYVN0eWxlID0ge1xuICAgICAgICBmb250U2l6ZTogJzE4cHgnLFxuICAgICAgICBtYXJnaW46ICcxMHB4JyxcbiAgICAgICAgcGFkZGluZzogJzVweCcsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJNdWx0aS1zdHlsZWRcIiBsYWJlbEV4dHJhU3R5bGU9e2V4dHJhU3R5bGV9PlxuICAgICAgICAgIDxkaXY+Q29udGVudDwvZGl2PlxuICAgICAgICA8L0Zvcm1TZWN0aW9uPixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHR5cG9ncmFwaHkgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignW2NsYXNzKj1cIk11aVR5cG9ncmFwaHlcIl0nKTtcbiAgICAgIGV4cGVjdCh0eXBvZ3JhcGh5KS50b0hhdmVTdHlsZSgnZm9udFNpemU6IDE4cHgnKTtcbiAgICAgIGV4cGVjdCh0eXBvZ3JhcGh5KS50b0hhdmVTdHlsZSgnbWFyZ2luOiAxMHB4Jyk7XG4gICAgICBleHBlY3QodHlwb2dyYXBoeSkudG9IYXZlU3R5bGUoJ3BhZGRpbmc6IDVweCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgbm8gbGFiZWxFeHRyYVN0eWxlJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiTm8gRXh0cmEgU3R5bGVcIj5cbiAgICAgICAgICA8ZGl2PkNvbnRlbnQ8L2Rpdj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ1tjbGFzcyo9XCJNdWlUeXBvZ3JhcGh5XCJdJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdDU1MgY2xhc3NlcycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHN1cHBvcnQgbXVsdGlwbGUgY3VzdG9tIGNsYXNzZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJUZXN0XCIgY2xhc3NOYW1lPVwiY2xhc3MxIGNsYXNzMiBjbGFzczNcIj5cbiAgICAgICAgICA8ZGl2PkNvbnRlbnQ8L2Rpdj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBjb25zdCBlbGVtZW50ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5jbGFzczEuY2xhc3MyLmNsYXNzMycpO1xuICAgICAgZXhwZWN0KGVsZW1lbnQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHdvcmsgd2l0aG91dCBjdXN0b20gY2xhc3NOYW1lJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiVGVzdFwiPlxuICAgICAgICAgIDxkaXY+Q29udGVudDwvZGl2PlxuICAgICAgICA8L0Zvcm1TZWN0aW9uPixcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0NvbnRlbnQgdmFyaWF0aW9ucycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJlbmRlciBmb3JtIGlucHV0cyBhcyBjaGlsZHJlbicsICgpID0+IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiRm9ybSBJbnB1dHNcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlRleHQgaW5wdXRcIiAvPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgcGxhY2Vob2xkZXI9XCJOdW1iZXIgaW5wdXRcIiAvPlxuICAgICAgICAgIDx0ZXh0YXJlYSBwbGFjZWhvbGRlcj1cIlRleHQgYXJlYVwiPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVBsYWNlaG9sZGVyVGV4dCgnVGV4dCBpbnB1dCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVBsYWNlaG9sZGVyVGV4dCgnTnVtYmVyIGlucHV0JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5UGxhY2Vob2xkZXJUZXh0KCdUZXh0IGFyZWEnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVuZGVyIGxpc3RzIGFzIGNoaWxkcmVuJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJPcHRpb25zXCI+XG4gICAgICAgICAgPHVsPlxuICAgICAgICAgICAgPGxpPk9wdGlvbiAxPC9saT5cbiAgICAgICAgICAgIDxsaT5PcHRpb24gMjwvbGk+XG4gICAgICAgICAgICA8bGk+T3B0aW9uIDM8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ09wdGlvbiAxJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnT3B0aW9uIDInKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdPcHRpb24gMycpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZW5kZXIgYnV0dG9ucyBhcyBjaGlsZHJlbicsICgpID0+IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiQWN0aW9uc1wiPlxuICAgICAgICAgIDxidXR0b24+U2F2ZTwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogJ1NhdmUnIH0pKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogJ0NhbmNlbCcgfSkpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlbmRlciBuZXN0ZWQgZm9ybSBzZWN0aW9ucycsICgpID0+IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiT3V0ZXJcIj5cbiAgICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJJbm5lclwiPlxuICAgICAgICAgICAgPGRpdj5OZXN0ZWQgY29udGVudDwvZGl2PlxuICAgICAgICAgIDwvRm9ybVNlY3Rpb24+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ091dGVyJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnSW5uZXInKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdOZXN0ZWQgY29udGVudCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRWRnZSBjYXNlcycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJlbmRlciB3aXRoIGNvbmRpdGlvbmFsIGNoaWxkcmVuJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc2hvd0NvbnRlbnQgPSB0cnVlO1xuXG4gICAgICByZW5kZXIoXG4gICAgICAgIDxGb3JtU2VjdGlvbiBsYWJlbD1cIkNvbmRpdGlvbmFsXCI+XG4gICAgICAgICAge3Nob3dDb250ZW50ICYmIDxkaXY+VmlzaWJsZTwvZGl2Pn1cbiAgICAgICAgICB7IXNob3dDb250ZW50ICYmIDxkaXY+SGlkZGVuPC9kaXY+fVxuICAgICAgICA8L0Zvcm1TZWN0aW9uPixcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdWaXNpYmxlJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLnF1ZXJ5QnlUZXh0KCdIaWRkZW4nKSkubm90LnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHVwZGF0ZSB3aGVuIGNoaWxkcmVuIGNoYW5nZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgcmVyZW5kZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiRHluYW1pY1wiPlxuICAgICAgICAgIDxkaXY+SW5pdGlhbCBjb250ZW50PC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0luaXRpYWwgY29udGVudCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuXG4gICAgICByZXJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiRHluYW1pY1wiPlxuICAgICAgICAgIDxkaXY+VXBkYXRlZCBjb250ZW50PC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHNjcmVlbi5xdWVyeUJ5VGV4dCgnSW5pdGlhbCBjb250ZW50JykpLm5vdC50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ1VwZGF0ZWQgY29udGVudCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQWNjZXNzaWJpbGl0eScsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGhhdmUgcHJvcGVyIGhlYWRpbmcgaGllcmFyY2h5JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiQWNjZXNzaWJsZSBTZWN0aW9uXCI+XG4gICAgICAgICAgPGRpdj5Db250ZW50PC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgdHlwb2dyYXBoeSA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdbY2xhc3MqPVwiTXVpVHlwb2dyYXBoeVwiXScpO1xuICAgICAgZXhwZWN0KHR5cG9ncmFwaHkpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJlIHByb3Blcmx5IHNlbWFudGljYWxseSBzdHJ1Y3R1cmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiU2VtYW50aWNcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAvPlxuICAgICAgICA8L0Zvcm1TZWN0aW9uPixcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcignZGl2JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFlBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBRyxRQUFRLENBQUMsdUJBQXVCLEVBQUUsWUFBTTtFQUN0Q0EsUUFBUSxDQUFDLFdBQVcsRUFBRSxZQUFNO0lBQzFCQyxFQUFFLENBQUMsdUNBQXVDLEVBQUUsWUFBTTtNQUNoRCxJQUFBQyxjQUFNLGVBQ0pQLE1BQUEsWUFBQVEsYUFBQSxDQUFDSixZQUFBLFdBQVc7UUFBQ0ssS0FBSyxFQUFDO01BQVUsZ0JBQzNCVCxNQUFBLFlBQUFRLGFBQUEsY0FBSyxlQUFrQixDQUNaLENBQ2YsQ0FBQztNQUVERSxNQUFNLENBQUNDLGNBQU0sQ0FBQ0MsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7TUFDeERILE1BQU0sQ0FBQ0MsY0FBTSxDQUFDQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztJQUMvRCxDQUFDLENBQUM7SUFFRlAsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLFlBQU07TUFDdEQsSUFBQVEsT0FBQSxHQUFzQixJQUFBUCxjQUFNLGVBQzFCUCxNQUFBLFlBQUFRLGFBQUEsQ0FBQ0osWUFBQSxXQUFXO1VBQUNL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
|
|
@@ -1,270 +0,0 @@
|
|
|
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+IHtcbiAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgY29uc3Qgb25DbGljayA9IGplc3QuZm4oKTtcbiAgICByZW5kZXIoPEhlbHBCdXR0b24gb25DbGljaz17b25DbGlja30gLz4pO1xuXG4gICAgY29uc3QgYnV0dG9uID0gc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJyk7XG4gICAgYXdhaXQgdXNlci5jbGljayhidXR0b24pO1xuXG4gICAgZXhwZWN0KG9uQ2xpY2spLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgd2l0aCBsYXJnZSBzaXplJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEhlbHBCdXR0b24gLz4pO1xuICAgIGNvbnN0IGJ1dHRvbiA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdidXR0b25bY2xhc3MqPVwic2l6ZUxhcmdlXCJdJyk7XG4gICAgZXhwZWN0KGJ1dHRvbiB8fCBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0hlbHBEaWFsb2cnLCAoKSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICBvcGVuOiB0cnVlLFxuICAgIG9uQ2xvc2U6IGplc3QuZm4oKSxcbiAgICB0aXRsZTogJ0hlbHAgVGl0bGUnLFxuICAgIGNoaWxkcmVuOiAnSGVscCBjb250ZW50IGhlcmUnLFxuICB9O1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGplc3QuY2xlYXJBbGxNb2NrcygpO1xuICB9KTtcblxuICBpdCgncmVuZGVycyB3aGVuIG9wZW4gaXMgdHJ1ZScsICgpID0+IHtcbiAgICByZW5kZXIoPEhlbHBEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdIZWxwIFRpdGxlJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0hlbHAgY29udGVudCBoZXJlJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdkb2VzIG5vdCByZW5kZXIgd2hlbiBvcGVuIGlzIGZhbHNlJywgKCkgPT4ge1xuICAgIHJlbmRlcig8SGVscERpYWxvZyB7Li4uZGVmYXVsdFByb3BzfSBvcGVuPXtmYWxzZX0gLz4pO1xuICAgIGV4cGVjdChzY3JlZW4ucXVlcnlCeVRleHQoJ0hlbHAgVGl0bGUnKSkubm90LnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdkaXNwbGF5cyB0aXRsZSBjb3JyZWN0bHknLCAoKSA9PiB7XG4gICAgcmVuZGVyKDxIZWxwRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9IHRpdGxlPVwiQ3VzdG9tIEhlbHBcIiAvPik7XG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0N1c3RvbSBIZWxwJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdkaXNwbGF5cyBjaGlsZHJlbiBjb250ZW50JywgKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSAnVGhpcyBpcyBoZWxwZnVsIGluZm9ybWF0aW9uJztcbiAgICByZW5kZXIoPEhlbHBEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gY2hpbGRyZW49e2NvbnRlbnR9IC8+KTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dChjb250ZW50KSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2NhbGxzIG9uQ2xvc2Ugd2hlbiBPSyBidXR0b24gaXMgY2xpY2tlZCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgY29uc3Qgb25DbG9zZSA9IGplc3QuZm4oKTtcbiAgICByZW5kZXIoPEhlbHBEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gb25DbG9zZT17b25DbG9zZX0gLz4pO1xuXG4gICAgY29uc3Qgb2tCdXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9PSy9pIH0pO1xuICAgIGF3YWl0IHVzZXIuY2xpY2sob2tCdXR0b24pO1xuXG4gICAgZXhwZWN0KG9uQ2xvc2UpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgfSk7XG5cbiAgaXQoJ2NhbGxzIG9uQ2xvc2Ugd2hlbiBkaWFsb2cgaXMgY2xvc2VkIHZpYSBiYWNrZHJvcCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgY29uc3Qgb25DbG9zZSA9IGplc3QuZm4oKTtcbiAgICByZW5kZXIoPEhlbHBEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gb25DbG9zZT17b25DbG9zZX0gLz4pO1xuXG4gICAgLy8gU2ltdWxhdGUgYmFja2Ryb3AgY2xpY2sgYnkgY2FsbGluZyBvbkNsb3NlIChNVUkgRGlhbG9nIHByb3ApXG4gICAgY29uc3QgZGlhbG9nID0gc2NyZWVuLmdldEJ5Um9sZSgnZGlhbG9nJywgeyBoaWRkZW46IHRydWUgfSk7XG4gICAgZXhwZWN0KGRpYWxvZykudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgT0sgYnV0dG9uJywgKCkgPT4ge1xuICAgIHJlbmRlcig8SGVscERpYWxvZyB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgY29uc3Qgb2tCdXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9PSy9pIH0pO1xuICAgIGV4cGVjdChva0J1dHRvbikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2hhbmRsZXMgbXVsdGlsaW5lIGNoaWxkcmVuIGNvbnRlbnQnLCAoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IFsnTGluZSAxJywgJ0xpbmUgMicsICdMaW5lIDMnXTtcbiAgICByZW5kZXIoXG4gICAgICA8SGVscERpYWxvZyB7Li4uZGVmYXVsdFByb3BzfT5cbiAgICAgICAge2NvbnRlbnQubWFwKChsaW5lLCBpKSA9PiAoXG4gICAgICAgICAgPGRpdiBrZXk9e2l9PntsaW5lfTwvZGl2PlxuICAgICAgICApKX1cbiAgICAgIDwvSGVscERpYWxvZz4sXG4gICAgKTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnTGluZSAxJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0xpbmUgMicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdMaW5lIDMnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0hlbHAgQ29tcG9uZW50JywgKCkgPT4ge1xuICBjb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gICAgdGl0bGU6ICdIZWxwIFRpdGxlJyxcbiAgICBjaGlsZHJlbjogJ0hlbHAgY29udGVudCcsXG4gIH07XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgamVzdC5jbGVhckFsbE1vY2tzKCk7XG4gIH0pO1xuXG4gIGl0KCdyZW5kZXJzIGhlbHAgYnV0dG9uIGluaXRpYWxseScsICgpID0+IHtcbiAgICByZW5kZXIoPEhlbHAgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgIGNvbnN0IGJ1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicpO1xuICAgIGV4cGVjdChidXR0b24pLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdvcGVucyBkaWFsb2cgd2hlbiBoZWxwIGJ1dHRvbiBpcyBjbGlja2VkJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICByZW5kZXIoPEhlbHAgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuXG4gICAgY29uc3QgYnV0dG9uID0gc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJyk7XG4gICAgYXdhaXQgdXNlci5jbGljayhidXR0b24pO1xuXG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0hlbHAgVGl0bGUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnSGVscCBjb250ZW50JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdjbG9zZXMgZGlhbG9nIHdoZW4gT0sgYnV0dG9uIGlzIGNsaWNrZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgIHJlbmRlcig8SGVscCB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG5cbiAgICBjb25zdCBoZWxwQnV0dG9uID0gc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnJyB9KTtcbiAgICBhd2FpdCB1c2VyLmNsaWNrKGhlbHBCdXR0b24pO1xuXG4gICAgY29uc3Qgb2tCdXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9PSy9pIH0pO1xuICAgIGF3YWl0IHVzZXIuY2xpY2sob2tCdXR0b24pO1xuXG4gICAgYXdhaXQgd2FpdEZvcigoKSA9PiB7XG4gICAgICBleHBlY3Qoc2NyZWVuLnF1ZXJ5QnlUZXh0KCdIZWxwIFRpdGxlJykpLm5vdC50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnZGlzcGxheXMgdGl0bGUgcHJvcCcsICgpID0+IHtcbiAgICByZW5kZXIoPEhlbHAgdGl0bGU9XCJDdXN0b20gVGl0bGVcIiBjaGlsZHJlbj1cImNvbnRlbnRcIiAvPik7XG4gICAgY29uc3QgYnV0dG9uID0gc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJyk7XG4gICAgZXhwZWN0KGJ1dHRvbikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2Rpc3BsYXlzIGNoaWxkcmVuIHByb3AnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgIHJlbmRlcig8SGVscCB7Li4uZGVmYXVsdFByb3BzfSBjaGlsZHJlbj1cIkN1c3RvbSBoZWxwIGNvbnRlbnRcIiAvPik7XG5cbiAgICBjb25zdCBidXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nKTtcbiAgICBhd2FpdCB1c2VyLmNsaWNrKGJ1dHRvbik7XG5cbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnQ3VzdG9tIGhlbHAgY29udGVudCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnY2FuIG9wZW4gYW5kIGNsb3NlIGRpYWxvZyBtdWx0aXBsZSB0aW1lcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgcmVuZGVyKDxIZWxwIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcblxuICAgIGNvbnN0IGhlbHBCdXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6ICcnIH0pO1xuXG4gICAgYXdhaXQgdXNlci5jbGljayhoZWxwQnV0dG9uKTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnSGVscCBUaXRsZScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuXG4gICAgbGV0IG9rQnV0dG9uID0gc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAvT0svaSB9KTtcbiAgICBhd2FpdCB1c2VyLmNsaWNrKG9rQnV0dG9uKTtcblxuICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4ge1xuICAgICAgZXhwZWN0KHNjcmVlbi5xdWVyeUJ5VGV4dCgnSGVscCBUaXRsZScpKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGF3YWl0IHVzZXIuY2xpY2soaGVscEJ1dHRvbik7XG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0hlbHAgVGl0bGUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFVBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUosT0FBQTtBQUF1RCxTQUFBSSx3QkFBQUMsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUgsdUJBQUEsWUFBQUEsd0JBQUFDLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFB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
|