@pie-element/explicit-constructed-response 11.2.2-beta.3 → 11.2.3
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 +57 -28
- package/configure/CHANGELOG.md +47 -27
- package/configure/lib/alternateSection.js +4 -4
- package/configure/lib/alternateSection.js.map +1 -1
- package/configure/lib/defaults.js +2 -1
- package/configure/lib/defaults.js.map +1 -1
- package/configure/package.json +3 -3
- package/controller/CHANGELOG.md +9 -39
- package/controller/lib/defaults.js +2 -1
- package/controller/lib/defaults.js.map +1 -1
- package/controller/lib/index.js +3 -1
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +1 -1
- package/module/configure.js +1 -0
- package/module/controller.js +6537 -0
- package/module/demo.js +45 -0
- package/module/element.js +1 -0
- package/module/index.html +21 -0
- package/module/manifest.json +18 -0
- package/module/print-demo.js +83 -0
- package/module/print.html +18 -0
- package/module/print.js +1 -0
- package/package.json +5 -5
- package/configure/lib/__tests__/alternateResponses.test.js +0 -503
- package/configure/lib/__tests__/alternateSection.test.js +0 -372
- package/configure/lib/__tests__/ecr-toolbar.test.js +0 -214
- package/configure/lib/__tests__/main.test.js +0 -470
- package/configure/lib/__tests__/markupUtils.test.js +0 -55
- package/configure/lib/__tests__/utils.test.js +0 -62
- package/controller/lib/__tests__/index.spec.js +0 -30
- package/controller/lib/__tests__/index.test.js +0 -950
- package/docs/demo/pie.manifest.json +0 -11
- package/lib/__tests__/main.test.js +0 -166
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
5
|
-
var _react = require("@testing-library/react");
|
|
6
|
-
var _react2 = _interopRequireDefault(require("react"));
|
|
7
|
-
var _styles = require("@mui/material/styles");
|
|
8
|
-
var _main = require("../main");
|
|
9
|
-
jest.mock('@pie-lib/render-ui', () => ({
|
|
10
|
-
PreviewPrompt: ({
|
|
11
|
-
prompt
|
|
12
|
-
}) => /*#__PURE__*/_react2.default.createElement("div", {
|
|
13
|
-
"data-testid": "preview-prompt"
|
|
14
|
-
}, prompt),
|
|
15
|
-
Collapsible: ({
|
|
16
|
-
children
|
|
17
|
-
}) => /*#__PURE__*/_react2.default.createElement("div", {
|
|
18
|
-
"data-testid": "collapsible"
|
|
19
|
-
}, children),
|
|
20
|
-
UiLayout: ({
|
|
21
|
-
children
|
|
22
|
-
}) => /*#__PURE__*/_react2.default.createElement("div", {
|
|
23
|
-
"data-testid": "ui-layout"
|
|
24
|
-
}, children),
|
|
25
|
-
hasText: jest.fn(() => true),
|
|
26
|
-
hasMedia: jest.fn(() => false),
|
|
27
|
-
color: {
|
|
28
|
-
text: () => '#000',
|
|
29
|
-
background: () => '#fff'
|
|
30
|
-
}
|
|
31
|
-
}));
|
|
32
|
-
jest.mock('@pie-lib/correct-answer-toggle', () => ({
|
|
33
|
-
__esModule: true,
|
|
34
|
-
default: ({
|
|
35
|
-
children
|
|
36
|
-
}) => /*#__PURE__*/_react2.default.createElement("div", {
|
|
37
|
-
"data-testid": "correct-answer-toggle"
|
|
38
|
-
}, children)
|
|
39
|
-
}));
|
|
40
|
-
jest.mock('@pie-lib/mask-markup', () => ({
|
|
41
|
-
ConstructedResponse: props => /*#__PURE__*/_react2.default.createElement("div", (0, _extends2.default)({
|
|
42
|
-
"data-testid": "constructed-response"
|
|
43
|
-
}, props))
|
|
44
|
-
}));
|
|
45
|
-
const theme = (0, _styles.createTheme)();
|
|
46
|
-
const choice = (l, v) => ({
|
|
47
|
-
label: l,
|
|
48
|
-
value: v
|
|
49
|
-
});
|
|
50
|
-
describe('Main', () => {
|
|
51
|
-
let onChange = jest.fn();
|
|
52
|
-
beforeEach(() => {
|
|
53
|
-
jest.clearAllMocks();
|
|
54
|
-
});
|
|
55
|
-
const renderMain = (extra = {}) => {
|
|
56
|
-
const props = {
|
|
57
|
-
classes: {},
|
|
58
|
-
prompt: 'Prompt',
|
|
59
|
-
rationale: 'Rationale',
|
|
60
|
-
teacherInstructions: 'Teacher Instructions',
|
|
61
|
-
disabled: false,
|
|
62
|
-
choices: {
|
|
63
|
-
0: [choice('cow', '0'), choice('cattle', '1'), choice('calf', '2')],
|
|
64
|
-
1: [choice('over', '0'), choice('past', '1'), choice('beyond', '2')],
|
|
65
|
-
2: [choice('moon', '0')]
|
|
66
|
-
},
|
|
67
|
-
markup: '<p>The {{0}} jumped {{1}} the {{2}}</p>',
|
|
68
|
-
mode: 'gather',
|
|
69
|
-
feedback: {
|
|
70
|
-
0: 'correct',
|
|
71
|
-
1: 'correct',
|
|
72
|
-
2: 'correct'
|
|
73
|
-
},
|
|
74
|
-
value: {
|
|
75
|
-
0: '1',
|
|
76
|
-
1: '0',
|
|
77
|
-
2: '0'
|
|
78
|
-
},
|
|
79
|
-
onChange,
|
|
80
|
-
...extra
|
|
81
|
-
};
|
|
82
|
-
return (0, _react.render)(/*#__PURE__*/_react2.default.createElement(_styles.ThemeProvider, {
|
|
83
|
-
theme: theme
|
|
84
|
-
}, /*#__PURE__*/_react2.default.createElement(_main.Main, props)));
|
|
85
|
-
};
|
|
86
|
-
describe('logic', () => {
|
|
87
|
-
it('onChange calls the onChange prop after debounce', () => {
|
|
88
|
-
jest.useFakeTimers();
|
|
89
|
-
const {
|
|
90
|
-
container
|
|
91
|
-
} = renderMain();
|
|
92
|
-
|
|
93
|
-
// Get the Main component instance to test internal onChange method
|
|
94
|
-
const mainInstance = new _main.Main({
|
|
95
|
-
classes: {},
|
|
96
|
-
prompt: 'Prompt',
|
|
97
|
-
rationale: 'Rationale',
|
|
98
|
-
teacherInstructions: 'Teacher Instructions',
|
|
99
|
-
disabled: false,
|
|
100
|
-
choices: {
|
|
101
|
-
0: [choice('cow', '0'), choice('cattle', '1'), choice('calf', '2')],
|
|
102
|
-
1: [choice('over', '0'), choice('past', '1'), choice('beyond', '2')],
|
|
103
|
-
2: [choice('moon', '0')]
|
|
104
|
-
},
|
|
105
|
-
markup: '<p>The {{0}} jumped {{1}} the {{2}}</p>',
|
|
106
|
-
mode: 'gather',
|
|
107
|
-
feedback: {
|
|
108
|
-
0: 'correct',
|
|
109
|
-
1: 'correct',
|
|
110
|
-
2: 'correct'
|
|
111
|
-
},
|
|
112
|
-
value: {
|
|
113
|
-
0: '1',
|
|
114
|
-
1: '0',
|
|
115
|
-
2: '0'
|
|
116
|
-
},
|
|
117
|
-
onChange
|
|
118
|
-
});
|
|
119
|
-
mainInstance.onChange({
|
|
120
|
-
0: '0',
|
|
121
|
-
1: '0',
|
|
122
|
-
2: '0'
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
// Fast-forward time to trigger debounced callback
|
|
126
|
-
jest.advanceTimersByTime(400);
|
|
127
|
-
expect(onChange).toHaveBeenCalledWith({
|
|
128
|
-
0: '0',
|
|
129
|
-
1: '0',
|
|
130
|
-
2: '0'
|
|
131
|
-
});
|
|
132
|
-
jest.useRealTimers();
|
|
133
|
-
});
|
|
134
|
-
it('onChange when all responses have max length 1', () => {
|
|
135
|
-
const mainInstance = new _main.Main({
|
|
136
|
-
classes: {},
|
|
137
|
-
disabled: false,
|
|
138
|
-
choices: {
|
|
139
|
-
0: [choice('b', '0')],
|
|
140
|
-
1: [choice('a', '0')],
|
|
141
|
-
2: [choice('c', '0')]
|
|
142
|
-
},
|
|
143
|
-
maxLengthPerChoice: [1, 1, 1],
|
|
144
|
-
markup: '<p>The {{0}} jumped {{1}} the {{2}}</p>',
|
|
145
|
-
mode: 'gather',
|
|
146
|
-
value: {
|
|
147
|
-
0: '1',
|
|
148
|
-
1: '0',
|
|
149
|
-
2: '0'
|
|
150
|
-
},
|
|
151
|
-
onChange
|
|
152
|
-
});
|
|
153
|
-
mainInstance.onChange({
|
|
154
|
-
0: 'a',
|
|
155
|
-
1: 'b',
|
|
156
|
-
2: 'c'
|
|
157
|
-
});
|
|
158
|
-
expect(onChange).toHaveBeenCalledWith({
|
|
159
|
-
0: 'a',
|
|
160
|
-
1: 'b',
|
|
161
|
-
2: 'c'
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
});
|
|
165
|
-
});
|
|
166
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3JlYWN0MiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfc3R5bGVzIiwiX21haW4iLCJqZXN0IiwibW9jayIsIlByZXZpZXdQcm9tcHQiLCJwcm9tcHQiLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCIsIkNvbGxhcHNpYmxlIiwiY2hpbGRyZW4iLCJVaUxheW91dCIsImhhc1RleHQiLCJmbiIsImhhc01lZGlhIiwiY29sb3IiLCJ0ZXh0IiwiYmFja2dyb3VuZCIsIl9fZXNNb2R1bGUiLCJDb25zdHJ1Y3RlZFJlc3BvbnNlIiwicHJvcHMiLCJfZXh0ZW5kczIiLCJ0aGVtZSIsImNyZWF0ZVRoZW1lIiwiY2hvaWNlIiwibCIsInYiLCJsYWJlbCIsInZhbHVlIiwiZGVzY3JpYmUiLCJvbkNoYW5nZSIsImJlZm9yZUVhY2giLCJjbGVhckFsbE1vY2tzIiwicmVuZGVyTWFpbiIsImV4dHJhIiwiY2xhc3NlcyIsInJhdGlvbmFsZSIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJkaXNhYmxlZCIsImNob2ljZXMiLCJtYXJrdXAiLCJtb2RlIiwiZmVlZGJhY2siLCJyZW5kZXIiLCJUaGVtZVByb3ZpZGVyIiwiTWFpbiIsIml0IiwidXNlRmFrZVRpbWVycyIsImNvbnRhaW5lciIsIm1haW5JbnN0YW5jZSIsImFkdmFuY2VUaW1lcnNCeVRpbWUiLCJleHBlY3QiLCJ0b0hhdmVCZWVuQ2FsbGVkV2l0aCIsInVzZVJlYWxUaW1lcnMiLCJtYXhMZW5ndGhQZXJDaG9pY2UiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL21haW4udGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciwgY3JlYXRlVGhlbWUgfSBmcm9tICdAbXVpL21hdGVyaWFsL3N0eWxlcyc7XG5cbmltcG9ydCB7IE1haW4gfSBmcm9tICcuLi9tYWluJztcblxuamVzdC5tb2NrKCdAcGllLWxpYi9yZW5kZXItdWknLCAoKSA9PiAoe1xuICBQcmV2aWV3UHJvbXB0OiAoeyBwcm9tcHQgfSkgPT4gPGRpdiBkYXRhLXRlc3RpZD1cInByZXZpZXctcHJvbXB0XCI+e3Byb21wdH08L2Rpdj4sXG4gIENvbGxhcHNpYmxlOiAoeyBjaGlsZHJlbiB9KSA9PiA8ZGl2IGRhdGEtdGVzdGlkPVwiY29sbGFwc2libGVcIj57Y2hpbGRyZW59PC9kaXY+LFxuICBVaUxheW91dDogKHsgY2hpbGRyZW4gfSkgPT4gPGRpdiBkYXRhLXRlc3RpZD1cInVpLWxheW91dFwiPntjaGlsZHJlbn08L2Rpdj4sXG4gIGhhc1RleHQ6IGplc3QuZm4oKCkgPT4gdHJ1ZSksXG4gIGhhc01lZGlhOiBqZXN0LmZuKCgpID0+IGZhbHNlKSxcbiAgY29sb3I6IHtcbiAgICB0ZXh0OiAoKSA9PiAnIzAwMCcsXG4gICAgYmFja2dyb3VuZDogKCkgPT4gJyNmZmYnLFxuICB9LFxufSkpO1xuXG5qZXN0Lm1vY2soJ0BwaWUtbGliL2NvcnJlY3QtYW5zd2VyLXRvZ2dsZScsICgpID0+ICh7XG4gIF9fZXNNb2R1bGU6IHRydWUsXG4gIGRlZmF1bHQ6ICh7IGNoaWxkcmVuIH0pID0+IDxkaXYgZGF0YS10ZXN0aWQ9XCJjb3JyZWN0LWFuc3dlci10b2dnbGVcIj57Y2hpbGRyZW59PC9kaXY+LFxufSkpO1xuXG5qZXN0Lm1vY2soJ0BwaWUtbGliL21hc2stbWFya3VwJywgKCkgPT4gKHtcbiAgQ29uc3RydWN0ZWRSZXNwb25zZTogKHByb3BzKSA9PiA8ZGl2IGRhdGEtdGVzdGlkPVwiY29uc3RydWN0ZWQtcmVzcG9uc2VcIiB7Li4ucHJvcHN9IC8+LFxufSkpO1xuXG5jb25zdCB0aGVtZSA9IGNyZWF0ZVRoZW1lKCk7XG5cbmNvbnN0IGNob2ljZSA9IChsLCB2KSA9PiAoeyBsYWJlbDogbCwgdmFsdWU6IHYgfSk7XG5cbmRlc2NyaWJlKCdNYWluJywgKCkgPT4ge1xuICBsZXQgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgamVzdC5jbGVhckFsbE1vY2tzKCk7XG4gIH0pO1xuXG4gIGNvbnN0IHJlbmRlck1haW4gPSAoZXh0cmEgPSB7fSkgPT4ge1xuICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgY2xhc3Nlczoge30sXG4gICAgICBwcm9tcHQ6ICdQcm9tcHQnLFxuICAgICAgcmF0aW9uYWxlOiAnUmF0aW9uYWxlJyxcbiAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnM6ICdUZWFjaGVyIEluc3RydWN0aW9ucycsXG4gICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICBjaG9pY2VzOiB7XG4gICAgICAgIDA6IFtjaG9pY2UoJ2NvdycsICcwJyksIGNob2ljZSgnY2F0dGxlJywgJzEnKSwgY2hvaWNlKCdjYWxmJywgJzInKV0sXG4gICAgICAgIDE6IFtjaG9pY2UoJ292ZXInLCAnMCcpLCBjaG9pY2UoJ3Bhc3QnLCAnMScpLCBjaG9pY2UoJ2JleW9uZCcsICcyJyldLFxuICAgICAgICAyOiBbY2hvaWNlKCdtb29uJywgJzAnKV0sXG4gICAgICB9LFxuICAgICAgbWFya3VwOiAnPHA+VGhlIHt7MH19IGp1bXBlZCB7ezF9fSB0aGUge3syfX08L3A+JyxcbiAgICAgIG1vZGU6ICdnYXRoZXInLFxuICAgICAgZmVlZGJhY2s6IHsgMDogJ2NvcnJlY3QnLCAxOiAnY29ycmVjdCcsIDI6ICdjb3JyZWN0JyB9LFxuICAgICAgdmFsdWU6IHsgMDogJzEnLCAxOiAnMCcsIDI6ICcwJyB9LFxuICAgICAgb25DaGFuZ2UsXG4gICAgICAuLi5leHRyYSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlbmRlcihcbiAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+XG4gICAgICAgIDxNYWluIHsuLi5wcm9wc30gLz5cbiAgICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgICApO1xuICB9O1xuXG4gIGRlc2NyaWJlKCdsb2dpYycsICgpID0+IHtcbiAgICBpdCgnb25DaGFuZ2UgY2FsbHMgdGhlIG9uQ2hhbmdlIHByb3AgYWZ0ZXIgZGVib3VuY2UnLCAoKSA9PiB7XG4gICAgICBqZXN0LnVzZUZha2VUaW1lcnMoKTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJNYWluKCk7XG5cbiAgICAgIC8vIEdldCB0aGUgTWFpbiBjb21wb25lbnQgaW5zdGFuY2UgdG8gdGVzdCBpbnRlcm5hbCBvbkNoYW5nZSBtZXRob2RcbiAgICAgIGNvbnN0IG1haW5JbnN0YW5jZSA9IG5ldyBNYWluKHtcbiAgICAgICAgY2xhc3Nlczoge30sXG4gICAgICAgIHByb21wdDogJ1Byb21wdCcsXG4gICAgICAgIHJhdGlvbmFsZTogJ1JhdGlvbmFsZScsXG4gICAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnM6ICdUZWFjaGVyIEluc3RydWN0aW9ucycsXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgY2hvaWNlczoge1xuICAgICAgICAgIDA6IFtjaG9pY2UoJ2NvdycsICcwJyksIGNob2ljZSgnY2F0dGxlJywgJzEnKSwgY2hvaWNlKCdjYWxmJywgJzInKV0sXG4gICAgICAgICAgMTogW2Nob2ljZSgnb3ZlcicsICcwJyksIGNob2ljZSgncGFzdCcsICcxJyksIGNob2ljZSgnYmV5b25kJywgJzInKV0sXG4gICAgICAgICAgMjogW2Nob2ljZSgnbW9vbicsICcwJyldLFxuICAgICAgICB9LFxuICAgICAgICBtYXJrdXA6ICc8cD5UaGUge3swfX0ganVtcGVkIHt7MX19IHRoZSB7ezJ9fTwvcD4nLFxuICAgICAgICBtb2RlOiAnZ2F0aGVyJyxcbiAgICAgICAgZmVlZGJhY2s6IHsgMDogJ2NvcnJlY3QnLCAxOiAnY29ycmVjdCcsIDI6ICdjb3JyZWN0JyB9LFxuICAgICAgICB2YWx1ZTogeyAwOiAnMScsIDE6ICcwJywgMjogJzAnIH0sXG4gICAgICAgIG9uQ2hhbmdlLFxuICAgICAgfSk7XG5cbiAgICAgIG1haW5JbnN0YW5jZS5vbkNoYW5nZSh7IDA6ICcwJywgMTogJzAnLCAyOiAnMCcgfSk7XG5cbiAgICAgIC8vIEZhc3QtZm9yd2FyZCB0aW1lIHRvIHRyaWdnZXIgZGVib3VuY2VkIGNhbGxiYWNrXG4gICAgICBqZXN0LmFkdmFuY2VUaW1lcnNCeVRpbWUoNDAwKTtcblxuICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7IDA6ICcwJywgMTogJzAnLCAyOiAnMCcgfSk7XG5cbiAgICAgIGplc3QudXNlUmVhbFRpbWVycygpO1xuICAgIH0pO1xuXG4gICAgaXQoJ29uQ2hhbmdlIHdoZW4gYWxsIHJlc3BvbnNlcyBoYXZlIG1heCBsZW5ndGggMScsICgpID0+IHtcbiAgICAgIGNvbnN0IG1haW5JbnN0YW5jZSA9IG5ldyBNYWluKHtcbiAgICAgICAgY2xhc3Nlczoge30sXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgY2hvaWNlczoge1xuICAgICAgICAgIDA6IFtjaG9pY2UoJ2InLCAnMCcpXSxcbiAgICAgICAgICAxOiBbY2hvaWNlKCdhJywgJzAnKV0sXG4gICAgICAgICAgMjogW2Nob2ljZSgnYycsICcwJyldLFxuICAgICAgICB9LFxuICAgICAgICBtYXhMZW5ndGhQZXJDaG9pY2U6IFsxLCAxLCAxXSxcbiAgICAgICAgbWFya3VwOiAnPHA+VGhlIHt7MH19IGp1bXBlZCB7ezF9fSB0aGUge3syfX08L3A+JyxcbiAgICAgICAgbW9kZTogJ2dhdGhlcicsXG4gICAgICAgIHZhbHVlOiB7IDA6ICcxJywgMTogJzAnLCAyOiAnMCcgfSxcbiAgICAgICAgb25DaGFuZ2UsXG4gICAgICB9KTtcblxuICAgICAgbWFpbkluc3RhbmNlLm9uQ2hhbmdlKHsgMDogJ2EnLCAxOiAnYicsIDI6ICdjJyB9KTtcblxuICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7IDA6ICdhJywgMTogJ2InLCAyOiAnYycgfSk7XG4gICAgfSk7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
|