@pie-element/placement-ordering 14.3.2-beta.4 → 14.3.2-beta.5
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 +4 -0
- package/configure/CHANGELOG.md +4 -0
- package/configure/package.json +3 -3
- package/controller/CHANGELOG.md +4 -0
- package/controller/package.json +1 -1
- package/package.json +2 -2
- package/configure/lib/__tests__/choice-editor.test.js +0 -376
- package/configure/lib/__tests__/choice-tile.test.js +0 -283
- package/configure/lib/__tests__/design.test.js +0 -268
- package/configure/lib/__tests__/help.test.js +0 -64
- package/configure/lib/__tests__/index.test.js +0 -77
- package/configure/lib/__tests__/utils.test.js +0 -493
- package/controller/lib/__tests__/index.test.js +0 -401
- package/controller/lib/__tests__/scoring.test.js +0 -165
- package/docs/demo/pie.manifest.json +0 -11
- package/lib/__tests__/index-test.js +0 -90
- package/lib/__tests__/ordering.test.js +0 -133
- package/lib/__tests__/placement-ordering.test.js +0 -445
|
@@ -1,283 +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
|
-
require("@testing-library/jest-dom");
|
|
7
|
-
var _choiceTile = require("../choice-tile");
|
|
8
|
-
// Mock dependencies
|
|
9
|
-
jest.mock('@dnd-kit/core', () => ({
|
|
10
|
-
useDraggable: () => ({
|
|
11
|
-
attributes: {
|
|
12
|
-
'data-draggable': 'true'
|
|
13
|
-
},
|
|
14
|
-
listeners: {
|
|
15
|
-
onPointerDown: jest.fn()
|
|
16
|
-
},
|
|
17
|
-
setNodeRef: jest.fn(),
|
|
18
|
-
transform: null,
|
|
19
|
-
isDragging: false
|
|
20
|
-
}),
|
|
21
|
-
useDroppable: () => ({
|
|
22
|
-
setNodeRef: jest.fn(),
|
|
23
|
-
isOver: false
|
|
24
|
-
})
|
|
25
|
-
}));
|
|
26
|
-
jest.mock('@pie-lib/editable-html-tip-tap', () => ({
|
|
27
|
-
__esModule: true,
|
|
28
|
-
default: ({
|
|
29
|
-
markup,
|
|
30
|
-
onChange,
|
|
31
|
-
disabled,
|
|
32
|
-
placeholder,
|
|
33
|
-
error
|
|
34
|
-
}) => /*#__PURE__*/_react.default.createElement("div", {
|
|
35
|
-
"data-testid": "editable-html"
|
|
36
|
-
}, /*#__PURE__*/_react.default.createElement("input", {
|
|
37
|
-
"data-testid": "editable-input",
|
|
38
|
-
value: markup,
|
|
39
|
-
onChange: e => onChange(e.target.value),
|
|
40
|
-
disabled: disabled,
|
|
41
|
-
placeholder: placeholder
|
|
42
|
-
}), error && /*#__PURE__*/_react.default.createElement("div", {
|
|
43
|
-
"data-testid": "editable-error"
|
|
44
|
-
}, error)),
|
|
45
|
-
DEFAULT_PLUGINS: ['bold', 'italic', 'underline', 'bulleted-list', 'numbered-list']
|
|
46
|
-
}));
|
|
47
|
-
jest.mock('@pie-lib/render-ui', () => ({
|
|
48
|
-
color: {
|
|
49
|
-
tertiary: () => '#666666'
|
|
50
|
-
}
|
|
51
|
-
}));
|
|
52
|
-
describe('ChoiceTile', () => {
|
|
53
|
-
let defaultProps;
|
|
54
|
-
beforeEach(() => {
|
|
55
|
-
defaultProps = {
|
|
56
|
-
choice: {
|
|
57
|
-
id: 'c1',
|
|
58
|
-
label: 'Test choice',
|
|
59
|
-
editable: true,
|
|
60
|
-
type: 'choice'
|
|
61
|
-
},
|
|
62
|
-
index: 0,
|
|
63
|
-
choices: [],
|
|
64
|
-
onChoiceChange: jest.fn(),
|
|
65
|
-
onDelete: jest.fn(),
|
|
66
|
-
imageSupport: {
|
|
67
|
-
add: jest.fn(),
|
|
68
|
-
delete: jest.fn()
|
|
69
|
-
},
|
|
70
|
-
spellCheck: true,
|
|
71
|
-
toolbarOpts: {},
|
|
72
|
-
pluginProps: {},
|
|
73
|
-
maxImageWidth: {
|
|
74
|
-
unit: 'px',
|
|
75
|
-
value: 300
|
|
76
|
-
},
|
|
77
|
-
maxImageHeight: {
|
|
78
|
-
unit: 'px',
|
|
79
|
-
value: 300
|
|
80
|
-
},
|
|
81
|
-
error: null,
|
|
82
|
-
mathMlOptions: {}
|
|
83
|
-
};
|
|
84
|
-
});
|
|
85
|
-
describe('rendering', () => {
|
|
86
|
-
it('should render without crashing', () => {
|
|
87
|
-
const {
|
|
88
|
-
container
|
|
89
|
-
} = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_choiceTile.ChoiceTile, defaultProps));
|
|
90
|
-
expect(container).toBeTruthy();
|
|
91
|
-
});
|
|
92
|
-
it('should render with correct label', () => {
|
|
93
|
-
(0, _react2.render)(/*#__PURE__*/_react.default.createElement(_choiceTile.ChoiceTile, defaultProps));
|
|
94
|
-
const input = _react2.screen.getByTestId('editable-input');
|
|
95
|
-
expect(input).toHaveValue('Test choice');
|
|
96
|
-
});
|
|
97
|
-
it('should render drag handle', () => {
|
|
98
|
-
const {
|
|
99
|
-
container
|
|
100
|
-
} = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_choiceTile.ChoiceTile, defaultProps));
|
|
101
|
-
const dragHandle = container.querySelector('[data-testid="DragHandleIcon"]');
|
|
102
|
-
expect(container.querySelector('[data-draggable="true"]')).toBeInTheDocument();
|
|
103
|
-
});
|
|
104
|
-
it('should render delete button when editable', () => {
|
|
105
|
-
const {
|
|
106
|
-
container
|
|
107
|
-
} = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_choiceTile.ChoiceTile, defaultProps));
|
|
108
|
-
const deleteButton = container.querySelector('button');
|
|
109
|
-
expect(deleteButton).toBeInTheDocument();
|
|
110
|
-
});
|
|
111
|
-
it('should not render delete button when not editable', () => {
|
|
112
|
-
const props = {
|
|
113
|
-
...defaultProps,
|
|
114
|
-
choice: {
|
|
115
|
-
...defaultProps.choice,
|
|
116
|
-
editable: false
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
const {
|
|
120
|
-
container
|
|
121
|
-
} = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_choiceTile.ChoiceTile, props));
|
|
122
|
-
const buttons = container.querySelectorAll('button');
|
|
123
|
-
// No delete button when not editable
|
|
124
|
-
expect(buttons.length).toBe(0);
|
|
125
|
-
});
|
|
126
|
-
it('should show placeholder for empty choice', () => {
|
|
127
|
-
const props = {
|
|
128
|
-
...defaultProps,
|
|
129
|
-
choice: {
|
|
130
|
-
...defaultProps.choice,
|
|
131
|
-
label: ''
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
(0, _react2.render)(/*#__PURE__*/_react.default.createElement(_choiceTile.ChoiceTile, props));
|
|
135
|
-
const input = _react2.screen.getByTestId('editable-input');
|
|
136
|
-
expect(input).toHaveAttribute('placeholder', 'Enter a choice');
|
|
137
|
-
});
|
|
138
|
-
it('should not show placeholder for target type', () => {
|
|
139
|
-
const props = {
|
|
140
|
-
...defaultProps,
|
|
141
|
-
choice: {
|
|
142
|
-
...defaultProps.choice,
|
|
143
|
-
type: 'target',
|
|
144
|
-
label: ''
|
|
145
|
-
}
|
|
146
|
-
};
|
|
147
|
-
(0, _react2.render)(/*#__PURE__*/_react.default.createElement(_choiceTile.ChoiceTile, props));
|
|
148
|
-
const input = _react2.screen.getByTestId('editable-input');
|
|
149
|
-
expect(input).toHaveAttribute('placeholder', '');
|
|
150
|
-
});
|
|
151
|
-
it('should not show placeholder for LaTeX content', () => {
|
|
152
|
-
const props = {
|
|
153
|
-
...defaultProps,
|
|
154
|
-
choice: {
|
|
155
|
-
...defaultProps.choice,
|
|
156
|
-
label: '<span data-latex="\\frac{1}{2}"></span>'
|
|
157
|
-
}
|
|
158
|
-
};
|
|
159
|
-
(0, _react2.render)(/*#__PURE__*/_react.default.createElement(_choiceTile.ChoiceTile, props));
|
|
160
|
-
const input = _react2.screen.getByTestId('editable-input');
|
|
161
|
-
expect(input).toHaveAttribute('placeholder', '');
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
describe('interactions', () => {
|
|
165
|
-
it('should call onDelete when delete button is clicked', () => {
|
|
166
|
-
const {
|
|
167
|
-
container
|
|
168
|
-
} = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_choiceTile.ChoiceTile, defaultProps));
|
|
169
|
-
const deleteButton = container.querySelector('button');
|
|
170
|
-
_react2.fireEvent.click(deleteButton);
|
|
171
|
-
expect(defaultProps.onDelete).toHaveBeenCalled();
|
|
172
|
-
});
|
|
173
|
-
it('should call onChoiceChange when label is changed', () => {
|
|
174
|
-
(0, _react2.render)(/*#__PURE__*/_react.default.createElement(_choiceTile.ChoiceTile, defaultProps));
|
|
175
|
-
const input = _react2.screen.getByTestId('editable-input');
|
|
176
|
-
_react2.fireEvent.change(input, {
|
|
177
|
-
target: {
|
|
178
|
-
value: 'Updated choice'
|
|
179
|
-
}
|
|
180
|
-
});
|
|
181
|
-
expect(defaultProps.onChoiceChange).toHaveBeenCalledWith({
|
|
182
|
-
...defaultProps.choice,
|
|
183
|
-
label: 'Updated choice'
|
|
184
|
-
});
|
|
185
|
-
});
|
|
186
|
-
it('should not allow changes when disabled', () => {
|
|
187
|
-
const props = {
|
|
188
|
-
...defaultProps,
|
|
189
|
-
choice: {
|
|
190
|
-
...defaultProps.choice,
|
|
191
|
-
editable: false
|
|
192
|
-
}
|
|
193
|
-
};
|
|
194
|
-
(0, _react2.render)(/*#__PURE__*/_react.default.createElement(_choiceTile.ChoiceTile, props));
|
|
195
|
-
const input = _react2.screen.getByTestId('editable-input');
|
|
196
|
-
expect(input).toBeDisabled();
|
|
197
|
-
});
|
|
198
|
-
});
|
|
199
|
-
describe('errors', () => {
|
|
200
|
-
it('should display error message when editable and error exists', () => {
|
|
201
|
-
const props = {
|
|
202
|
-
...defaultProps,
|
|
203
|
-
error: 'This field is required'
|
|
204
|
-
};
|
|
205
|
-
(0, _react2.render)(/*#__PURE__*/_react.default.createElement(_choiceTile.ChoiceTile, props));
|
|
206
|
-
const errorElements = _react2.screen.getAllByText('This field is required');
|
|
207
|
-
expect(errorElements).toHaveLength(2); // error appears in both EditableHtml and the component
|
|
208
|
-
expect(errorElements[0]).toBeInTheDocument();
|
|
209
|
-
});
|
|
210
|
-
it('should pass error to EditableHtml', () => {
|
|
211
|
-
const props = {
|
|
212
|
-
...defaultProps,
|
|
213
|
-
error: 'This field is required'
|
|
214
|
-
};
|
|
215
|
-
(0, _react2.render)(/*#__PURE__*/_react.default.createElement(_choiceTile.ChoiceTile, props));
|
|
216
|
-
expect(_react2.screen.getByTestId('editable-error')).toHaveTextContent('This field is required');
|
|
217
|
-
});
|
|
218
|
-
it('should not display error when not editable', () => {
|
|
219
|
-
const props = {
|
|
220
|
-
...defaultProps,
|
|
221
|
-
choice: {
|
|
222
|
-
...defaultProps.choice,
|
|
223
|
-
editable: false
|
|
224
|
-
},
|
|
225
|
-
error: 'This field is required'
|
|
226
|
-
};
|
|
227
|
-
(0, _react2.render)(/*#__PURE__*/_react.default.createElement(_choiceTile.ChoiceTile, props));
|
|
228
|
-
expect(_react2.screen.queryByText('This field is required')).not.toBeInTheDocument();
|
|
229
|
-
});
|
|
230
|
-
});
|
|
231
|
-
describe('image support', () => {
|
|
232
|
-
it('should pass imageSupport to EditableHtml', () => {
|
|
233
|
-
(0, _react2.render)(/*#__PURE__*/_react.default.createElement(_choiceTile.ChoiceTile, defaultProps));
|
|
234
|
-
expect(_react2.screen.getByTestId('editable-html')).toBeInTheDocument();
|
|
235
|
-
});
|
|
236
|
-
it('should pass maxImageWidth and maxImageHeight', () => {
|
|
237
|
-
const props = {
|
|
238
|
-
...defaultProps,
|
|
239
|
-
maxImageWidth: {
|
|
240
|
-
unit: 'px',
|
|
241
|
-
value: 500
|
|
242
|
-
},
|
|
243
|
-
maxImageHeight: {
|
|
244
|
-
unit: 'px',
|
|
245
|
-
value: 400
|
|
246
|
-
}
|
|
247
|
-
};
|
|
248
|
-
(0, _react2.render)(/*#__PURE__*/_react.default.createElement(_choiceTile.ChoiceTile, props));
|
|
249
|
-
expect(_react2.screen.getByTestId('editable-html')).toBeInTheDocument();
|
|
250
|
-
});
|
|
251
|
-
});
|
|
252
|
-
describe('drag and drop IDs', () => {
|
|
253
|
-
it('should generate correct draggable ID', () => {
|
|
254
|
-
const props = {
|
|
255
|
-
...defaultProps,
|
|
256
|
-
choice: {
|
|
257
|
-
id: 'c1',
|
|
258
|
-
label: 'Choice 1',
|
|
259
|
-
type: 'choice',
|
|
260
|
-
editable: true
|
|
261
|
-
}
|
|
262
|
-
};
|
|
263
|
-
(0, _react2.render)(/*#__PURE__*/_react.default.createElement(_choiceTile.ChoiceTile, props));
|
|
264
|
-
// The component uses draggableId: `${type}-${choice.id}` => 'choice-c1'
|
|
265
|
-
expect(_react2.screen.getByTestId('editable-html')).toBeInTheDocument();
|
|
266
|
-
});
|
|
267
|
-
it('should generate correct droppable ID', () => {
|
|
268
|
-
const props = {
|
|
269
|
-
...defaultProps,
|
|
270
|
-
choice: {
|
|
271
|
-
id: 'c1',
|
|
272
|
-
label: 'Choice 1',
|
|
273
|
-
type: 'target',
|
|
274
|
-
editable: false
|
|
275
|
-
}
|
|
276
|
-
};
|
|
277
|
-
(0, _react2.render)(/*#__PURE__*/_react.default.createElement(_choiceTile.ChoiceTile, props));
|
|
278
|
-
// The component uses droppableId: `${type}-drop-${choice.id}` => 'target-drop-c1'
|
|
279
|
-
expect(_react2.screen.getByTestId('editable-html')).toBeInTheDocument();
|
|
280
|
-
});
|
|
281
|
-
});
|
|
282
|
-
});
|
|
283
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfY2hvaWNlVGlsZSIsImplc3QiLCJtb2NrIiwidXNlRHJhZ2dhYmxlIiwiYXR0cmlidXRlcyIsImxpc3RlbmVycyIsIm9uUG9pbnRlckRvd24iLCJmbiIsInNldE5vZGVSZWYiLCJ0cmFuc2Zvcm0iLCJpc0RyYWdnaW5nIiwidXNlRHJvcHBhYmxlIiwiaXNPdmVyIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJtYXJrdXAiLCJvbkNoYW5nZSIsImRpc2FibGVkIiwicGxhY2Vob2xkZXIiLCJlcnJvciIsImNyZWF0ZUVsZW1lbnQiLCJ2YWx1ZSIsImUiLCJ0YXJnZXQiLCJERUZBVUxUX1BMVUdJTlMiLCJjb2xvciIsInRlcnRpYXJ5IiwiZGVzY3JpYmUiLCJkZWZhdWx0UHJvcHMiLCJiZWZvcmVFYWNoIiwiY2hvaWNlIiwiaWQiLCJsYWJlbCIsImVkaXRhYmxlIiwidHlwZSIsImluZGV4IiwiY2hvaWNlcyIsIm9uQ2hvaWNlQ2hhbmdlIiwib25EZWxldGUiLCJpbWFnZVN1cHBvcnQiLCJhZGQiLCJkZWxldGUiLCJzcGVsbENoZWNrIiwidG9vbGJhck9wdHMiLCJwbHVnaW5Qcm9wcyIsIm1heEltYWdlV2lkdGgiLCJ1bml0IiwibWF4SW1hZ2VIZWlnaHQiLCJtYXRoTWxPcHRpb25zIiwiaXQiLCJjb250YWluZXIiLCJyZW5kZXIiLCJDaG9pY2VUaWxlIiwiZXhwZWN0IiwidG9CZVRydXRoeSIsImlucHV0Iiwic2NyZWVuIiwiZ2V0QnlUZXN0SWQiLCJ0b0hhdmVWYWx1ZSIsImRyYWdIYW5kbGUiLCJxdWVyeVNlbGVjdG9yIiwidG9CZUluVGhlRG9jdW1lbnQiLCJkZWxldGVCdXR0b24iLCJwcm9wcyIsImJ1dHRvbnMiLCJxdWVyeVNlbGVjdG9yQWxsIiwibGVuZ3RoIiwidG9CZSIsInRvSGF2ZUF0dHJpYnV0ZSIsImZpcmVFdmVudCIsImNsaWNrIiwidG9IYXZlQmVlbkNhbGxlZCIsImNoYW5nZSIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwidG9CZURpc2FibGVkIiwiZXJyb3JFbGVtZW50cyIsImdldEFsbEJ5VGV4dCIsInRvSGF2ZUxlbmd0aCIsInRvSGF2ZVRleHRDb250ZW50IiwicXVlcnlCeVRleHQiLCJub3QiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2Nob2ljZS10aWxlLnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIsIGZpcmVFdmVudCwgc2NyZWVuIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgJ0B0ZXN0aW5nLWxpYnJhcnkvamVzdC1kb20nO1xuaW1wb3J0IHsgQ2hvaWNlVGlsZSB9IGZyb20gJy4uL2Nob2ljZS10aWxlJztcblxuLy8gTW9jayBkZXBlbmRlbmNpZXNcbmplc3QubW9jaygnQGRuZC1raXQvY29yZScsICgpID0+ICh7XG4gIHVzZURyYWdnYWJsZTogKCkgPT4gKHtcbiAgICBhdHRyaWJ1dGVzOiB7ICdkYXRhLWRyYWdnYWJsZSc6ICd0cnVlJyB9LFxuICAgIGxpc3RlbmVyczogeyBvblBvaW50ZXJEb3duOiBqZXN0LmZuKCkgfSxcbiAgICBzZXROb2RlUmVmOiBqZXN0LmZuKCksXG4gICAgdHJhbnNmb3JtOiBudWxsLFxuICAgIGlzRHJhZ2dpbmc6IGZhbHNlLFxuICB9KSxcbiAgdXNlRHJvcHBhYmxlOiAoKSA9PiAoe1xuICAgIHNldE5vZGVSZWY6IGplc3QuZm4oKSxcbiAgICBpc092ZXI6IGZhbHNlLFxuICB9KSxcbn0pKTtcblxuamVzdC5tb2NrKCdAcGllLWxpYi9lZGl0YWJsZS1odG1sLXRpcC10YXAnLCAoKSA9PiAoe1xuICBfX2VzTW9kdWxlOiB0cnVlLFxuICBkZWZhdWx0OiAoeyBtYXJrdXAsIG9uQ2hhbmdlLCBkaXNhYmxlZCwgcGxhY2Vob2xkZXIsIGVycm9yIH0pID0+IChcbiAgICA8ZGl2IGRhdGEtdGVzdGlkPVwiZWRpdGFibGUtaHRtbFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiZWRpdGFibGUtaW5wdXRcIlxuICAgICAgICB2YWx1ZT17bWFya3VwfVxuICAgICAgICBvbkNoYW5nZT17KGUpID0+IG9uQ2hhbmdlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAvPlxuICAgICAge2Vycm9yICYmIDxkaXYgZGF0YS10ZXN0aWQ9XCJlZGl0YWJsZS1lcnJvclwiPntlcnJvcn08L2Rpdj59XG4gICAgPC9kaXY+XG4gICksXG4gIERFRkFVTFRfUExVR0lOUzogWydib2xkJywgJ2l0YWxpYycsICd1bmRlcmxpbmUnLCAnYnVsbGV0ZWQtbGlzdCcsICdudW1iZXJlZC1saXN0J10sXG59KSk7XG5cbmplc3QubW9jaygnQHBpZS1saWIvcmVuZGVyLXVpJywgKCkgPT4gKHtcbiAgY29sb3I6IHtcbiAgICB0ZXJ0aWFyeTogKCkgPT4gJyM2NjY2NjYnLFxuICB9LFxufSkpO1xuXG5kZXNjcmliZSgnQ2hvaWNlVGlsZScsICgpID0+IHtcbiAgbGV0IGRlZmF1bHRQcm9wcztcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICBjaG9pY2U6IHtcbiAgICAgICAgaWQ6ICdjMScsXG4gICAgICAgIGxhYmVsOiAnVGVzdCBjaG9pY2UnLFxuICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgdHlwZTogJ2Nob2ljZScsXG4gICAgICB9LFxuICAgICAgaW5kZXg6IDAsXG4gICAgICBjaG9pY2VzOiBbXSxcbiAgICAgIG9uQ2hvaWNlQ2hhbmdlOiBqZXN0LmZuKCksXG4gICAgICBvbkRlbGV0ZTogamVzdC5mbigpLFxuICAgICAgaW1hZ2VTdXBwb3J0OiB7XG4gICAgICAgIGFkZDogamVzdC5mbigpLFxuICAgICAgICBkZWxldGU6IGplc3QuZm4oKSxcbiAgICAgIH0sXG4gICAgICBzcGVsbENoZWNrOiB0cnVlLFxuICAgICAgdG9vbGJhck9wdHM6IHt9LFxuICAgICAgcGx1Z2luUHJvcHM6IHt9LFxuICAgICAgbWF4SW1hZ2VXaWR0aDogeyB1bml0OiAncHgnLCB2YWx1ZTogMzAwIH0sXG4gICAgICBtYXhJbWFnZUhlaWdodDogeyB1bml0OiAncHgnLCB2YWx1ZTogMzAwIH0sXG4gICAgICBlcnJvcjogbnVsbCxcbiAgICAgIG1hdGhNbE9wdGlvbnM6IHt9LFxuICAgIH07XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZW5kZXIgd2l0aG91dCBjcmFzaGluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPENob2ljZVRpbGUgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZVRydXRoeSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZW5kZXIgd2l0aCBjb3JyZWN0IGxhYmVsJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKDxDaG9pY2VUaWxlIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICAgIGNvbnN0IGlucHV0ID0gc2NyZWVuLmdldEJ5VGVzdElkKCdlZGl0YWJsZS1pbnB1dCcpO1xuICAgICAgZXhwZWN0KGlucHV0KS50b0hhdmVWYWx1ZSgnVGVzdCBjaG9pY2UnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVuZGVyIGRyYWcgaGFuZGxlJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Q2hvaWNlVGlsZSB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgICBjb25zdCBkcmFnSGFuZGxlID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cIkRyYWdIYW5kbGVJY29uXCJdJyk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWRyYWdnYWJsZT1cInRydWVcIl0nKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVuZGVyIGRlbGV0ZSBidXR0b24gd2hlbiBlZGl0YWJsZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPENob2ljZVRpbGUgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgICAgY29uc3QgZGVsZXRlQnV0dG9uID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpO1xuICAgICAgZXhwZWN0KGRlbGV0ZUJ1dHRvbikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IHJlbmRlciBkZWxldGUgYnV0dG9uIHdoZW4gbm90IGVkaXRhYmxlJywgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcbiAgICAgICAgY2hvaWNlOiB7XG4gICAgICAgICAgLi4uZGVmYXVsdFByb3BzLmNob2ljZSxcbiAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxDaG9pY2VUaWxlIHsuLi5wcm9wc30gLz4pO1xuICAgICAgY29uc3QgYnV0dG9ucyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCdidXR0b24nKTtcbiAgICAgIC8vIE5vIGRlbGV0ZSBidXR0b24gd2hlbiBub3QgZWRpdGFibGVcbiAgICAgIGV4cGVjdChidXR0b25zLmxlbmd0aCkudG9CZSgwKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc2hvdyBwbGFjZWhvbGRlciBmb3IgZW1wdHkgY2hvaWNlJywgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcbiAgICAgICAgY2hvaWNlOiB7XG4gICAgICAgICAgLi4uZGVmYXVsdFByb3BzLmNob2ljZSxcbiAgICAgICAgICBsYWJlbDogJycsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICByZW5kZXIoPENob2ljZVRpbGUgey4uLnByb3BzfSAvPik7XG4gICAgICBjb25zdCBpbnB1dCA9IHNjcmVlbi5nZXRCeVRlc3RJZCgnZWRpdGFibGUtaW5wdXQnKTtcbiAgICAgIGV4cGVjdChpbnB1dCkudG9IYXZlQXR0cmlidXRlKCdwbGFjZWhvbGRlcicsICdFbnRlciBhIGNob2ljZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3Qgc2hvdyBwbGFjZWhvbGRlciBmb3IgdGFyZ2V0IHR5cGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxuICAgICAgICBjaG9pY2U6IHtcbiAgICAgICAgICAuLi5kZWZhdWx0UHJvcHMuY2hvaWNlLFxuICAgICAgICAgIHR5cGU6ICd0YXJnZXQnLFxuICAgICAgICAgIGxhYmVsOiAnJyxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIHJlbmRlcig8Q2hvaWNlVGlsZSB7Li4ucHJvcHN9IC8+KTtcbiAgICAgIGNvbnN0IGlucHV0ID0gc2NyZWVuLmdldEJ5VGVzdElkKCdlZGl0YWJsZS1pbnB1dCcpO1xuICAgICAgZXhwZWN0KGlucHV0KS50b0hhdmVBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgJycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3Qgc2hvdyBwbGFjZWhvbGRlciBmb3IgTGFUZVggY29udGVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXG4gICAgICAgIGNob2ljZToge1xuICAgICAgICAgIC4uLmRlZmF1bHRQcm9wcy5jaG9pY2UsXG4gICAgICAgICAgbGFiZWw6ICc8c3BhbiBkYXRhLWxhdGV4PVwiXFxcXGZyYWN7MX17Mn1cIj48L3NwYW4+JyxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIHJlbmRlcig8Q2hvaWNlVGlsZSB7Li4ucHJvcHN9IC8+KTtcbiAgICAgIGNvbnN0IGlucHV0ID0gc2NyZWVuLmdldEJ5VGVzdElkKCdlZGl0YWJsZS1pbnB1dCcpO1xuICAgICAgZXhwZWN0KGlucHV0KS50b0hhdmVBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgJycpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaW50ZXJhY3Rpb25zJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgY2FsbCBvbkRlbGV0ZSB3aGVuIGRlbGV0ZSBidXR0b24gaXMgY2xpY2tlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPENob2ljZVRpbGUgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgICAgY29uc3QgZGVsZXRlQnV0dG9uID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpO1xuXG4gICAgICBmaXJlRXZlbnQuY2xpY2soZGVsZXRlQnV0dG9uKTtcblxuICAgICAgZXhwZWN0KGRlZmF1bHRQcm9wcy5vbkRlbGV0ZSkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjYWxsIG9uQ2hvaWNlQ2hhbmdlIHdoZW4gbGFiZWwgaXMgY2hhbmdlZCcsICgpID0+IHtcbiAgICAgIHJlbmRlcig8Q2hvaWNlVGlsZSB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgICBjb25zdCBpbnB1dCA9IHNjcmVlbi5nZXRCeVRlc3RJZCgnZWRpdGFibGUtaW5wdXQnKTtcblxuICAgICAgZmlyZUV2ZW50LmNoYW5nZShpbnB1dCwgeyB0YXJnZXQ6IHsgdmFsdWU6ICdVcGRhdGVkIGNob2ljZScgfSB9KTtcblxuICAgICAgZXhwZWN0KGRlZmF1bHRQcm9wcy5vbkNob2ljZUNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgICAgICAuLi5kZWZhdWx0UHJvcHMuY2hvaWNlLFxuICAgICAgICBsYWJlbDogJ1VwZGF0ZWQgY2hvaWNlJyxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgYWxsb3cgY2hhbmdlcyB3aGVuIGRpc2FibGVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcbiAgICAgICAgY2hvaWNlOiB7XG4gICAgICAgICAgLi4uZGVmYXVsdFByb3BzLmNob2ljZSxcbiAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICByZW5kZXIoPENob2ljZVRpbGUgey4uLnByb3BzfSAvPik7XG4gICAgICBjb25zdCBpbnB1dCA9IHNjcmVlbi5nZXRCeVRlc3RJZCgnZWRpdGFibGUtaW5wdXQnKTtcblxuICAgICAgZXhwZWN0KGlucHV0KS50b0JlRGlzYWJsZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2Vycm9ycycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGRpc3BsYXkgZXJyb3IgbWVzc2FnZSB3aGVuIGVkaXRhYmxlIGFuZCBlcnJvciBleGlzdHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxuICAgICAgICBlcnJvcjogJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnLFxuICAgICAgfTtcblxuICAgICAgcmVuZGVyKDxDaG9pY2VUaWxlIHsuLi5wcm9wc30gLz4pO1xuICAgICAgY29uc3QgZXJyb3JFbGVtZW50cyA9IHNjcmVlbi5nZXRBbGxCeVRleHQoJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnKTtcbiAgICAgIGV4cGVjdChlcnJvckVsZW1lbnRzKS50b0hhdmVMZW5ndGgoMik7IC8vIGVycm9yIGFwcGVhcnMgaW4gYm90aCBFZGl0YWJsZUh0bWwgYW5kIHRoZSBjb21wb25lbnRcbiAgICAgIGV4cGVjdChlcnJvckVsZW1lbnRzWzBdKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXNzIGVycm9yIHRvIEVkaXRhYmxlSHRtbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXG4gICAgICAgIGVycm9yOiAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCcsXG4gICAgICB9O1xuXG4gICAgICByZW5kZXIoPENob2ljZVRpbGUgey4uLnByb3BzfSAvPik7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGVzdElkKCdlZGl0YWJsZS1lcnJvcicpKS50b0hhdmVUZXh0Q29udGVudCgnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgZGlzcGxheSBlcnJvciB3aGVuIG5vdCBlZGl0YWJsZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXG4gICAgICAgIGNob2ljZToge1xuICAgICAgICAgIC4uLmRlZmF1bHRQcm9wcy5jaG9pY2UsXG4gICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnLFxuICAgICAgfTtcblxuICAgICAgcmVuZGVyKDxDaG9pY2VUaWxlIHsuLi5wcm9wc30gLz4pO1xuICAgICAgZXhwZWN0KHNjcmVlbi5xdWVyeUJ5VGV4dCgnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCcpKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2ltYWdlIHN1cHBvcnQnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBwYXNzIGltYWdlU3VwcG9ydCB0byBFZGl0YWJsZUh0bWwnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoPENob2ljZVRpbGUgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRlc3RJZCgnZWRpdGFibGUtaHRtbCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXNzIG1heEltYWdlV2lkdGggYW5kIG1heEltYWdlSGVpZ2h0JywgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcbiAgICAgICAgbWF4SW1hZ2VXaWR0aDogeyB1bml0OiAncHgnLCB2YWx1ZTogNTAwIH0sXG4gICAgICAgIG1heEltYWdlSGVpZ2h0OiB7IHVuaXQ6ICdweCcsIHZhbHVlOiA0MDAgfSxcbiAgICAgIH07XG5cbiAgICAgIHJlbmRlcig8Q2hvaWNlVGlsZSB7Li4ucHJvcHN9IC8+KTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXN0SWQoJ2VkaXRhYmxlLWh0bWwnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2RyYWcgYW5kIGRyb3AgSURzJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgY29ycmVjdCBkcmFnZ2FibGUgSUQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxuICAgICAgICBjaG9pY2U6IHtcbiAgICAgICAgICBpZDogJ2MxJyxcbiAgICAgICAgICBsYWJlbDogJ0Nob2ljZSAxJyxcbiAgICAgICAgICB0eXBlOiAnY2hvaWNlJyxcbiAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIHJlbmRlcig8Q2hvaWNlVGlsZSB7Li4ucHJvcHN9IC8+KTtcbiAgICAgIC8vIFRoZSBjb21wb25lbnQgdXNlcyBkcmFnZ2FibGVJZDogYCR7dHlwZX0tJHtjaG9pY2UuaWR9YCA9PiAnY2hvaWNlLWMxJ1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRlc3RJZCgnZWRpdGFibGUtaHRtbCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBjb3JyZWN0IGRyb3BwYWJsZSBJRCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXG4gICAgICAgIGNob2ljZToge1xuICAgICAgICAgIGlkOiAnYzEnLFxuICAgICAgICAgIGxhYmVsOiAnQ2hvaWNlIDEnLFxuICAgICAgICAgIHR5cGU6ICd0YXJnZXQnLFxuICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIHJlbmRlcig8Q2hvaWNlVGlsZSB7Li4ucHJvcHN9IC8+KTtcbiAgICAgIC8vIFRoZSBjb21wb25lbnQgdXNlcyBkcm9wcGFibGVJZDogYCR7dHlwZX0tZHJvcC0ke2Nob2ljZS5pZH1gID0+ICd0YXJnZXQtZHJvcC1jMSdcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXN0SWQoJ2VkaXRhYmxlLWh0bWwnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBRSxXQUFBLEdBQUFGLE9BQUE7QUFFQTtBQUNBRyxJQUFJLENBQUNDLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTztFQUNoQ0MsWUFBWSxFQUFFQSxDQUFBLE1BQU87SUFDbkJDLFVBQVUsRUFBRTtNQUFFLGdCQUFnQixFQUFFO0lBQU8sQ0FBQztJQUN4Q0MsU0FBUyxFQUFFO01BQUVDLGFBQWEsRUFBRUwsSUFBSSxDQUFDTSxFQUFFLENBQUM7SUFBRSxDQUFDO0lBQ3ZDQyxVQUFVLEVBQUVQLElBQUksQ0FBQ00sRUFBRSxDQUFDLENBQUM7SUFDckJFLFNBQVMsRUFBRSxJQUFJ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
|
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _react = require("@testing-library/react");
|
|
5
|
-
var _react2 = _interopRequireDefault(require("react"));
|
|
6
|
-
var _lodashEs = require("lodash-es");
|
|
7
|
-
var _nestedProperty = require("nested-property");
|
|
8
|
-
var _design = require("../design");
|
|
9
|
-
var _defaults = _interopRequireDefault(require("../defaults"));
|
|
10
|
-
jest.mock('@pie-lib/config-ui', () => ({
|
|
11
|
-
FeedbackConfig: props => /*#__PURE__*/_react2.default.createElement("div", {
|
|
12
|
-
"data-testid": "feedback-config"
|
|
13
|
-
}),
|
|
14
|
-
FormSection: props => /*#__PURE__*/_react2.default.createElement("div", {
|
|
15
|
-
"data-testid": "form-section"
|
|
16
|
-
}),
|
|
17
|
-
InputContainer: props => /*#__PURE__*/_react2.default.createElement("div", {
|
|
18
|
-
"data-testid": "input-container"
|
|
19
|
-
}),
|
|
20
|
-
layout: {
|
|
21
|
-
ConfigLayout: props => /*#__PURE__*/_react2.default.createElement("div", {
|
|
22
|
-
"data-testid": "config-layout"
|
|
23
|
-
}, props.children)
|
|
24
|
-
},
|
|
25
|
-
settings: {
|
|
26
|
-
Panel: props => /*#__PURE__*/_react2.default.createElement("div", {
|
|
27
|
-
"data-testid": "settings-panel",
|
|
28
|
-
onChange: props.onChange
|
|
29
|
-
}),
|
|
30
|
-
toggle: jest.fn(),
|
|
31
|
-
radio: jest.fn(),
|
|
32
|
-
dropdown: jest.fn()
|
|
33
|
-
}
|
|
34
|
-
}));
|
|
35
|
-
jest.mock('nested-property', () => ({
|
|
36
|
-
set: jest.fn((model, modelPath, v) => {
|
|
37
|
-
model[modelPath] = v;
|
|
38
|
-
return model;
|
|
39
|
-
}),
|
|
40
|
-
get: jest.fn((value, valuePath) => {
|
|
41
|
-
switch (valuePath) {
|
|
42
|
-
case 'value':
|
|
43
|
-
return value[valuePath];
|
|
44
|
-
case 'taget.value':
|
|
45
|
-
return value.target.value;
|
|
46
|
-
default:
|
|
47
|
-
return value;
|
|
48
|
-
}
|
|
49
|
-
})
|
|
50
|
-
}));
|
|
51
|
-
describe('Placement Ordering', () => {
|
|
52
|
-
let onModelChanged;
|
|
53
|
-
let onConfigurationChanged;
|
|
54
|
-
let model;
|
|
55
|
-
let configuration;
|
|
56
|
-
beforeEach(() => {
|
|
57
|
-
onModelChanged = jest.fn();
|
|
58
|
-
onConfigurationChanged = jest.fn();
|
|
59
|
-
model = (0, _lodashEs.cloneDeep)(_defaults.default.model);
|
|
60
|
-
configuration = (0, _lodashEs.cloneDeep)(_defaults.default.configuration);
|
|
61
|
-
});
|
|
62
|
-
describe('logic', () => {
|
|
63
|
-
let instance;
|
|
64
|
-
let modelFn;
|
|
65
|
-
const createInstance = (extras = {}) => {
|
|
66
|
-
const defaults = {
|
|
67
|
-
classes: {},
|
|
68
|
-
className: 'className',
|
|
69
|
-
onModelChanged,
|
|
70
|
-
onConfigurationChanged,
|
|
71
|
-
model,
|
|
72
|
-
configuration
|
|
73
|
-
};
|
|
74
|
-
const props = {
|
|
75
|
-
...defaults,
|
|
76
|
-
...extras
|
|
77
|
-
};
|
|
78
|
-
const inst = new _design.Design(props);
|
|
79
|
-
inst.setState = jest.fn((state, callback) => {
|
|
80
|
-
Object.assign(inst.state, typeof state === 'function' ? state(inst.state) : state);
|
|
81
|
-
if (callback) callback();
|
|
82
|
-
});
|
|
83
|
-
return inst;
|
|
84
|
-
};
|
|
85
|
-
beforeEach(() => {
|
|
86
|
-
instance = createInstance();
|
|
87
|
-
});
|
|
88
|
-
describe('applyUpdate', () => {
|
|
89
|
-
beforeEach(() => {
|
|
90
|
-
modelFn = jest.fn().mockReturnValue({
|
|
91
|
-
...model,
|
|
92
|
-
prompt: 'Updated Item Stem'
|
|
93
|
-
});
|
|
94
|
-
instance.applyUpdate(modelFn);
|
|
95
|
-
});
|
|
96
|
-
it('calls onModelChanged with updated item stem value', () => {
|
|
97
|
-
expect(onModelChanged).toHaveBeenCalledWith({
|
|
98
|
-
...model,
|
|
99
|
-
prompt: 'Updated Item Stem'
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
describe('changeHandler', () => {
|
|
104
|
-
let change;
|
|
105
|
-
beforeEach(() => {
|
|
106
|
-
change = (modelPath, valuePath, value) => {
|
|
107
|
-
const onChoiceAreaLabelChange = instance.changeHandler(modelPath, valuePath);
|
|
108
|
-
onChoiceAreaLabelChange(value);
|
|
109
|
-
};
|
|
110
|
-
});
|
|
111
|
-
it('calls onModelChanged with updated item stem', () => {
|
|
112
|
-
const modelPath = 'prompt';
|
|
113
|
-
const value = 'Updated Choice Area Label';
|
|
114
|
-
change(modelPath, undefined, value);
|
|
115
|
-
expect(onModelChanged).toHaveBeenCalledWith({
|
|
116
|
-
...model,
|
|
117
|
-
[modelPath]: value
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
it('calls onModelChanged with updated item stem', () => {
|
|
121
|
-
const modelPath = 'teacherInstructions';
|
|
122
|
-
const value = 'Updated Choice Area Label';
|
|
123
|
-
change(modelPath, undefined, value);
|
|
124
|
-
expect(onModelChanged).toHaveBeenCalledWith({
|
|
125
|
-
...model,
|
|
126
|
-
[modelPath]: value
|
|
127
|
-
});
|
|
128
|
-
});
|
|
129
|
-
it('calls onModelChanged with updated choice area label', () => {
|
|
130
|
-
const modelPath = 'choiceLabel';
|
|
131
|
-
const valuePath = 'value';
|
|
132
|
-
const value = 'Updated Choice Area Label';
|
|
133
|
-
change(modelPath, valuePath, {
|
|
134
|
-
value
|
|
135
|
-
});
|
|
136
|
-
expect(onModelChanged).toHaveBeenCalledWith({
|
|
137
|
-
...model,
|
|
138
|
-
[modelPath]: value
|
|
139
|
-
});
|
|
140
|
-
});
|
|
141
|
-
it('calls onModelChanged with updated answer area label', () => {
|
|
142
|
-
const modelPath = 'targetLabel';
|
|
143
|
-
const valuePath = 'value';
|
|
144
|
-
const value = 'Updated Answer Area Label';
|
|
145
|
-
change(modelPath, valuePath, {
|
|
146
|
-
value
|
|
147
|
-
});
|
|
148
|
-
expect(onModelChanged).toHaveBeenCalledWith({
|
|
149
|
-
...model,
|
|
150
|
-
[modelPath]: value
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
it('calls onModelChanged with updated feedback', () => {
|
|
154
|
-
const modelPath = 'feedback';
|
|
155
|
-
const value = {};
|
|
156
|
-
change(modelPath, undefined, value);
|
|
157
|
-
expect(onModelChanged).toHaveBeenCalledWith({
|
|
158
|
-
...model,
|
|
159
|
-
[modelPath]: value
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
});
|
|
163
|
-
describe('onPromptChange', () => {
|
|
164
|
-
it('calls update model when prompt changes', () => {
|
|
165
|
-
let newItemStem = 'New item stem';
|
|
166
|
-
instance.onPromptChange(newItemStem);
|
|
167
|
-
expect(onModelChanged).toBeCalledWith({
|
|
168
|
-
...model,
|
|
169
|
-
prompt: newItemStem
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
describe('onRationaleChange', () => {
|
|
174
|
-
it('calls update model when prompt changes', () => {
|
|
175
|
-
let newRationale = 'New Rationale';
|
|
176
|
-
instance.onRationaleChange(newRationale);
|
|
177
|
-
expect(onModelChanged).toBeCalledWith({
|
|
178
|
-
...model,
|
|
179
|
-
rationale: newRationale
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
});
|
|
183
|
-
describe('onChoiceAreaLabelChange', () => {
|
|
184
|
-
it('calls update model when choice area label changes', () => {
|
|
185
|
-
let newChoiceAreaLabel = 'New Choice Area Label';
|
|
186
|
-
instance.onChoiceAreaLabelChange(newChoiceAreaLabel);
|
|
187
|
-
expect(onModelChanged).toBeCalledWith({
|
|
188
|
-
...model,
|
|
189
|
-
choiceLabel: newChoiceAreaLabel
|
|
190
|
-
});
|
|
191
|
-
});
|
|
192
|
-
});
|
|
193
|
-
describe('onAnswerAreaLabelChange', () => {
|
|
194
|
-
it('calls update model when answer area label changes', () => {
|
|
195
|
-
let newAnswerAreaLabel = 'New Answer Area Label';
|
|
196
|
-
instance.onAnswerAreaLabelChange(newAnswerAreaLabel);
|
|
197
|
-
expect(onModelChanged).toBeCalledWith({
|
|
198
|
-
...model,
|
|
199
|
-
targetLabel: newAnswerAreaLabel
|
|
200
|
-
});
|
|
201
|
-
});
|
|
202
|
-
});
|
|
203
|
-
describe('onFeedbackChange', () => {
|
|
204
|
-
it('calls update model when feedback changes', () => {
|
|
205
|
-
let newFeedback = {
|
|
206
|
-
correct: {
|
|
207
|
-
type: 'custom',
|
|
208
|
-
custom: 'CORRECT'
|
|
209
|
-
},
|
|
210
|
-
incorrect: {
|
|
211
|
-
type: 'custom',
|
|
212
|
-
custom: 'INCORRECT'
|
|
213
|
-
},
|
|
214
|
-
partial: {
|
|
215
|
-
type: 'custom',
|
|
216
|
-
custom: 'PARTIAL'
|
|
217
|
-
}
|
|
218
|
-
};
|
|
219
|
-
instance.onFeedbackChange(newFeedback);
|
|
220
|
-
expect(onModelChanged).toBeCalledWith({
|
|
221
|
-
...model,
|
|
222
|
-
feedback: newFeedback
|
|
223
|
-
});
|
|
224
|
-
});
|
|
225
|
-
});
|
|
226
|
-
describe('onChoiceEditorChange', () => {
|
|
227
|
-
it('calls update model when choices array changes', () => {
|
|
228
|
-
let choices = [{
|
|
229
|
-
id: 'c1',
|
|
230
|
-
label: 'Choice 1'
|
|
231
|
-
}, {
|
|
232
|
-
id: 'c2',
|
|
233
|
-
label: 'Choice 2'
|
|
234
|
-
}];
|
|
235
|
-
let correctResponse = [{
|
|
236
|
-
id: 'c2'
|
|
237
|
-
}, {
|
|
238
|
-
id: 'c1'
|
|
239
|
-
}];
|
|
240
|
-
instance.onChoiceEditorChange(choices, correctResponse);
|
|
241
|
-
expect(onModelChanged).toBeCalledWith({
|
|
242
|
-
...model,
|
|
243
|
-
choices,
|
|
244
|
-
correctResponse
|
|
245
|
-
});
|
|
246
|
-
});
|
|
247
|
-
});
|
|
248
|
-
describe('onSettingsChange', () => {
|
|
249
|
-
it('renders with config layout', () => {
|
|
250
|
-
const {
|
|
251
|
-
container
|
|
252
|
-
} = (0, _react.render)(/*#__PURE__*/_react2.default.createElement(_design.Design, {
|
|
253
|
-
model: model,
|
|
254
|
-
configuration: configuration,
|
|
255
|
-
classes: {},
|
|
256
|
-
className: 'className',
|
|
257
|
-
onModelChanged: onModelChanged,
|
|
258
|
-
onConfigurationChanged: onConfigurationChanged
|
|
259
|
-
}));
|
|
260
|
-
|
|
261
|
-
// Check that ConfigLayout renders
|
|
262
|
-
const configLayout = container.querySelector('[data-testid="config-layout"]');
|
|
263
|
-
expect(configLayout).toBeInTheDocument();
|
|
264
|
-
});
|
|
265
|
-
});
|
|
266
|
-
});
|
|
267
|
-
});
|
|
268
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3JlYWN0MiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbG9kYXNoRXMiLCJfbmVzdGVkUHJvcGVydHkiLCJfZGVzaWduIiwiX2RlZmF1bHRzIiwiamVzdCIsIm1vY2siLCJGZWVkYmFja0NvbmZpZyIsInByb3BzIiwiZGVmYXVsdCIsImNyZWF0ZUVsZW1lbnQiLCJGb3JtU2VjdGlvbiIsIklucHV0Q29udGFpbmVyIiwibGF5b3V0IiwiQ29uZmlnTGF5b3V0IiwiY2hpbGRyZW4iLCJzZXR0aW5ncyIsIlBhbmVsIiwib25DaGFuZ2UiLCJ0b2dnbGUiLCJmbiIsInJhZGlvIiwiZHJvcGRvd24iLCJzZXQiLCJtb2RlbCIsIm1vZGVsUGF0aCIsInYiLCJnZXQiLCJ2YWx1ZSIsInZhbHVlUGF0aCIsInRhcmdldCIsImRlc2NyaWJlIiwib25Nb2RlbENoYW5nZWQiLCJvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkIiwiY29uZmlndXJhdGlvbiIsImJlZm9yZUVhY2giLCJjbG9uZURlZXAiLCJkZWZhdWx0VmFsdWVzIiwiaW5zdGFuY2UiLCJtb2RlbEZuIiwiY3JlYXRlSW5zdGFuY2UiLCJleHRyYXMiLCJkZWZhdWx0cyIsImNsYXNzZXMiLCJjbGFzc05hbWUiLCJpbnN0IiwiRGVzaWduIiwic2V0U3RhdGUiLCJzdGF0ZSIsImNhbGxiYWNrIiwiT2JqZWN0IiwiYXNzaWduIiwibW9ja1JldHVyblZhbHVlIiwicHJvbXB0IiwiYXBwbHlVcGRhdGUiLCJpdCIsImV4cGVjdCIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwiY2hhbmdlIiwib25DaG9pY2VBcmVhTGFiZWxDaGFuZ2UiLCJjaGFuZ2VIYW5kbGVyIiwidW5kZWZpbmVkIiwibmV3SXRlbVN0ZW0iLCJvblByb21wdENoYW5nZSIsInRvQmVDYWxsZWRXaXRoIiwibmV3UmF0aW9uYWxlIiwib25SYXRpb25hbGVDaGFuZ2UiLCJyYXRpb25hbGUiLCJuZXdDaG9pY2VBcmVhTGFiZWwiLCJjaG9pY2VMYWJlbCIsIm5ld0Fuc3dlckFyZWFMYWJlbCIsIm9uQW5zd2VyQXJlYUxhYmVsQ2hhbmdlIiwidGFyZ2V0TGFiZWwiLCJuZXdGZWVkYmFjayIsImNvcnJlY3QiLCJ0eXBlIiwiY3VzdG9tIiwiaW5jb3JyZWN0IiwicGFydGlhbCIsIm9uRmVlZGJhY2tDaGFuZ2UiLCJmZWVkYmFjayIsImNob2ljZXMiLCJpZCIsImxhYmVsIiwiY29ycmVjdFJlc3BvbnNlIiwib25DaG9pY2VFZGl0b3JDaGFuZ2UiLCJjb250YWluZXIiLCJyZW5kZXIiLCJjb25maWdMYXlvdXQiLCJxdWVyeVNlbGVjdG9yIiwidG9CZUluVGhlRG9jdW1lbnQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2Rlc2lnbi50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIgfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBnZXQsIHNldCB9IGZyb20gJ25lc3RlZC1wcm9wZXJ0eSc7XG5pbXBvcnQgeyBEZXNpZ24gfSBmcm9tICcuLi9kZXNpZ24nO1xuaW1wb3J0IGRlZmF1bHRWYWx1ZXMgZnJvbSAnLi4vZGVmYXVsdHMnO1xuXG5qZXN0Lm1vY2soJ0BwaWUtbGliL2NvbmZpZy11aScsICgpID0+ICh7XG4gIEZlZWRiYWNrQ29uZmlnOiAocHJvcHMpID0+IDxkaXYgZGF0YS10ZXN0aWQ9XCJmZWVkYmFjay1jb25maWdcIiAvPixcbiAgRm9ybVNlY3Rpb246IChwcm9wcykgPT4gPGRpdiBkYXRhLXRlc3RpZD1cImZvcm0tc2VjdGlvblwiIC8+LFxuICBJbnB1dENvbnRhaW5lcjogKHByb3BzKSA9PiA8ZGl2IGRhdGEtdGVzdGlkPVwiaW5wdXQtY29udGFpbmVyXCIgLz4sXG4gIGxheW91dDoge1xuICAgIENvbmZpZ0xheW91dDogKHByb3BzKSA9PiA8ZGl2IGRhdGEtdGVzdGlkPVwiY29uZmlnLWxheW91dFwiPntwcm9wcy5jaGlsZHJlbn08L2Rpdj4sXG4gIH0sXG4gIHNldHRpbmdzOiB7XG4gICAgUGFuZWw6IChwcm9wcykgPT4gPGRpdiBkYXRhLXRlc3RpZD1cInNldHRpbmdzLXBhbmVsXCIgb25DaGFuZ2U9e3Byb3BzLm9uQ2hhbmdlfSAvPixcbiAgICB0b2dnbGU6IGplc3QuZm4oKSxcbiAgICByYWRpbzogamVzdC5mbigpLFxuICAgIGRyb3Bkb3duOiBqZXN0LmZuKCksXG4gIH0sXG59KSk7XG5cbmplc3QubW9jaygnbmVzdGVkLXByb3BlcnR5JywgKCkgPT4gKHtcbiAgc2V0OiBqZXN0LmZuKChtb2RlbCwgbW9kZWxQYXRoLCB2KSA9PiB7XG4gICAgbW9kZWxbbW9kZWxQYXRoXSA9IHY7XG5cbiAgICByZXR1cm4gbW9kZWw7XG4gIH0pLFxuICBnZXQ6IGplc3QuZm4oKHZhbHVlLCB2YWx1ZVBhdGgpID0+IHtcbiAgICBzd2l0Y2ggKHZhbHVlUGF0aCkge1xuICAgICAgY2FzZSAndmFsdWUnOlxuICAgICAgICByZXR1cm4gdmFsdWVbdmFsdWVQYXRoXTtcbiAgICAgIGNhc2UgJ3RhZ2V0LnZhbHVlJzpcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRhcmdldC52YWx1ZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH0pLFxufSkpO1xuXG5kZXNjcmliZSgnUGxhY2VtZW50IE9yZGVyaW5nJywgKCkgPT4ge1xuICBsZXQgb25Nb2RlbENoYW5nZWQ7XG4gIGxldCBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkO1xuICBsZXQgbW9kZWw7XG4gIGxldCBjb25maWd1cmF0aW9uO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIG9uTW9kZWxDaGFuZ2VkID0gamVzdC5mbigpO1xuICAgIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQgPSBqZXN0LmZuKCk7XG4gICAgbW9kZWwgPSBjbG9uZURlZXAoZGVmYXVsdFZhbHVlcy5tb2RlbCk7XG4gICAgY29uZmlndXJhdGlvbiA9IGNsb25lRGVlcChkZWZhdWx0VmFsdWVzLmNvbmZpZ3VyYXRpb24pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbG9naWMnLCAoKSA9PiB7XG4gICAgbGV0IGluc3RhbmNlO1xuICAgIGxldCBtb2RlbEZuO1xuXG4gICAgY29uc3QgY3JlYXRlSW5zdGFuY2UgPSAoZXh0cmFzID0ge30pID0+IHtcbiAgICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgICBjbGFzc2VzOiB7fSxcbiAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3NOYW1lJyxcbiAgICAgICAgb25Nb2RlbENoYW5nZWQsXG4gICAgICAgIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQsXG4gICAgICAgIG1vZGVsLFxuICAgICAgICBjb25maWd1cmF0aW9uLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHByb3BzID0geyAuLi5kZWZhdWx0cywgLi4uZXh0cmFzIH07XG4gICAgICBjb25zdCBpbnN0ID0gbmV3IERlc2lnbihwcm9wcyk7XG4gICAgICBpbnN0LnNldFN0YXRlID0gamVzdC5mbigoc3RhdGUsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oaW5zdC5zdGF0ZSwgdHlwZW9mIHN0YXRlID09PSAnZnVuY3Rpb24nID8gc3RhdGUoaW5zdC5zdGF0ZSkgOiBzdGF0ZSk7XG4gICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGluc3Q7XG4gICAgfTtcblxuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgaW5zdGFuY2UgPSBjcmVhdGVJbnN0YW5jZSgpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2FwcGx5VXBkYXRlJywgKCkgPT4ge1xuICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICAgIG1vZGVsRm4gPSBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHtcbiAgICAgICAgICAuLi5tb2RlbCxcbiAgICAgICAgICBwcm9tcHQ6ICdVcGRhdGVkIEl0ZW0gU3RlbScsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGluc3RhbmNlLmFwcGx5VXBkYXRlKG1vZGVsRm4pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdjYWxscyBvbk1vZGVsQ2hhbmdlZCB3aXRoIHVwZGF0ZWQgaXRlbSBzdGVtIHZhbHVlJywgKCkgPT4ge1xuICAgICAgICBleHBlY3Qob25Nb2RlbENoYW5nZWQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgICAgICAuLi5tb2RlbCxcbiAgICAgICAgICBwcm9tcHQ6ICdVcGRhdGVkIEl0ZW0gU3RlbScsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnY2hhbmdlSGFuZGxlcicsICgpID0+IHtcbiAgICAgIGxldCBjaGFuZ2U7XG5cbiAgICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgICBjaGFuZ2UgPSAobW9kZWxQYXRoLCB2YWx1ZVBhdGgsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgb25DaG9pY2VBcmVhTGFiZWxDaGFuZ2UgPSBpbnN0YW5jZS5jaGFuZ2VIYW5kbGVyKG1vZGVsUGF0aCwgdmFsdWVQYXRoKTtcblxuICAgICAgICAgIG9uQ2hvaWNlQXJlYUxhYmVsQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnY2FsbHMgb25Nb2RlbENoYW5nZWQgd2l0aCB1cGRhdGVkIGl0ZW0gc3RlbScsICgpID0+IHtcbiAgICAgICAgY29uc3QgbW9kZWxQYXRoID0gJ3Byb21wdCc7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gJ1VwZGF0ZWQgQ2hvaWNlIEFyZWEgTGFiZWwnO1xuXG4gICAgICAgIGNoYW5nZShtb2RlbFBhdGgsIHVuZGVmaW5lZCwgdmFsdWUpO1xuXG4gICAgICAgIGV4cGVjdChvbk1vZGVsQ2hhbmdlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgICAgICAgIC4uLm1vZGVsLFxuICAgICAgICAgIFttb2RlbFBhdGhdOiB2YWx1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2NhbGxzIG9uTW9kZWxDaGFuZ2VkIHdpdGggdXBkYXRlZCBpdGVtIHN0ZW0nLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG1vZGVsUGF0aCA9ICd0ZWFjaGVySW5zdHJ1Y3Rpb25zJztcbiAgICAgICAgY29uc3QgdmFsdWUgPSAnVXBkYXRlZCBDaG9pY2UgQXJlYSBMYWJlbCc7XG5cbiAgICAgICAgY2hhbmdlKG1vZGVsUGF0aCwgdW5kZWZpbmVkLCB2YWx1ZSk7XG5cbiAgICAgICAgZXhwZWN0KG9uTW9kZWxDaGFuZ2VkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICAgICAgLi4ubW9kZWwsXG4gICAgICAgICAgW21vZGVsUGF0aF06IHZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnY2FsbHMgb25Nb2RlbENoYW5nZWQgd2l0aCB1cGRhdGVkIGNob2ljZSBhcmVhIGxhYmVsJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBtb2RlbFBhdGggPSAnY2hvaWNlTGFiZWwnO1xuICAgICAgICBjb25zdCB2YWx1ZVBhdGggPSAndmFsdWUnO1xuICAgICAgICBjb25zdCB2YWx1ZSA9ICdVcGRhdGVkIENob2ljZSBBcmVhIExhYmVsJztcblxuICAgICAgICBjaGFuZ2UobW9kZWxQYXRoLCB2YWx1ZVBhdGgsIHsgdmFsdWUgfSk7XG5cbiAgICAgICAgZXhwZWN0KG9uTW9kZWxDaGFuZ2VkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICAgICAgLi4ubW9kZWwsXG4gICAgICAgICAgW21vZGVsUGF0aF06IHZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnY2FsbHMgb25Nb2RlbENoYW5nZWQgd2l0aCB1cGRhdGVkIGFuc3dlciBhcmVhIGxhYmVsJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBtb2RlbFBhdGggPSAndGFyZ2V0TGFiZWwnO1xuICAgICAgICBjb25zdCB2YWx1ZVBhdGggPSAndmFsdWUnO1xuICAgICAgICBjb25zdCB2YWx1ZSA9ICdVcGRhdGVkIEFuc3dlciBBcmVhIExhYmVsJztcblxuICAgICAgICBjaGFuZ2UobW9kZWxQYXRoLCB2YWx1ZVBhdGgsIHsgdmFsdWUgfSk7XG5cbiAgICAgICAgZXhwZWN0KG9uTW9kZWxDaGFuZ2VkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICAgICAgLi4ubW9kZWwsXG4gICAgICAgICAgW21vZGVsUGF0aF06IHZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnY2FsbHMgb25Nb2RlbENoYW5nZWQgd2l0aCB1cGRhdGVkIGZlZWRiYWNrJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBtb2RlbFBhdGggPSAnZmVlZGJhY2snO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHt9O1xuXG4gICAgICAgIGNoYW5nZShtb2RlbFBhdGgsIHVuZGVmaW5lZCwgdmFsdWUpO1xuXG4gICAgICAgIGV4cGVjdChvbk1vZGVsQ2hhbmdlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgICAgICAgIC4uLm1vZGVsLFxuICAgICAgICAgIFttb2RlbFBhdGhdOiB2YWx1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdvblByb21wdENoYW5nZScsICgpID0+IHtcbiAgICAgIGl0KCdjYWxscyB1cGRhdGUgbW9kZWwgd2hlbiBwcm9tcHQgY2hhbmdlcycsICgpID0+IHtcbiAgICAgICAgbGV0IG5ld0l0ZW1TdGVtID0gJ05ldyBpdGVtIHN0ZW0nO1xuXG4gICAgICAgIGluc3RhbmNlLm9uUHJvbXB0Q2hhbmdlKG5ld0l0ZW1TdGVtKTtcblxuICAgICAgICBleHBlY3Qob25Nb2RlbENoYW5nZWQpLnRvQmVDYWxsZWRXaXRoKHtcbiAgICAgICAgICAuLi5tb2RlbCxcbiAgICAgICAgICBwcm9tcHQ6IG5ld0l0ZW1TdGVtLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ29uUmF0aW9uYWxlQ2hhbmdlJywgKCkgPT4ge1xuICAgICAgaXQoJ2NhbGxzIHVwZGF0ZSBtb2RlbCB3aGVuIHByb21wdCBjaGFuZ2VzJywgKCkgPT4ge1xuICAgICAgICBsZXQgbmV3UmF0aW9uYWxlID0gJ05ldyBSYXRpb25hbGUnO1xuXG4gICAgICAgIGluc3RhbmNlLm9uUmF0aW9uYWxlQ2hhbmdlKG5ld1JhdGlvbmFsZSk7XG5cbiAgICAgICAgZXhwZWN0KG9uTW9kZWxDaGFuZ2VkKS50b0JlQ2FsbGVkV2l0aCh7XG4gICAgICAgICAgLi4ubW9kZWwsXG4gICAgICAgICAgcmF0aW9uYWxlOiBuZXdSYXRpb25hbGUsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25DaG9pY2VBcmVhTGFiZWxDaGFuZ2UnLCAoKSA9PiB7XG4gICAgICBpdCgnY2FsbHMgdXBkYXRlIG1vZGVsIHdoZW4gY2hvaWNlIGFyZWEgbGFiZWwgY2hhbmdlcycsICgpID0+IHtcbiAgICAgICAgbGV0IG5ld0Nob2ljZUFyZWFMYWJlbCA9ICdOZXcgQ2hvaWNlIEFyZWEgTGFiZWwnO1xuXG4gICAgICAgIGluc3RhbmNlLm9uQ2hvaWNlQXJlYUxhYmVsQ2hhbmdlKG5ld0Nob2ljZUFyZWFMYWJlbCk7XG5cbiAgICAgICAgZXhwZWN0KG9uTW9kZWxDaGFuZ2VkKS50b0JlQ2FsbGVkV2l0aCh7XG4gICAgICAgICAgLi4ubW9kZWwsXG4gICAgICAgICAgY2hvaWNlTGFiZWw6IG5ld0Nob2ljZUFyZWFMYWJlbCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdvbkFuc3dlckFyZWFMYWJlbENoYW5nZScsICgpID0+IHtcbiAgICAgIGl0KCdjYWxscyB1cGRhdGUgbW9kZWwgd2hlbiBhbnN3ZXIgYXJlYSBsYWJlbCBjaGFuZ2VzJywgKCkgPT4ge1xuICAgICAgICBsZXQgbmV3QW5zd2VyQXJlYUxhYmVsID0gJ05ldyBBbnN3ZXIgQXJlYSBMYWJlbCc7XG5cbiAgICAgICAgaW5zdGFuY2Uub25BbnN3ZXJBcmVhTGFiZWxDaGFuZ2UobmV3QW5zd2VyQXJlYUxhYmVsKTtcblxuICAgICAgICBleHBlY3Qob25Nb2RlbENoYW5nZWQpLnRvQmVDYWxsZWRXaXRoKHtcbiAgICAgICAgICAuLi5tb2RlbCxcbiAgICAgICAgICB0YXJnZXRMYWJlbDogbmV3QW5zd2VyQXJlYUxhYmVsLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ29uRmVlZGJhY2tDaGFuZ2UnLCAoKSA9PiB7XG4gICAgICBpdCgnY2FsbHMgdXBkYXRlIG1vZGVsIHdoZW4gZmVlZGJhY2sgY2hhbmdlcycsICgpID0+IHtcbiAgICAgICAgbGV0IG5ld0ZlZWRiYWNrID0ge1xuICAgICAgICAgIGNvcnJlY3Q6IHtcbiAgICAgICAgICAgIHR5cGU6ICdjdXN0b20nLFxuICAgICAgICAgICAgY3VzdG9tOiAnQ09SUkVDVCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbmNvcnJlY3Q6IHtcbiAgICAgICAgICAgIHR5cGU6ICdjdXN0b20nLFxuICAgICAgICAgICAgY3VzdG9tOiAnSU5DT1JSRUNUJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhcnRpYWw6IHtcbiAgICAgICAgICAgIHR5cGU6ICdjdXN0b20nLFxuICAgICAgICAgICAgY3VzdG9tOiAnUEFSVElBTCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICBpbnN0YW5jZS5vbkZlZWRiYWNrQ2hhbmdlKG5ld0ZlZWRiYWNrKTtcblxuICAgICAgICBleHBlY3Qob25Nb2RlbENoYW5nZWQpLnRvQmVDYWxsZWRXaXRoKHtcbiAgICAgICAgICAuLi5tb2RlbCxcbiAgICAgICAgICBmZWVkYmFjazogbmV3RmVlZGJhY2ssXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25DaG9pY2VFZGl0b3JDaGFuZ2UnLCAoKSA9PiB7XG4gICAgICBpdCgnY2FsbHMgdXBkYXRlIG1vZGVsIHdoZW4gY2hvaWNlcyBhcnJheSBjaGFuZ2VzJywgKCkgPT4ge1xuICAgICAgICBsZXQgY2hvaWNlcyA9IFtcbiAgICAgICAgICB7IGlkOiAnYzEnLCBsYWJlbDogJ0Nob2ljZSAxJyB9LFxuICAgICAgICAgIHsgaWQ6ICdjMicsIGxhYmVsOiAnQ2hvaWNlIDInIH0sXG4gICAgICAgIF07XG4gICAgICAgIGxldCBjb3JyZWN0UmVzcG9uc2UgPSBbeyBpZDogJ2MyJyB9LCB7IGlkOiAnYzEnIH1dO1xuXG4gICAgICAgIGluc3RhbmNlLm9uQ2hvaWNlRWRpdG9yQ2hhbmdlKGNob2ljZXMsIGNvcnJlY3RSZXNwb25zZSk7XG5cbiAgICAgICAgZXhwZWN0KG9uTW9kZWxDaGFuZ2VkKS50b0JlQ2FsbGVkV2l0aCh7XG4gICAgICAgICAgLi4ubW9kZWwsXG4gICAgICAgICAgY2hvaWNlcyxcbiAgICAgICAgICBjb3JyZWN0UmVzcG9uc2UsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25TZXR0aW5nc0NoYW5nZScsICgpID0+IHtcbiAgICAgIGl0KCdyZW5kZXJzIHdpdGggY29uZmlnIGxheW91dCcsICgpID0+IHtcbiAgICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgICA8RGVzaWduXG4gICAgICAgICAgICBtb2RlbD17bW9kZWx9XG4gICAgICAgICAgICBjb25maWd1cmF0aW9uPXtjb25maWd1cmF0aW9ufVxuICAgICAgICAgICAgY2xhc3Nlcz17e319XG4gICAgICAgICAgICBjbGFzc05hbWU9eydjbGFzc05hbWUnfVxuICAgICAgICAgICAgb25Nb2RlbENoYW5nZWQ9e29uTW9kZWxDaGFuZ2VkfVxuICAgICAgICAgICAgb25Db25maWd1cmF0aW9uQ2hhbmdlZD17b25Db25maWd1cmF0aW9uQ2hhbmdlZH1cbiAgICAgICAgICAvPixcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBDaGVjayB0aGF0IENvbmZpZ0xheW91dCByZW5kZXJzXG4gICAgICAgIGNvbnN0IGNvbmZpZ0xheW91dCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdbZGF0YS10ZXN0aWQ9XCJjb25maWctbGF5b3V0XCJdJyk7XG4gICAgICAgIGV4cGVjdChjb25maWdMYXlvdXQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsU0FBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksZUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssT0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sU0FBQSxHQUFBSixzQkFBQSxDQUFBRixPQUFBO0FBRUFPLElBQUksQ0FBQ0MsSUFBSSxDQUFDLG9CQUFvQixFQUFFLE9BQU87RUFDckNDLGNBQWMsRUFBR0MsS0FBSyxpQkFBS1QsT0FBQSxDQUFBVSxPQUFBLENBQUFDLGFBQUE7SUFBSyxlQUFZO0VBQWlCLENBQUUsQ0FBQztFQUNoRUMsV0FBVyxFQUFHSCxLQUFLLGlCQUFLVCxPQUFBLENBQUFVLE9BQUEsQ0FBQUMsYUFBQTtJQUFLLGVBQVk7RUFBYyxDQUFFLENBQUM7RUFDMURFLGNBQWMsRUFBR0osS0FBSyxpQkFBS1QsT0FBQSxDQUFBVSxPQUFBLENBQUFDLGFBQUE7SUFBSyxlQUFZO0VBQWlCLENBQUUsQ0FBQztFQUNoRUcsTUFBTSxFQUFFO0lBQ05DLFlBQVksRUFBR04sS0FBSyxpQkFBS1QsT0FBQSxDQUFBVSxPQUFBLENBQUFDLGFBQUE7TUFBSyxlQUFZO0lBQWUsR0FBRUYsS0FBSyxDQUFDTyxRQUFjO0VBQ2pGLENBQUM7RUFDREMs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
|