@pie-element/multiple-choice 13.3.5 → 13.3.6

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/multiple-choice-controller",
3
3
  "private": true,
4
- "version": "8.1.3",
4
+ "version": "8.1.4",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
@@ -0,0 +1,11 @@
1
+ {
2
+ "hash": "1801896442",
3
+ "info": [
4
+ {
5
+ "pie": "@pie-element/multiple-choice",
6
+ "version": {
7
+ "requested": "latest"
8
+ }
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
5
+ var _react = _interopRequireDefault(require("react"));
6
+ var _react2 = require("@testing-library/react");
7
+ var _choiceInput = require("../choice-input");
8
+ describe('ChoiceInput', () => {
9
+ let onChange;
10
+ const mkWrapper = (opts = {}) => {
11
+ const defaultOpts = {
12
+ checked: false,
13
+ disabled: false,
14
+ choiceMode: 'checkbox',
15
+ label: 'label',
16
+ displayKey: '1',
17
+ correctness: 'correct',
18
+ value: 'value',
19
+ classes: {
20
+ label: 'label'
21
+ }
22
+ };
23
+ const finalOpts = {
24
+ ...defaultOpts,
25
+ ...opts
26
+ };
27
+ return (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_choiceInput.ChoiceInput, (0, _extends2.default)({}, finalOpts, {
28
+ onChange: onChange
29
+ })));
30
+ };
31
+ beforeEach(() => {
32
+ onChange = jest.fn();
33
+ });
34
+ describe('onToggleChoice', () => {
35
+ it('calls handler when checkbox is clicked', () => {
36
+ const {
37
+ container
38
+ } = mkWrapper({
39
+ disabled: false
40
+ });
41
+ const input = container.querySelector('input[type="checkbox"]');
42
+ if (input) {
43
+ _react2.fireEvent.click(input);
44
+ expect(onChange).toHaveBeenCalled();
45
+ }
46
+ });
47
+ });
48
+ });
49
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfY2hvaWNlSW5wdXQiLCJkZXNjcmliZSIsIm9uQ2hhbmdlIiwibWtXcmFwcGVyIiwib3B0cyIsImRlZmF1bHRPcHRzIiwiY2hlY2tlZCIsImRpc2FibGVkIiwiY2hvaWNlTW9kZSIsImxhYmVsIiwiZGlzcGxheUtleSIsImNvcnJlY3RuZXNzIiwidmFsdWUiLCJjbGFzc2VzIiwiZmluYWxPcHRzIiwicmVuZGVyIiwiZGVmYXVsdCIsImNyZWF0ZUVsZW1lbnQiLCJDaG9pY2VJbnB1dCIsIl9leHRlbmRzMiIsImJlZm9yZUVhY2giLCJqZXN0IiwiZm4iLCJpdCIsImNvbnRhaW5lciIsImlucHV0IiwicXVlcnlTZWxlY3RvciIsImZpcmVFdmVudCIsImNsaWNrIiwiZXhwZWN0IiwidG9IYXZlQmVlbkNhbGxlZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vY2hvaWNlLWlucHV0LXRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIsIGZpcmVFdmVudCB9IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvcmVhY3QnO1xuaW1wb3J0IHsgQ2hvaWNlSW5wdXQgfSBmcm9tICcuLi9jaG9pY2UtaW5wdXQnO1xuXG5kZXNjcmliZSgnQ2hvaWNlSW5wdXQnLCAoKSA9PiB7XG4gIGxldCBvbkNoYW5nZTtcblxuICBjb25zdCBta1dyYXBwZXIgPSAob3B0cyA9IHt9KSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdE9wdHMgPSB7XG4gICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgIGNob2ljZU1vZGU6ICdjaGVja2JveCcsXG4gICAgICBsYWJlbDogJ2xhYmVsJyxcbiAgICAgIGRpc3BsYXlLZXk6ICcxJyxcbiAgICAgIGNvcnJlY3RuZXNzOiAnY29ycmVjdCcsXG4gICAgICB2YWx1ZTogJ3ZhbHVlJyxcbiAgICAgIGNsYXNzZXM6IHtcbiAgICAgICAgbGFiZWw6ICdsYWJlbCcsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBmaW5hbE9wdHMgPSB7IC4uLmRlZmF1bHRPcHRzLCAuLi5vcHRzIH07XG5cbiAgICByZXR1cm4gcmVuZGVyKDxDaG9pY2VJbnB1dCB7Li4uZmluYWxPcHRzfSBvbkNoYW5nZT17b25DaGFuZ2V9IC8+KTtcbiAgfTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBvbkNoYW5nZSA9IGplc3QuZm4oKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ29uVG9nZ2xlQ2hvaWNlJywgKCkgPT4ge1xuICAgIGl0KCdjYWxscyBoYW5kbGVyIHdoZW4gY2hlY2tib3ggaXMgY2xpY2tlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSBta1dyYXBwZXIoeyBkaXNhYmxlZDogZmFsc2UgfSk7XG4gICAgICBjb25zdCBpbnB1dCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0nKTtcblxuICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgIGZpcmVFdmVudC5jbGljayhpbnB1dCk7XG4gICAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsWUFBQSxHQUFBRixPQUFBO0FBRUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsTUFBTTtFQUM1QixJQUFJQyxRQUFRO0VBRVosTUFBTUMsU0FBUyxHQUFHQSxDQUFDQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUs7SUFDL0IsTUFBTUMsV0FBVyxHQUFHO01BQ2xCQyxPQUFPLEVBQUUsS0FBSztNQUNkQyxRQUFRLEVBQUUsS0FBSztNQUNmQyxVQUFVLEVBQUUsVUFBVTtNQUN0QkMsS0FBSyxFQUFFLE9BQU87TUFDZEMsVUFBVSxFQUFFLEdBQUc7TUFDZkMsV0FBVyxFQUFFLFNBQVM7TUFDdEJDLEtBQUssRUFBRSxPQUFPO01BQ2RDLE9BQU8sRUFBRTtRQUNQSixLQUFLLEVBQUU7TUFDVDtJQUNGLENBQUM7SUFFRCxNQUFNSyxTQUFTLEdBQUc7TUFBRSxHQUFHVCxXQUFXO01BQUUsR0FBR0Q7SUFBSyxDQUFDO0lBRTdDLE9BQU8sSUFBQVcsY0FBTSxlQUFDbkIsTUFBQSxDQUFBb0IsT0FBQSxDQUFBQyxhQUFBLENBQUNqQixZQUFBLENBQUFrQixXQUFXLE1BQUFDLFNBQUEsQ0FBQUgsT0FBQSxNQUFLRixTQUFTO01BQUVaLFFBQVEsRUFBRUE7SUFBUyxFQUFFLENBQUMsQ0FBQztFQUNuRSxDQUFDO0VBRURrQixVQUFVLENBQUMsTUFBTTtJQUNmbEIsUUFBUSxHQUFHbUIsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztFQUN0QixDQUFDLENBQUM7RUFFRnJCLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNO0lBQy9Cc0IsRUFBRSxDQUFDLHdDQUF3QyxFQUFFLE1BQU07TUFDakQsTUFBTTtRQUFFQztNQUFVLENBQUMsR0FBR3JCLFNBQVMsQ0FBQztRQUFFSSxRQUFRLEVBQUU7TUFBTSxDQUFDLENBQUM7TUFDcEQsTUFBTWtCLEtBQUssR0FBR0QsU0FBUyxDQUFDRSxhQUFhLENBQUMsd0JBQXdCLENBQUM7TUFFL0QsSUFBSUQsS0FBSyxFQUFFO1FBQ1RFLGlCQUFTLENBQUNDLEtBQUssQ0FBQ0gsS0FBSyxDQUFDO1FBQ3RCSSxNQUFNLENBQUMzQixRQUFRLENBQUMsQ0FBQzRCLGdCQUFnQixDQUFDLENBQUM7TUFDckM7SUFDRixDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
5
+ var _react = _interopRequireDefault(require("react"));
6
+ var _react2 = require("@testing-library/react");
7
+ var _choiceInput = require("../choice-input");
8
+ describe('ChoiceInput', () => {
9
+ let onChange;
10
+ const mkWrapper = (opts = {}) => {
11
+ const defaultOpts = {
12
+ checked: false,
13
+ disabled: false,
14
+ choiceMode: 'checkbox',
15
+ label: 'label',
16
+ displayKey: '1',
17
+ correctness: 'correct',
18
+ value: 'value',
19
+ classes: {
20
+ label: 'label'
21
+ }
22
+ };
23
+ const finalOpts = {
24
+ ...defaultOpts,
25
+ ...opts
26
+ };
27
+ return (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_choiceInput.ChoiceInput, (0, _extends2.default)({}, finalOpts, {
28
+ onChange: onChange
29
+ })));
30
+ };
31
+ beforeEach(() => {
32
+ onChange = jest.fn();
33
+ });
34
+ describe('onToggleChoice', () => {
35
+ it('calls handler when checkbox is clicked', () => {
36
+ const {
37
+ container
38
+ } = mkWrapper({
39
+ disabled: false
40
+ });
41
+ const input = container.querySelector('input[type="checkbox"]');
42
+ if (input) {
43
+ _react2.fireEvent.click(input);
44
+ expect(onChange).toHaveBeenCalled();
45
+ }
46
+ });
47
+ });
48
+ });
49
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfY2hvaWNlSW5wdXQiLCJkZXNjcmliZSIsIm9uQ2hhbmdlIiwibWtXcmFwcGVyIiwib3B0cyIsImRlZmF1bHRPcHRzIiwiY2hlY2tlZCIsImRpc2FibGVkIiwiY2hvaWNlTW9kZSIsImxhYmVsIiwiZGlzcGxheUtleSIsImNvcnJlY3RuZXNzIiwidmFsdWUiLCJjbGFzc2VzIiwiZmluYWxPcHRzIiwicmVuZGVyIiwiZGVmYXVsdCIsImNyZWF0ZUVsZW1lbnQiLCJDaG9pY2VJbnB1dCIsIl9leHRlbmRzMiIsImJlZm9yZUVhY2giLCJqZXN0IiwiZm4iLCJpdCIsImNvbnRhaW5lciIsImlucHV0IiwicXVlcnlTZWxlY3RvciIsImZpcmVFdmVudCIsImNsaWNrIiwiZXhwZWN0IiwidG9IYXZlQmVlbkNhbGxlZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vY2hvaWNlLWlucHV0LnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIsIGZpcmVFdmVudCB9IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvcmVhY3QnO1xuaW1wb3J0IHsgQ2hvaWNlSW5wdXQgfSBmcm9tICcuLi9jaG9pY2UtaW5wdXQnO1xuXG5kZXNjcmliZSgnQ2hvaWNlSW5wdXQnLCAoKSA9PiB7XG4gIGxldCBvbkNoYW5nZTtcblxuICBjb25zdCBta1dyYXBwZXIgPSAob3B0cyA9IHt9KSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdE9wdHMgPSB7XG4gICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgIGNob2ljZU1vZGU6ICdjaGVja2JveCcsXG4gICAgICBsYWJlbDogJ2xhYmVsJyxcbiAgICAgIGRpc3BsYXlLZXk6ICcxJyxcbiAgICAgIGNvcnJlY3RuZXNzOiAnY29ycmVjdCcsXG4gICAgICB2YWx1ZTogJ3ZhbHVlJyxcbiAgICAgIGNsYXNzZXM6IHtcbiAgICAgICAgbGFiZWw6ICdsYWJlbCcsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBmaW5hbE9wdHMgPSB7IC4uLmRlZmF1bHRPcHRzLCAuLi5vcHRzIH07XG5cbiAgICByZXR1cm4gcmVuZGVyKDxDaG9pY2VJbnB1dCB7Li4uZmluYWxPcHRzfSBvbkNoYW5nZT17b25DaGFuZ2V9IC8+KTtcbiAgfTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBvbkNoYW5nZSA9IGplc3QuZm4oKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ29uVG9nZ2xlQ2hvaWNlJywgKCkgPT4ge1xuICAgIGl0KCdjYWxscyBoYW5kbGVyIHdoZW4gY2hlY2tib3ggaXMgY2xpY2tlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSBta1dyYXBwZXIoeyBkaXNhYmxlZDogZmFsc2UgfSk7XG4gICAgICBjb25zdCBpbnB1dCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0nKTtcblxuICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgIGZpcmVFdmVudC5jbGljayhpbnB1dCk7XG4gICAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsWUFBQSxHQUFBRixPQUFBO0FBRUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsTUFBTTtFQUM1QixJQUFJQyxRQUFRO0VBRVosTUFBTUMsU0FBUyxHQUFHQSxDQUFDQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUs7SUFDL0IsTUFBTUMsV0FBVyxHQUFHO01BQ2xCQyxPQUFPLEVBQUUsS0FBSztNQUNkQyxRQUFRLEVBQUUsS0FBSztNQUNmQyxVQUFVLEVBQUUsVUFBVTtNQUN0QkMsS0FBSyxFQUFFLE9BQU87TUFDZEMsVUFBVSxFQUFFLEdBQUc7TUFDZkMsV0FBVyxFQUFFLFNBQVM7TUFDdEJDLEtBQUssRUFBRSxPQUFPO01BQ2RDLE9BQU8sRUFBRTtRQUNQSixLQUFLLEVBQUU7TUFDVDtJQUNGLENBQUM7SUFFRCxNQUFNSyxTQUFTLEdBQUc7TUFBRSxHQUFHVCxXQUFXO01BQUUsR0FBR0Q7SUFBSyxDQUFDO0lBRTdDLE9BQU8sSUFBQVcsY0FBTSxlQUFDbkIsTUFBQSxDQUFBb0IsT0FBQSxDQUFBQyxhQUFBLENBQUNqQixZQUFBLENBQUFrQixXQUFXLE1BQUFDLFNBQUEsQ0FBQUgsT0FBQSxNQUFLRixTQUFTO01BQUVaLFFBQVEsRUFBRUE7SUFBUyxFQUFFLENBQUMsQ0FBQztFQUNuRSxDQUFDO0VBRURrQixVQUFVLENBQUMsTUFBTTtJQUNmbEIsUUFBUSxHQUFHbUIsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztFQUN0QixDQUFDLENBQUM7RUFFRnJCLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNO0lBQy9Cc0IsRUFBRSxDQUFDLHdDQUF3QyxFQUFFLE1BQU07TUFDakQsTUFBTTtRQUFFQztNQUFVLENBQUMsR0FBR3JCLFNBQVMsQ0FBQztRQUFFSSxRQUFRLEVBQUU7TUFBTSxDQUFDLENBQUM7TUFDcEQsTUFBTWtCLEtBQUssR0FBR0QsU0FBUyxDQUFDRSxhQUFhLENBQUMsd0JBQXdCLENBQUM7TUFFL0QsSUFBSUQsS0FBSyxFQUFFO1FBQ1RFLGlCQUFTLENBQUNDLEtBQUssQ0FBQ0gsS0FBSyxDQUFDO1FBQ3RCSSxNQUFNLENBQUMzQixRQUFRLENBQUMsQ0FBQzRCLGdCQUFnQixDQUFDLENBQUM7TUFDckM7SUFDRixDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,206 @@
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 _piePlayerEvents = require("@pie-framework/pie-player-events");
7
+ var _main = _interopRequireDefault(require("../main"));
8
+ var _index = _interopRequireWildcard(require("../index"));
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (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 (const 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); }
10
+ jest.useFakeTimers();
11
+ jest.mock('@pie-lib/math-rendering', () => ({
12
+ renderMath: jest.fn()
13
+ }));
14
+ jest.mock('lodash-es', () => {
15
+ const lodash = require('lodash');
16
+ return {
17
+ ...lodash,
18
+ debounce: jest.fn(fn => fn)
19
+ };
20
+ });
21
+
22
+ // Mock the render-ui PreviewLayout
23
+ jest.mock('@pie-lib/render-ui', () => ({
24
+ PreviewLayout: ({
25
+ children
26
+ }) => /*#__PURE__*/_react.default.createElement("div", {
27
+ "data-testid": "preview-layout"
28
+ }, children),
29
+ Collapsible: ({
30
+ children,
31
+ labels
32
+ }) => /*#__PURE__*/_react.default.createElement("div", {
33
+ "data-testid": "collapsible"
34
+ }, /*#__PURE__*/_react.default.createElement("button", null, labels?.hidden || 'Show'), children),
35
+ PreviewPrompt: ({
36
+ prompt
37
+ }) => /*#__PURE__*/_react.default.createElement("div", {
38
+ "data-testid": "preview-prompt"
39
+ }, prompt),
40
+ color: {
41
+ text: () => '#000',
42
+ background: () => '#fff',
43
+ primary: () => '#1976d2',
44
+ correct: () => '#4caf50',
45
+ incorrect: () => '#f44336',
46
+ disabled: () => '#9e9e9e'
47
+ }
48
+ }));
49
+ describe('isComplete', () => {
50
+ it.each`
51
+ session | expected
52
+ ${{
53
+ value: [1, 2, 3]
54
+ }} | ${true}
55
+ ${{
56
+ value: []
57
+ }} | ${false}
58
+ ${{}} | ${false}
59
+ ${null} | ${false}
60
+ ${undefined} | ${false}
61
+ `('session = $session is complete => $expected', ({
62
+ session,
63
+ expected
64
+ }) => {
65
+ expect((0, _index.isComplete)(session)).toEqual(expected);
66
+ });
67
+ });
68
+ describe('multiple-choice', () => {
69
+ describe('rendering', () => {
70
+ const renderComponent = (modelOverrides = {}) => {
71
+ const defaultProps = {
72
+ model: {
73
+ choices: [],
74
+ prompt: 'Select an answer',
75
+ ...modelOverrides
76
+ },
77
+ session: {},
78
+ classes: {}
79
+ };
80
+ return (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_main.default, defaultProps));
81
+ };
82
+ it('renders without crashing', () => {
83
+ const {
84
+ container
85
+ } = renderComponent();
86
+ expect(container).toBeInTheDocument();
87
+ });
88
+ it('renders the preview layout wrapper', () => {
89
+ renderComponent();
90
+ expect(_react2.screen.getByTestId('preview-layout')).toBeInTheDocument();
91
+ });
92
+ it('renders with rationale', () => {
93
+ renderComponent({
94
+ rationale: 'This is rationale'
95
+ });
96
+ expect(_react2.screen.getByText('This is rationale')).toBeInTheDocument();
97
+ });
98
+ it('renders with teacherInstructions', () => {
99
+ renderComponent({
100
+ teacherInstructions: 'These are teacher instructions'
101
+ });
102
+ expect(_react2.screen.getByText('These are teacher instructions')).toBeInTheDocument();
103
+ });
104
+ it('renders choices when provided', () => {
105
+ renderComponent({
106
+ choices: [{
107
+ value: 'a',
108
+ label: 'Option A'
109
+ }, {
110
+ value: 'b',
111
+ label: 'Option B'
112
+ }]
113
+ });
114
+ expect(_react2.screen.getByText('Option A')).toBeInTheDocument();
115
+ expect(_react2.screen.getByText('Option B')).toBeInTheDocument();
116
+ });
117
+ });
118
+ describe('events', () => {
119
+ describe('model', () => {
120
+ it('dispatches model set event', () => {
121
+ const el = new _index.default();
122
+ el.tagName = 'mc-el';
123
+ el.model = {};
124
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.ModelSetEvent('mc-el', false, true));
125
+ });
126
+ });
127
+ describe('onChange', () => {
128
+ it('dispatches session changed event - add answer (checkbox)', () => {
129
+ const el = new _index.default();
130
+ el.tagName = 'mc-el';
131
+ el.model = {
132
+ choiceMode: 'checkbox'
133
+ };
134
+ el.session = {
135
+ value: []
136
+ };
137
+ el._onChange({
138
+ value: 'a',
139
+ selected: true
140
+ });
141
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent('mc-el', true));
142
+ });
143
+ it('dispatches session changed event - remove answer (checkbox)', () => {
144
+ const el = new _index.default();
145
+ el.tagName = 'mc-el';
146
+ el.model = {
147
+ choiceMode: 'checkbox'
148
+ };
149
+ el.session = {
150
+ value: ['a']
151
+ };
152
+ el._onChange({
153
+ value: 'a',
154
+ selected: false
155
+ });
156
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent('mc-el', false));
157
+ });
158
+ it('dispatches session changed event - add/remove answer (checkbox)', () => {
159
+ const el = new _index.default();
160
+ el.tagName = 'mc-el';
161
+ el.model = {
162
+ choiceMode: 'checkbox'
163
+ };
164
+ el.session = {
165
+ value: ['1']
166
+ };
167
+ el._onChange({
168
+ id: '2',
169
+ selected: true
170
+ });
171
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent('mc-el', true));
172
+ el._onChange({
173
+ id: '1',
174
+ selected: false
175
+ });
176
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent('mc-el', true));
177
+ el._onChange({
178
+ id: '2',
179
+ selected: false
180
+ });
181
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent('mc-el', false));
182
+ });
183
+ it('dispatches session changed event - add/change answer (radio)', () => {
184
+ const el = new _index.default();
185
+ el.tagName = 'mc-el';
186
+ el.model = {
187
+ choiceMode: 'radio'
188
+ };
189
+ el.session = {
190
+ value: []
191
+ };
192
+ el._onChange({
193
+ value: 'a',
194
+ selected: true
195
+ });
196
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent('mc-el', true));
197
+ el._onChange({
198
+ value: 'b',
199
+ selected: true
200
+ });
201
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent('mc-el', true));
202
+ });
203
+ });
204
+ });
205
+ });
206
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfcGllUGxheWVyRXZlbnRzIiwiX21haW4iLCJfaW5kZXgiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJzZXQiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImplc3QiLCJ1c2VGYWtlVGltZXJzIiwibW9jayIsInJlbmRlck1hdGgiLCJmbiIsImxvZGFzaCIsImRlYm91bmNlIiwiUHJldmlld0xheW91dCIsImNoaWxkcmVuIiwiY3JlYXRlRWxlbWVudCIsIkNvbGxhcHNpYmxlIiwibGFiZWxzIiwiaGlkZGVuIiwiUHJldmlld1Byb21wdCIsInByb21wdCIsImNvbG9yIiwidGV4dCIsImJhY2tncm91bmQiLCJwcmltYXJ5IiwiY29ycmVjdCIsImluY29ycmVjdCIsImRpc2FibGVkIiwiZGVzY3JpYmUiLCJpdCIsImVhY2giLCJ2YWx1ZSIsInVuZGVmaW5lZCIsInNlc3Npb24iLCJleHBlY3RlZCIsImV4cGVjdCIsImlzQ29tcGxldGUiLCJ0b0VxdWFsIiwicmVuZGVyQ29tcG9uZW50IiwibW9kZWxPdmVycmlkZXMiLCJkZWZhdWx0UHJvcHMiLCJtb2RlbCIsImNob2ljZXMiLCJjbGFzc2VzIiwicmVuZGVyIiwiY29udGFpbmVyIiwidG9CZUluVGhlRG9jdW1lbnQiLCJzY3JlZW4iLCJnZXRCeVRlc3RJZCIsInJhdGlvbmFsZSIsImdldEJ5VGV4dCIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJsYWJlbCIsImVsIiwiTXVsdGlwbGVDaG9pY2UiLCJ0YWdOYW1lIiwiZGlzcGF0Y2hFdmVudCIsInRvQmVDYWxsZWRXaXRoIiwiTW9kZWxTZXRFdmVudCIsImNob2ljZU1vZGUiLCJfb25DaGFuZ2UiLCJzZWxlY3RlZCIsIlNlc3Npb25DaGFuZ2VkRXZlbnQiLCJpZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vaW5kZXgtdGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlbmRlciwgc2NyZWVuIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgeyBNb2RlbFNldEV2ZW50LCBTZXNzaW9uQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQHBpZS1mcmFtZXdvcmsvcGllLXBsYXllci1ldmVudHMnO1xuaW1wb3J0IE11bHRpcGxlQ2hvaWNlQ29tcG9uZW50IGZyb20gJy4uL21haW4nO1xuaW1wb3J0IE11bHRpcGxlQ2hvaWNlIGZyb20gJy4uL2luZGV4JztcbmltcG9ydCB7IGlzQ29tcGxldGUgfSBmcm9tICcuLi9pbmRleCc7XG5cbmplc3QudXNlRmFrZVRpbWVycygpO1xuamVzdC5tb2NrKCdAcGllLWxpYi9tYXRoLXJlbmRlcmluZycsICgpID0+ICh7IHJlbmRlck1hdGg6IGplc3QuZm4oKSB9KSk7XG5qZXN0Lm1vY2soJ2xvZGFzaC1lcycsICgpID0+IHtcbiAgY29uc3QgbG9kYXNoID0gcmVxdWlyZSgnbG9kYXNoJyk7XG4gIHJldHVybiB7XG4gICAgLi4ubG9kYXNoLFxuICAgIGRlYm91bmNlOiBqZXN0LmZuKChmbikgPT4gZm4pLFxuICB9O1xufSk7XG5cbi8vIE1vY2sgdGhlIHJlbmRlci11aSBQcmV2aWV3TGF5b3V0XG5qZXN0Lm1vY2soJ0BwaWUtbGliL3JlbmRlci11aScsICgpID0+ICh7XG4gIFByZXZpZXdMYXlvdXQ6ICh7IGNoaWxkcmVuIH0pID0+IDxkaXYgZGF0YS10ZXN0aWQ9XCJwcmV2aWV3LWxheW91dFwiPntjaGlsZHJlbn08L2Rpdj4sXG4gIENvbGxhcHNpYmxlOiAoeyBjaGlsZHJlbiwgbGFiZWxzIH0pID0+IChcbiAgICA8ZGl2IGRhdGEtdGVzdGlkPVwiY29sbGFwc2libGVcIj5cbiAgICAgIDxidXR0b24+e2xhYmVscz8uaGlkZGVuIHx8ICdTaG93J308L2J1dHRvbj5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKSxcbiAgUHJldmlld1Byb21wdDogKHsgcHJvbXB0IH0pID0+IDxkaXYgZGF0YS10ZXN0aWQ9XCJwcmV2aWV3LXByb21wdFwiPntwcm9tcHR9PC9kaXY+LFxuICBjb2xvcjoge1xuICAgIHRleHQ6ICgpID0+ICcjMDAwJyxcbiAgICBiYWNrZ3JvdW5kOiAoKSA9PiAnI2ZmZicsXG4gICAgcHJpbWFyeTogKCkgPT4gJyMxOTc2ZDInLFxuICAgIGNvcnJlY3Q6ICgpID0+ICcjNGNhZjUwJyxcbiAgICBpbmNvcnJlY3Q6ICgpID0+ICcjZjQ0MzM2JyxcbiAgICBkaXNhYmxlZDogKCkgPT4gJyM5ZTllOWUnLFxuICB9LFxufSkpO1xuXG5kZXNjcmliZSgnaXNDb21wbGV0ZScsICgpID0+IHtcbiAgaXQuZWFjaGBcbiAgICBzZXNzaW9uICAgICAgICAgICAgICAgICB8IGV4cGVjdGVkXG4gICAgJHt7IHZhbHVlOiBbMSwgMiwgM10gfX0gfCAke3RydWV9XG4gICAgJHt7IHZhbHVlOiBbXSB9fSAgICAgICAgfCAke2ZhbHNlfVxuICAgICR7e319ICAgICAgICAgICAgICAgICAgIHwgJHtmYWxzZX1cbiAgICAke251bGx9ICAgICAgICAgICAgICAgICB8ICR7ZmFsc2V9XG4gICAgJHt1bmRlZmluZWR9ICAgICAgICAgICAgfCAke2ZhbHNlfVxuICBgKCdzZXNzaW9uID0gJHNlc3Npb24gaXMgY29tcGxldGUgPT4gJGV4cGVjdGVkJywgKHsgc2Vzc2lvbiwgZXhwZWN0ZWQgfSkgPT4ge1xuICAgIGV4cGVjdChpc0NvbXBsZXRlKHNlc3Npb24pKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ211bHRpcGxlLWNob2ljZScsICgpID0+IHtcbiAgZGVzY3JpYmUoJ3JlbmRlcmluZycsICgpID0+IHtcbiAgICBjb25zdCByZW5kZXJDb21wb25lbnQgPSAobW9kZWxPdmVycmlkZXMgPSB7fSkgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAgICAgICBtb2RlbDoge1xuICAgICAgICAgIGNob2ljZXM6IFtdLFxuICAgICAgICAgIHByb21wdDogJ1NlbGVjdCBhbiBhbnN3ZXInLFxuICAgICAgICAgIC4uLm1vZGVsT3ZlcnJpZGVzLFxuICAgICAgICB9LFxuICAgICAgICBzZXNzaW9uOiB7fSxcbiAgICAgICAgY2xhc3Nlczoge30sXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gcmVuZGVyKDxNdWx0aXBsZUNob2ljZUNvbXBvbmVudCB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgfTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KCk7XG4gICAgICBleHBlY3QoY29udGFpbmVyKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgdGhlIHByZXZpZXcgbGF5b3V0IHdyYXBwZXInLCAoKSA9PiB7XG4gICAgICByZW5kZXJDb21wb25lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXN0SWQoJ3ByZXZpZXctbGF5b3V0JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIHJhdGlvbmFsZScsICgpID0+IHtcbiAgICAgIHJlbmRlckNvbXBvbmVudCh7IHJhdGlvbmFsZTogJ1RoaXMgaXMgcmF0aW9uYWxlJyB9KTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdUaGlzIGlzIHJhdGlvbmFsZScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgd2l0aCB0ZWFjaGVySW5zdHJ1Y3Rpb25zJywgKCkgPT4ge1xuICAgICAgcmVuZGVyQ29tcG9uZW50KHsgdGVhY2hlckluc3RydWN0aW9uczogJ1RoZXNlIGFyZSB0ZWFjaGVyIGluc3RydWN0aW9ucycgfSk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnVGhlc2UgYXJlIHRlYWNoZXIgaW5zdHJ1Y3Rpb25zJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBjaG9pY2VzIHdoZW4gcHJvdmlkZWQnLCAoKSA9PiB7XG4gICAgICByZW5kZXJDb21wb25lbnQoe1xuICAgICAgICBjaG9pY2VzOiBbXG4gICAgICAgICAgeyB2YWx1ZTogJ2EnLCBsYWJlbDogJ09wdGlvbiBBJyB9LFxuICAgICAgICAgIHsgdmFsdWU6ICdiJywgbGFiZWw6ICdPcHRpb24gQicgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ09wdGlvbiBBJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnT3B0aW9uIEInKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2V2ZW50cycsICgpID0+IHtcbiAgICBkZXNjcmliZSgnbW9kZWwnLCAoKSA9PiB7XG4gICAgICBpdCgnZGlzcGF0Y2hlcyBtb2RlbCBzZXQgZXZlbnQnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsID0gbmV3IE11bHRpcGxlQ2hvaWNlKCk7XG4gICAgICAgIGVsLnRhZ05hbWUgPSAnbWMtZWwnO1xuICAgICAgICBlbC5tb2RlbCA9IHt9O1xuICAgICAgICBleHBlY3QoZWwuZGlzcGF0Y2hFdmVudCkudG9CZUNhbGxlZFdpdGgobmV3IE1vZGVsU2V0RXZlbnQoJ21jLWVsJywgZmFsc2UsIHRydWUpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ29uQ2hhbmdlJywgKCkgPT4ge1xuICAgICAgaXQoJ2Rpc3BhdGNoZXMgc2Vzc2lvbiBjaGFuZ2VkIGV2ZW50IC0gYWRkIGFuc3dlciAoY2hlY2tib3gpJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBlbCA9IG5ldyBNdWx0aXBsZUNob2ljZSgpO1xuICAgICAgICBlbC50YWdOYW1lID0gJ21jLWVsJztcbiAgICAgICAgZWwubW9kZWwgPSB7IGNob2ljZU1vZGU6ICdjaGVja2JveCcgfTtcbiAgICAgICAgZWwuc2Vzc2lvbiA9IHsgdmFsdWU6IFtdIH07XG4gICAgICAgIGVsLl9vbkNoYW5nZSh7IHZhbHVlOiAnYScsIHNlbGVjdGVkOiB0cnVlIH0pO1xuICAgICAgICBleHBlY3QoZWwuZGlzcGF0Y2hFdmVudCkudG9CZUNhbGxlZFdpdGgobmV3IFNlc3Npb25DaGFuZ2VkRXZlbnQoJ21jLWVsJywgdHJ1ZSkpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdkaXNwYXRjaGVzIHNlc3Npb24gY2hhbmdlZCBldmVudCAtIHJlbW92ZSBhbnN3ZXIgKGNoZWNrYm94KScsICgpID0+IHtcbiAgICAgICAgY29uc3QgZWwgPSBuZXcgTXVsdGlwbGVDaG9pY2UoKTtcbiAgICAgICAgZWwudGFnTmFtZSA9ICdtYy1lbCc7XG4gICAgICAgIGVsLm1vZGVsID0geyBjaG9pY2VNb2RlOiAnY2hlY2tib3gnIH07XG4gICAgICAgIGVsLnNlc3Npb24gPSB7IHZhbHVlOiBbJ2EnXSB9O1xuICAgICAgICBlbC5fb25DaGFuZ2UoeyB2YWx1ZTogJ2EnLCBzZWxlY3RlZDogZmFsc2UgfSk7XG4gICAgICAgIGV4cGVjdChlbC5kaXNwYXRjaEV2ZW50KS50b0JlQ2FsbGVkV2l0aChuZXcgU2Vzc2lvbkNoYW5nZWRFdmVudCgnbWMtZWwnLCBmYWxzZSkpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdkaXNwYXRjaGVzIHNlc3Npb24gY2hhbmdlZCBldmVudCAtIGFkZC9yZW1vdmUgYW5zd2VyIChjaGVja2JveCknLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsID0gbmV3IE11bHRpcGxlQ2hvaWNlKCk7XG4gICAgICAgIGVsLnRhZ05hbWUgPSAnbWMtZWwnO1xuICAgICAgICBlbC5tb2RlbCA9IHsgY2hvaWNlTW9kZTogJ2NoZWNrYm94JyB9O1xuICAgICAgICBlbC5zZXNzaW9uID0geyB2YWx1ZTogWycxJ10gfTtcbiAgICAgICAgZWwuX29uQ2hhbmdlKHsgaWQ6ICcyJywgc2VsZWN0ZWQ6IHRydWUgfSk7XG4gICAgICAgIGV4cGVjdChlbC5kaXNwYXRjaEV2ZW50KS50b0JlQ2FsbGVkV2l0aChuZXcgU2Vzc2lvbkNoYW5nZWRFdmVudCgnbWMtZWwnLCB0cnVlKSk7XG5cbiAgICAgICAgZWwuX29uQ2hhbmdlKHsgaWQ6ICcxJywgc2VsZWN0ZWQ6IGZhbHNlIH0pO1xuICAgICAgICBleHBlY3QoZWwuZGlzcGF0Y2hFdmVudCkudG9CZUNhbGxlZFdpdGgobmV3IFNlc3Npb25DaGFuZ2VkRXZlbnQoJ21jLWVsJywgdHJ1ZSkpO1xuXG4gICAgICAgIGVsLl9vbkNoYW5nZSh7IGlkOiAnMicsIHNlbGVjdGVkOiBmYWxzZSB9KTtcbiAgICAgICAgZXhwZWN0KGVsLmRpc3BhdGNoRXZlbnQpLnRvQmVDYWxsZWRXaXRoKG5ldyBTZXNzaW9uQ2hhbmdlZEV2ZW50KCdtYy1lbCcsIGZhbHNlKSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2Rpc3BhdGNoZXMgc2Vzc2lvbiBjaGFuZ2VkIGV2ZW50IC0gYWRkL2NoYW5nZSBhbnN3ZXIgKHJhZGlvKScsICgpID0+IHtcbiAgICAgICAgY29uc3QgZWwgPSBuZXcgTXVsdGlwbGVDaG9pY2UoKTtcbiAgICAgICAgZWwudGFnTmFtZSA9ICdtYy1lbCc7XG4gICAgICAgIGVsLm1vZGVsID0geyBjaG9pY2VNb2RlOiAncmFkaW8nIH07XG4gICAgICAgIGVsLnNlc3Npb24gPSB7IHZhbHVlOiBbXSB9O1xuICAgICAgICBlbC5fb25DaGFuZ2UoeyB2YWx1ZTogJ2EnLCBzZWxlY3RlZDogdHJ1ZSB9KTtcbiAgICAgICAgZXhwZWN0KGVsLmRpc3BhdGNoRXZlbnQpLnRvQmVDYWxsZWRXaXRoKG5ldyBTZXNzaW9uQ2hhbmdlZEV2ZW50KCdtYy1lbCcsIHRydWUpKTtcbiAgICAgICAgZWwuX29uQ2hhbmdlKHsgdmFsdWU6ICdiJywgc2VsZWN0ZWQ6IHRydWUgfSk7XG4gICAgICAgIGV4cGVjdChlbC5kaXNwYXRjaEV2ZW50KS50b0JlQ2FsbGVkV2l0aChuZXcgU2Vzc2lvbkNoYW5nZWRFdmVudCgnbWMtZWwnLCB0cnVlKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsZ0JBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUwsT0FBQTtBQUFzQyxTQUFBSyx3QkFBQUMsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUgsdUJBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLFFBQUFDLE9BQUEsRUFBQVYsQ0FBQSxpQkFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxTQUFBUSxDQUFBLE1BQUFGLENBQUEsR0FBQUwsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsUUFBQUcsQ0FBQSxDQUFBSyxHQUFBLENBQUFYLENBQUEsVUFBQU0sQ0FBQSxDQUFBTSxHQUFBLENBQUFaLENBQUEsR0FBQU0sQ0FBQSxDQUFBTyxHQUFBLENBQUFiLENBQUEsRUFB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
@@ -0,0 +1,221 @@
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 _piePlayerEvents = require("@pie-framework/pie-player-events");
7
+ var _main = _interopRequireDefault(require("../main"));
8
+ var _index = _interopRequireWildcard(require("../index"));
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (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 (const 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); }
10
+ jest.useFakeTimers();
11
+ jest.mock('@pie-lib/math-rendering', () => ({
12
+ renderMath: jest.fn()
13
+ }));
14
+ jest.mock('@pie-lib/correct-answer-toggle', () => () => null);
15
+ jest.mock('@pie-lib/translator', () => ({
16
+ __esModule: true,
17
+ default: {
18
+ translator: {
19
+ t: key => key
20
+ }
21
+ }
22
+ }));
23
+ jest.mock('../choice', () => {
24
+ const React = require('react');
25
+ return {
26
+ __esModule: true,
27
+ default: ({
28
+ choice
29
+ }) => /*#__PURE__*/React.createElement("div", null, choice.label)
30
+ };
31
+ });
32
+ jest.mock('lodash-es', () => {
33
+ const lodash = require('lodash');
34
+ return {
35
+ ...lodash,
36
+ debounce: jest.fn(fn => fn)
37
+ };
38
+ });
39
+
40
+ // Mock the render-ui PreviewLayout
41
+ jest.mock('@pie-lib/render-ui', () => ({
42
+ PreviewLayout: ({
43
+ children
44
+ }) => /*#__PURE__*/_react.default.createElement("div", {
45
+ "data-testid": "preview-layout"
46
+ }, children),
47
+ Collapsible: ({
48
+ children,
49
+ labels
50
+ }) => /*#__PURE__*/_react.default.createElement("div", {
51
+ "data-testid": "collapsible"
52
+ }, /*#__PURE__*/_react.default.createElement("button", null, labels?.hidden || 'Show'), children),
53
+ PreviewPrompt: ({
54
+ prompt
55
+ }) => /*#__PURE__*/_react.default.createElement("div", {
56
+ "data-testid": "preview-prompt"
57
+ }, prompt),
58
+ color: {
59
+ text: () => '#000',
60
+ background: () => '#fff',
61
+ primary: () => '#1976d2',
62
+ correct: () => '#4caf50',
63
+ incorrect: () => '#f44336',
64
+ disabled: () => '#9e9e9e'
65
+ }
66
+ }));
67
+ describe('isComplete', () => {
68
+ it.each`
69
+ session | expected
70
+ ${{
71
+ value: [1, 2, 3]
72
+ }} | ${true}
73
+ ${{
74
+ value: []
75
+ }} | ${false}
76
+ ${{}} | ${false}
77
+ ${null} | ${false}
78
+ ${undefined} | ${false}
79
+ `('session = $session is complete => $expected', ({
80
+ session,
81
+ expected
82
+ }) => {
83
+ expect((0, _index.isComplete)(session)).toEqual(expected);
84
+ });
85
+ });
86
+ beforeAll(() => {
87
+ customElements.define('pie-multiple-choice', _index.default);
88
+ });
89
+ const makeEl = () => {
90
+ const el = new _index.default();
91
+ el.dispatchEvent = jest.fn();
92
+ return el;
93
+ };
94
+ describe('multiple-choice', () => {
95
+ describe('rendering', () => {
96
+ const renderComponent = (modelOverrides = {}) => {
97
+ const defaultProps = {
98
+ model: {
99
+ choices: [],
100
+ prompt: 'Select an answer',
101
+ ...modelOverrides
102
+ },
103
+ session: {},
104
+ classes: {}
105
+ };
106
+ return (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_main.default, defaultProps));
107
+ };
108
+ it('renders without crashing', () => {
109
+ const {
110
+ container
111
+ } = renderComponent();
112
+ expect(container).toBeInTheDocument();
113
+ });
114
+ it('renders the preview layout wrapper', () => {
115
+ renderComponent();
116
+ expect(_react2.screen.getByTestId('preview-layout')).toBeInTheDocument();
117
+ });
118
+ it('renders with teacherInstructions', () => {
119
+ renderComponent({
120
+ teacherInstructions: 'These are teacher instructions'
121
+ });
122
+ expect(_react2.screen.getByText('These are teacher instructions')).toBeInTheDocument();
123
+ });
124
+ it('renders choices when provided', () => {
125
+ renderComponent({
126
+ choices: [{
127
+ value: 'a',
128
+ label: 'Option A'
129
+ }, {
130
+ value: 'b',
131
+ label: 'Option B'
132
+ }]
133
+ });
134
+ expect(_react2.screen.getByText('Option A')).toBeInTheDocument();
135
+ expect(_react2.screen.getByText('Option B')).toBeInTheDocument();
136
+ });
137
+ });
138
+ describe('events', () => {
139
+ describe('model', () => {
140
+ it('dispatches model set event', () => {
141
+ const el = makeEl();
142
+ el.model = {};
143
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.ModelSetEvent(el.tagName.toLowerCase(), false, true));
144
+ });
145
+ });
146
+ describe('onChange', () => {
147
+ it('dispatches session changed event - add answer (checkbox)', () => {
148
+ const el = makeEl();
149
+ el.model = {
150
+ choiceMode: 'checkbox'
151
+ };
152
+ el.session = {
153
+ value: []
154
+ };
155
+ el._onChange({
156
+ value: 'a',
157
+ selected: true
158
+ });
159
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent(el.tagName.toLowerCase(), true));
160
+ });
161
+ it('dispatches session changed event - remove answer (checkbox)', () => {
162
+ const el = makeEl();
163
+ el.model = {
164
+ choiceMode: 'checkbox'
165
+ };
166
+ el.session = {
167
+ value: ['a']
168
+ };
169
+ el._onChange({
170
+ value: 'a',
171
+ selected: false
172
+ });
173
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent(el.tagName.toLowerCase(), false));
174
+ });
175
+ it('dispatches session changed event - add/remove answer (checkbox)', () => {
176
+ const el = makeEl();
177
+ el.model = {
178
+ choiceMode: 'checkbox'
179
+ };
180
+ el.session = {
181
+ value: ['1']
182
+ };
183
+ el._onChange({
184
+ id: '2',
185
+ selected: true
186
+ });
187
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent(el.tagName.toLowerCase(), true));
188
+ el._onChange({
189
+ id: '1',
190
+ selected: false
191
+ });
192
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent(el.tagName.toLowerCase(), true));
193
+ el._onChange({
194
+ id: '2',
195
+ selected: false
196
+ });
197
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent(el.tagName.toLowerCase(), false));
198
+ });
199
+ it('dispatches session changed event - add/change answer (radio)', () => {
200
+ const el = makeEl();
201
+ el.model = {
202
+ choiceMode: 'radio'
203
+ };
204
+ el.session = {
205
+ value: []
206
+ };
207
+ el._onChange({
208
+ value: 'a',
209
+ selected: true
210
+ });
211
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent(el.tagName.toLowerCase(), true));
212
+ el._onChange({
213
+ value: 'b',
214
+ selected: true
215
+ });
216
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent(el.tagName.toLowerCase(), true));
217
+ });
218
+ });
219
+ });
220
+ });
221
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfcGllUGxheWVyRXZlbnRzIiwiX21haW4iLCJfaW5kZXgiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJzZXQiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImplc3QiLCJ1c2VGYWtlVGltZXJzIiwibW9jayIsInJlbmRlck1hdGgiLCJmbiIsInRyYW5zbGF0b3IiLCJrZXkiLCJSZWFjdCIsImNob2ljZSIsImNyZWF0ZUVsZW1lbnQiLCJsYWJlbCIsImxvZGFzaCIsImRlYm91bmNlIiwiUHJldmlld0xheW91dCIsImNoaWxkcmVuIiwiQ29sbGFwc2libGUiLCJsYWJlbHMiLCJoaWRkZW4iLCJQcmV2aWV3UHJvbXB0IiwicHJvbXB0IiwiY29sb3IiLCJ0ZXh0IiwiYmFja2dyb3VuZCIsInByaW1hcnkiLCJjb3JyZWN0IiwiaW5jb3JyZWN0IiwiZGlzYWJsZWQiLCJkZXNjcmliZSIsIml0IiwiZWFjaCIsInZhbHVlIiwidW5kZWZpbmVkIiwic2Vzc2lvbiIsImV4cGVjdGVkIiwiZXhwZWN0IiwiaXNDb21wbGV0ZSIsInRvRXF1YWwiLCJiZWZvcmVBbGwiLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSIsIk11bHRpcGxlQ2hvaWNlIiwibWFrZUVsIiwiZWwiLCJkaXNwYXRjaEV2ZW50IiwicmVuZGVyQ29tcG9uZW50IiwibW9kZWxPdmVycmlkZXMiLCJkZWZhdWx0UHJvcHMiLCJtb2RlbCIsImNob2ljZXMiLCJjbGFzc2VzIiwicmVuZGVyIiwiY29udGFpbmVyIiwidG9CZUluVGhlRG9jdW1lbnQiLCJzY3JlZW4iLCJnZXRCeVRlc3RJZCIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJnZXRCeVRleHQiLCJ0b0JlQ2FsbGVkV2l0aCIsIk1vZGVsU2V0RXZlbnQiLCJ0YWdOYW1lIiwidG9Mb3dlckNhc2UiLCJjaG9pY2VNb2RlIiwiX29uQ2hhbmdlIiwic2VsZWN0ZWQiLCJTZXNzaW9uQ2hhbmdlZEV2ZW50IiwiaWQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2luZGV4LnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIsIHNjcmVlbiB9IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvcmVhY3QnO1xuaW1wb3J0IHsgTW9kZWxTZXRFdmVudCwgU2Vzc2lvbkNoYW5nZWRFdmVudCB9IGZyb20gJ0BwaWUtZnJhbWV3b3JrL3BpZS1wbGF5ZXItZXZlbnRzJztcbmltcG9ydCBNdWx0aXBsZUNob2ljZUNvbXBvbmVudCBmcm9tICcuLi9tYWluJztcbmltcG9ydCBNdWx0aXBsZUNob2ljZSBmcm9tICcuLi9pbmRleCc7XG5pbXBvcnQgeyBpc0NvbXBsZXRlIH0gZnJvbSAnLi4vaW5kZXgnO1xuXG5qZXN0LnVzZUZha2VUaW1lcnMoKTtcbmplc3QubW9jaygnQHBpZS1saWIvbWF0aC1yZW5kZXJpbmcnLCAoKSA9PiAoeyByZW5kZXJNYXRoOiBqZXN0LmZuKCkgfSkpO1xuamVzdC5tb2NrKCdAcGllLWxpYi9jb3JyZWN0LWFuc3dlci10b2dnbGUnLCAoKSA9PiAoKSA9PiBudWxsKTtcbmplc3QubW9jaygnQHBpZS1saWIvdHJhbnNsYXRvcicsICgpID0+ICh7XG4gIF9fZXNNb2R1bGU6IHRydWUsXG4gIGRlZmF1bHQ6IHsgdHJhbnNsYXRvcjogeyB0OiAoa2V5KSA9PiBrZXkgfSB9LFxufSkpO1xuamVzdC5tb2NrKCcuLi9jaG9pY2UnLCAoKSA9PiB7XG4gIGNvbnN0IFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcbiAgcmV0dXJuIHtcbiAgICBfX2VzTW9kdWxlOiB0cnVlLFxuICAgIGRlZmF1bHQ6ICh7IGNob2ljZSB9KSA9PiA8ZGl2PntjaG9pY2UubGFiZWx9PC9kaXY+LFxuICB9O1xufSk7XG5qZXN0Lm1vY2soJ2xvZGFzaC1lcycsICgpID0+IHtcbiAgY29uc3QgbG9kYXNoID0gcmVxdWlyZSgnbG9kYXNoJyk7XG4gIHJldHVybiB7XG4gICAgLi4ubG9kYXNoLFxuICAgIGRlYm91bmNlOiBqZXN0LmZuKChmbikgPT4gZm4pLFxuICB9O1xufSk7XG5cbi8vIE1vY2sgdGhlIHJlbmRlci11aSBQcmV2aWV3TGF5b3V0XG5qZXN0Lm1vY2soJ0BwaWUtbGliL3JlbmRlci11aScsICgpID0+ICh7XG4gIFByZXZpZXdMYXlvdXQ6ICh7IGNoaWxkcmVuIH0pID0+IDxkaXYgZGF0YS10ZXN0aWQ9XCJwcmV2aWV3LWxheW91dFwiPntjaGlsZHJlbn08L2Rpdj4sXG4gIENvbGxhcHNpYmxlOiAoeyBjaGlsZHJlbiwgbGFiZWxzIH0pID0+IChcbiAgICA8ZGl2IGRhdGEtdGVzdGlkPVwiY29sbGFwc2libGVcIj5cbiAgICAgIDxidXR0b24+e2xhYmVscz8uaGlkZGVuIHx8ICdTaG93J308L2J1dHRvbj5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKSxcbiAgUHJldmlld1Byb21wdDogKHsgcHJvbXB0IH0pID0+IDxkaXYgZGF0YS10ZXN0aWQ9XCJwcmV2aWV3LXByb21wdFwiPntwcm9tcHR9PC9kaXY+LFxuICBjb2xvcjoge1xuICAgIHRleHQ6ICgpID0+ICcjMDAwJyxcbiAgICBiYWNrZ3JvdW5kOiAoKSA9PiAnI2ZmZicsXG4gICAgcHJpbWFyeTogKCkgPT4gJyMxOTc2ZDInLFxuICAgIGNvcnJlY3Q6ICgpID0+ICcjNGNhZjUwJyxcbiAgICBpbmNvcnJlY3Q6ICgpID0+ICcjZjQ0MzM2JyxcbiAgICBkaXNhYmxlZDogKCkgPT4gJyM5ZTllOWUnLFxuICB9LFxufSkpO1xuXG5kZXNjcmliZSgnaXNDb21wbGV0ZScsICgpID0+IHtcbiAgaXQuZWFjaGBcbiAgICBzZXNzaW9uICAgICAgICAgICAgICAgICB8IGV4cGVjdGVkXG4gICAgJHt7IHZhbHVlOiBbMSwgMiwgM10gfX0gfCAke3RydWV9XG4gICAgJHt7IHZhbHVlOiBbXSB9fSAgICAgICAgfCAke2ZhbHNlfVxuICAgICR7e319ICAgICAgICAgICAgICAgICAgIHwgJHtmYWxzZX1cbiAgICAke251bGx9ICAgICAgICAgICAgICAgICB8ICR7ZmFsc2V9XG4gICAgJHt1bmRlZmluZWR9ICAgICAgICAgICAgfCAke2ZhbHNlfVxuICBgKCdzZXNzaW9uID0gJHNlc3Npb24gaXMgY29tcGxldGUgPT4gJGV4cGVjdGVkJywgKHsgc2Vzc2lvbiwgZXhwZWN0ZWQgfSkgPT4ge1xuICAgIGV4cGVjdChpc0NvbXBsZXRlKHNlc3Npb24pKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgfSk7XG59KTtcblxuYmVmb3JlQWxsKCgpID0+IHtcbiAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdwaWUtbXVsdGlwbGUtY2hvaWNlJywgTXVsdGlwbGVDaG9pY2UpO1xufSk7XG5cbmNvbnN0IG1ha2VFbCA9ICgpID0+IHtcbiAgY29uc3QgZWwgPSBuZXcgTXVsdGlwbGVDaG9pY2UoKTtcbiAgZWwuZGlzcGF0Y2hFdmVudCA9IGplc3QuZm4oKTtcbiAgcmV0dXJuIGVsO1xufTtcblxuZGVzY3JpYmUoJ211bHRpcGxlLWNob2ljZScsICgpID0+IHtcbiAgZGVzY3JpYmUoJ3JlbmRlcmluZycsICgpID0+IHtcbiAgICBjb25zdCByZW5kZXJDb21wb25lbnQgPSAobW9kZWxPdmVycmlkZXMgPSB7fSkgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAgICAgICBtb2RlbDoge1xuICAgICAgICAgIGNob2ljZXM6IFtdLFxuICAgICAgICAgIHByb21wdDogJ1NlbGVjdCBhbiBhbnN3ZXInLFxuICAgICAgICAgIC4uLm1vZGVsT3ZlcnJpZGVzLFxuICAgICAgICB9LFxuICAgICAgICBzZXNzaW9uOiB7fSxcbiAgICAgICAgY2xhc3Nlczoge30sXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gcmVuZGVyKDxNdWx0aXBsZUNob2ljZUNvbXBvbmVudCB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgfTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KCk7XG4gICAgICBleHBlY3QoY29udGFpbmVyKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgdGhlIHByZXZpZXcgbGF5b3V0IHdyYXBwZXInLCAoKSA9PiB7XG4gICAgICByZW5kZXJDb21wb25lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXN0SWQoJ3ByZXZpZXctbGF5b3V0JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIHRlYWNoZXJJbnN0cnVjdGlvbnMnLCAoKSA9PiB7XG4gICAgICByZW5kZXJDb21wb25lbnQoeyB0ZWFjaGVySW5zdHJ1Y3Rpb25zOiAnVGhlc2UgYXJlIHRlYWNoZXIgaW5zdHJ1Y3Rpb25zJyB9KTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdUaGVzZSBhcmUgdGVhY2hlciBpbnN0cnVjdGlvbnMnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIGNob2ljZXMgd2hlbiBwcm92aWRlZCcsICgpID0+IHtcbiAgICAgIHJlbmRlckNvbXBvbmVudCh7XG4gICAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgICB7IHZhbHVlOiAnYScsIGxhYmVsOiAnT3B0aW9uIEEnIH0sXG4gICAgICAgICAgeyB2YWx1ZTogJ2InLCBsYWJlbDogJ09wdGlvbiBCJyB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnT3B0aW9uIEEnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdPcHRpb24gQicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZXZlbnRzJywgKCkgPT4ge1xuICAgIGRlc2NyaWJlKCdtb2RlbCcsICgpID0+IHtcbiAgICAgIGl0KCdkaXNwYXRjaGVzIG1vZGVsIHNldCBldmVudCcsICgpID0+IHtcbiAgICAgICAgY29uc3QgZWwgPSBtYWtlRWwoKTtcbiAgICAgICAgZWwubW9kZWwgPSB7fTtcbiAgICAgICAgZXhwZWN0KGVsLmRpc3BhdGNoRXZlbnQpLnRvQmVDYWxsZWRXaXRoKG5ldyBNb2RlbFNldEV2ZW50KGVsLnRhZ05hbWUudG9Mb3dlckNhc2UoKSwgZmFsc2UsIHRydWUpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ29uQ2hhbmdlJywgKCkgPT4ge1xuICAgICAgaXQoJ2Rpc3BhdGNoZXMgc2Vzc2lvbiBjaGFuZ2VkIGV2ZW50IC0gYWRkIGFuc3dlciAoY2hlY2tib3gpJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBlbCA9IG1ha2VFbCgpO1xuICAgICAgICBlbC5tb2RlbCA9IHsgY2hvaWNlTW9kZTogJ2NoZWNrYm94JyB9O1xuICAgICAgICBlbC5zZXNzaW9uID0geyB2YWx1ZTogW10gfTtcbiAgICAgICAgZWwuX29uQ2hhbmdlKHsgdmFsdWU6ICdhJywgc2VsZWN0ZWQ6IHRydWUgfSk7XG4gICAgICAgIGV4cGVjdChlbC5kaXNwYXRjaEV2ZW50KS50b0JlQ2FsbGVkV2l0aChuZXcgU2Vzc2lvbkNoYW5nZWRFdmVudChlbC50YWdOYW1lLnRvTG93ZXJDYXNlKCksIHRydWUpKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZGlzcGF0Y2hlcyBzZXNzaW9uIGNoYW5nZWQgZXZlbnQgLSByZW1vdmUgYW5zd2VyIChjaGVja2JveCknLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsID0gbWFrZUVsKCk7XG4gICAgICAgIGVsLm1vZGVsID0geyBjaG9pY2VNb2RlOiAnY2hlY2tib3gnIH07XG4gICAgICAgIGVsLnNlc3Npb24gPSB7IHZhbHVlOiBbJ2EnXSB9O1xuICAgICAgICBlbC5fb25DaGFuZ2UoeyB2YWx1ZTogJ2EnLCBzZWxlY3RlZDogZmFsc2UgfSk7XG4gICAgICAgIGV4cGVjdChlbC5kaXNwYXRjaEV2ZW50KS50b0JlQ2FsbGVkV2l0aChuZXcgU2Vzc2lvbkNoYW5nZWRFdmVudChlbC50YWdOYW1lLnRvTG93ZXJDYXNlKCksIGZhbHNlKSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2Rpc3BhdGNoZXMgc2Vzc2lvbiBjaGFuZ2VkIGV2ZW50IC0gYWRkL3JlbW92ZSBhbnN3ZXIgKGNoZWNrYm94KScsICgpID0+IHtcbiAgICAgICAgY29uc3QgZWwgPSBtYWtlRWwoKTtcbiAgICAgICAgZWwubW9kZWwgPSB7IGNob2ljZU1vZGU6ICdjaGVja2JveCcgfTtcbiAgICAgICAgZWwuc2Vzc2lvbiA9IHsgdmFsdWU6IFsnMSddIH07XG4gICAgICAgIGVsLl9vbkNoYW5nZSh7IGlkOiAnMicsIHNlbGVjdGVkOiB0cnVlIH0pO1xuICAgICAgICBleHBlY3QoZWwuZGlzcGF0Y2hFdmVudCkudG9CZUNhbGxlZFdpdGgobmV3IFNlc3Npb25DaGFuZ2VkRXZlbnQoZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpLCB0cnVlKSk7XG5cbiAgICAgICAgZWwuX29uQ2hhbmdlKHsgaWQ6ICcxJywgc2VsZWN0ZWQ6IGZhbHNlIH0pO1xuICAgICAgICBleHBlY3QoZWwuZGlzcGF0Y2hFdmVudCkudG9CZUNhbGxlZFdpdGgobmV3IFNlc3Npb25DaGFuZ2VkRXZlbnQoZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpLCB0cnVlKSk7XG5cbiAgICAgICAgZWwuX29uQ2hhbmdlKHsgaWQ6ICcyJywgc2VsZWN0ZWQ6IGZhbHNlIH0pO1xuICAgICAgICBleHBlY3QoZWwuZGlzcGF0Y2hFdmVudCkudG9CZUNhbGxlZFdpdGgobmV3IFNlc3Npb25DaGFuZ2VkRXZlbnQoZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpLCBmYWxzZSkpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdkaXNwYXRjaGVzIHNlc3Npb24gY2hhbmdlZCBldmVudCAtIGFkZC9jaGFuZ2UgYW5zd2VyIChyYWRpbyknLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsID0gbWFrZUVsKCk7XG4gICAgICAgIGVsLm1vZGVsID0geyBjaG9pY2VNb2RlOiAncmFkaW8nIH07XG4gICAgICAgIGVsLnNlc3Npb24gPSB7IHZhbHVlOiBbXSB9O1xuICAgICAgICBlbC5fb25DaGFuZ2UoeyB2YWx1ZTogJ2EnLCBzZWxlY3RlZDogdHJ1ZSB9KTtcbiAgICAgICAgZXhwZWN0KGVsLmRpc3BhdGNoRXZlbnQpLnRvQmVDYWxsZWRXaXRoKG5ldyBTZXNzaW9uQ2hhbmdlZEV2ZW50KGVsLnRhZ05hbWUudG9Mb3dlckNhc2UoKSwgdHJ1ZSkpO1xuICAgICAgICBlbC5fb25DaGFuZ2UoeyB2YWx1ZTogJ2InLCBzZWxlY3RlZDogdHJ1ZSB9KTtcbiAgICAgICAgZXhwZWN0KGVsLmRpc3BhdGNoRXZlbnQpLnRvQmVDYWxsZWRXaXRoKG5ldyBTZXNzaW9uQ2hhbmdlZEV2ZW50KGVsLnRhZ05hbWUudG9Mb3dlckNhc2UoKSwgdHJ1ZSkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGdCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxLQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFDLHVCQUFBLENBQUFMLE9BQUE7QUFBc0MsU0FBQUssd0JBQUFDLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEs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