@pie-element/hotspot 11.1.1 → 11.1.2-next.1

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.
Files changed (234) hide show
  1. package/configure.js +2 -0
  2. package/controller.js +1 -0
  3. package/dist/author/DeleteWidget.d.ts +38 -0
  4. package/dist/author/DeleteWidget.js +46 -0
  5. package/dist/author/button.d.ts +31 -0
  6. package/dist/author/button.js +27 -0
  7. package/dist/author/buttons/circle.d.ts +18 -0
  8. package/dist/author/buttons/circle.js +25 -0
  9. package/dist/author/buttons/polygon.d.ts +18 -0
  10. package/dist/author/buttons/polygon.js +36 -0
  11. package/dist/author/buttons/rectangle.d.ts +18 -0
  12. package/dist/author/buttons/rectangle.js +36 -0
  13. package/dist/author/defaults.d.ts +157 -0
  14. package/dist/author/defaults.js +119 -0
  15. package/dist/author/hotspot-circle.d.ts +21 -0
  16. package/dist/author/hotspot-circle.js +124 -0
  17. package/dist/author/hotspot-container.d.ts +29 -0
  18. package/dist/author/hotspot-container.js +210 -0
  19. package/dist/author/hotspot-drawable.d.ts +31 -0
  20. package/dist/author/hotspot-drawable.js +312 -0
  21. package/dist/author/hotspot-palette.d.ts +14 -0
  22. package/dist/author/hotspot-palette.js +72 -0
  23. package/dist/author/hotspot-polygon.d.ts +38 -0
  24. package/dist/author/hotspot-polygon.js +200 -0
  25. package/dist/author/hotspot-rectangle.d.ts +20 -0
  26. package/dist/author/hotspot-rectangle.js +119 -0
  27. package/dist/author/icons.d.ts +9 -0
  28. package/dist/author/icons.js +4 -0
  29. package/dist/author/image-konva.d.ts +19 -0
  30. package/dist/author/image-konva.js +49 -0
  31. package/dist/author/index.d.ts +52 -0
  32. package/dist/author/index.js +143 -0
  33. package/dist/author/root.d.ts +15 -0
  34. package/dist/author/root.js +215 -0
  35. package/dist/author/shapes/circle.d.ts +18 -0
  36. package/dist/author/shapes/circle.js +47 -0
  37. package/dist/author/shapes/index.d.ts +12 -0
  38. package/dist/author/shapes/polygon.d.ts +19 -0
  39. package/dist/author/shapes/polygon.js +51 -0
  40. package/dist/author/shapes/rectagle.d.ts +18 -0
  41. package/dist/author/shapes/rectagle.js +57 -0
  42. package/dist/author/shapes/utils.d.ts +19 -0
  43. package/dist/author/shapes/utils.js +16 -0
  44. package/dist/author/upload-control.d.ts +29 -0
  45. package/dist/author/upload-control.js +28 -0
  46. package/dist/author/utils.d.ts +24 -0
  47. package/dist/author/utils.js +83 -0
  48. package/dist/browser/ReactKonva-Z9-1H-UZ.js +19329 -0
  49. package/dist/browser/ReactKonva-Z9-1H-UZ.js.map +1 -0
  50. package/dist/browser/author/index.js +41646 -0
  51. package/dist/browser/author/index.js.map +1 -0
  52. package/dist/browser/browser-CfnAFove.js +219 -0
  53. package/dist/browser/browser-CfnAFove.js.map +1 -0
  54. package/dist/browser/controller/index.js +198 -0
  55. package/dist/browser/controller/index.js.map +1 -0
  56. package/dist/browser/delivery/index.js +2460 -0
  57. package/dist/browser/delivery/index.js.map +1 -0
  58. package/dist/browser/dist-C78LDz6R.js +96 -0
  59. package/dist/browser/dist-C78LDz6R.js.map +1 -0
  60. package/dist/browser/hotspot.css +2 -0
  61. package/dist/controller/defaults.d.ts +35 -0
  62. package/dist/controller/defaults.js +29 -0
  63. package/dist/controller/index.d.ts +22 -0
  64. package/dist/controller/index.js +154 -0
  65. package/dist/controller/utils.d.ts +10 -0
  66. package/dist/controller/utils.js +12 -0
  67. package/dist/delivery/hotspot/circle.d.ts +19 -0
  68. package/dist/delivery/hotspot/circle.js +100 -0
  69. package/dist/delivery/hotspot/container.d.ts +16 -0
  70. package/dist/delivery/hotspot/container.js +150 -0
  71. package/dist/delivery/hotspot/icons.d.ts +10 -0
  72. package/dist/delivery/hotspot/icons.js +4 -0
  73. package/dist/delivery/hotspot/image-konva-tooltip.d.ts +19 -0
  74. package/dist/delivery/hotspot/image-konva-tooltip.js +66 -0
  75. package/dist/delivery/hotspot/index.d.ts +17 -0
  76. package/dist/delivery/hotspot/index.js +114 -0
  77. package/dist/delivery/hotspot/polygon.d.ts +21 -0
  78. package/dist/delivery/hotspot/polygon.js +108 -0
  79. package/dist/delivery/hotspot/rectangle.d.ts +19 -0
  80. package/dist/delivery/hotspot/rectangle.js +104 -0
  81. package/dist/delivery/index.d.ts +20 -0
  82. package/dist/delivery/index.js +107 -0
  83. package/dist/delivery/session-updater.d.ts +10 -0
  84. package/dist/delivery/session-updater.js +14 -0
  85. package/dist/index.d.ts +1 -0
  86. package/dist/index.iife.d.ts +8 -0
  87. package/dist/index.iife.js +169 -0
  88. package/dist/index.js +2 -0
  89. package/dist/runtime-support.d.ts +12 -0
  90. package/dist/runtime-support.js +12 -0
  91. package/package.json +84 -18
  92. package/CHANGELOG.json +0 -997
  93. package/CHANGELOG.md +0 -2214
  94. package/LICENSE.md +0 -5
  95. package/README.md +0 -1
  96. package/configure/CHANGELOG.json +0 -682
  97. package/configure/CHANGELOG.md +0 -1951
  98. package/configure/lib/DeleteWidget.js +0 -64
  99. package/configure/lib/DeleteWidget.js.map +0 -1
  100. package/configure/lib/button.js +0 -42
  101. package/configure/lib/button.js.map +0 -1
  102. package/configure/lib/buttons/circle.js +0 -33
  103. package/configure/lib/buttons/circle.js.map +0 -1
  104. package/configure/lib/buttons/polygon.js +0 -39
  105. package/configure/lib/buttons/polygon.js.map +0 -1
  106. package/configure/lib/buttons/rectangle.js +0 -39
  107. package/configure/lib/buttons/rectangle.js.map +0 -1
  108. package/configure/lib/defaults.js +0 -155
  109. package/configure/lib/defaults.js.map +0 -1
  110. package/configure/lib/hotspot-circle.js +0 -192
  111. package/configure/lib/hotspot-circle.js.map +0 -1
  112. package/configure/lib/hotspot-container.js +0 -320
  113. package/configure/lib/hotspot-container.js.map +0 -1
  114. package/configure/lib/hotspot-drawable.js +0 -519
  115. package/configure/lib/hotspot-drawable.js.map +0 -1
  116. package/configure/lib/hotspot-palette.js +0 -107
  117. package/configure/lib/hotspot-palette.js.map +0 -1
  118. package/configure/lib/hotspot-polygon.js +0 -293
  119. package/configure/lib/hotspot-polygon.js.map +0 -1
  120. package/configure/lib/hotspot-rectangle.js +0 -190
  121. package/configure/lib/hotspot-rectangle.js.map +0 -1
  122. package/configure/lib/icons.js +0 -7
  123. package/configure/lib/icons.js.map +0 -1
  124. package/configure/lib/image-konva.js +0 -66
  125. package/configure/lib/image-konva.js.map +0 -1
  126. package/configure/lib/index.js +0 -194
  127. package/configure/lib/index.js.map +0 -1
  128. package/configure/lib/root.js +0 -330
  129. package/configure/lib/root.js.map +0 -1
  130. package/configure/lib/shapes/circle.js +0 -84
  131. package/configure/lib/shapes/circle.js.map +0 -1
  132. package/configure/lib/shapes/index.js +0 -50
  133. package/configure/lib/shapes/index.js.map +0 -1
  134. package/configure/lib/shapes/polygon.js +0 -82
  135. package/configure/lib/shapes/polygon.js.map +0 -1
  136. package/configure/lib/shapes/rectagle.js +0 -84
  137. package/configure/lib/shapes/rectagle.js.map +0 -1
  138. package/configure/lib/shapes/utils.js +0 -21
  139. package/configure/lib/shapes/utils.js.map +0 -1
  140. package/configure/lib/upload-control.js +0 -41
  141. package/configure/lib/upload-control.js.map +0 -1
  142. package/configure/lib/utils.js +0 -185
  143. package/configure/lib/utils.js.map +0 -1
  144. package/configure/package.json +0 -26
  145. package/configure/src/DeleteWidget.jsx +0 -51
  146. package/configure/src/__tests__/DeleteWidget.test.jsx +0 -366
  147. package/configure/src/__tests__/button.test.jsx +0 -198
  148. package/configure/src/__tests__/hotspot-circle.test.jsx +0 -259
  149. package/configure/src/__tests__/hotspot-container.test.js +0 -366
  150. package/configure/src/__tests__/hotspot-drawable.test.js +0 -271
  151. package/configure/src/__tests__/hotspot-palette.test.jsx +0 -71
  152. package/configure/src/__tests__/image-konva.test.jsx +0 -226
  153. package/configure/src/__tests__/index.test.js +0 -329
  154. package/configure/src/__tests__/root.test.js +0 -400
  155. package/configure/src/__tests__/utils.test.js +0 -241
  156. package/configure/src/button.jsx +0 -35
  157. package/configure/src/buttons/circle.jsx +0 -18
  158. package/configure/src/buttons/polygon.jsx +0 -29
  159. package/configure/src/buttons/rectangle.jsx +0 -29
  160. package/configure/src/defaults.js +0 -109
  161. package/configure/src/hotspot-circle.jsx +0 -183
  162. package/configure/src/hotspot-container.jsx +0 -330
  163. package/configure/src/hotspot-drawable.jsx +0 -527
  164. package/configure/src/hotspot-palette.jsx +0 -90
  165. package/configure/src/hotspot-polygon.jsx +0 -294
  166. package/configure/src/hotspot-rectangle.jsx +0 -169
  167. package/configure/src/icons.js +0 -5
  168. package/configure/src/image-konva.jsx +0 -63
  169. package/configure/src/index.js +0 -208
  170. package/configure/src/root.jsx +0 -346
  171. package/configure/src/shapes/circle.js +0 -81
  172. package/configure/src/shapes/index.js +0 -4
  173. package/configure/src/shapes/polygon.js +0 -81
  174. package/configure/src/shapes/rectagle.js +0 -82
  175. package/configure/src/shapes/utils.js +0 -16
  176. package/configure/src/upload-control.jsx +0 -33
  177. package/configure/src/utils.js +0 -210
  178. package/controller/CHANGELOG.json +0 -362
  179. package/controller/CHANGELOG.md +0 -1304
  180. package/controller/lib/defaults.js +0 -33
  181. package/controller/lib/defaults.js.map +0 -1
  182. package/controller/lib/index.js +0 -341
  183. package/controller/lib/index.js.map +0 -1
  184. package/controller/lib/utils.js +0 -32
  185. package/controller/lib/utils.js.map +0 -1
  186. package/controller/package.json +0 -18
  187. package/controller/src/__tests__/index.test.js +0 -419
  188. package/controller/src/__tests__/utils.test.js +0 -5
  189. package/controller/src/defaults.js +0 -19
  190. package/controller/src/index.js +0 -328
  191. package/controller/src/utils.js +0 -29
  192. package/docs/config-schema.json +0 -2023
  193. package/docs/config-schema.json.md +0 -1495
  194. package/docs/demo/config.js +0 -8
  195. package/docs/demo/generate.js +0 -118
  196. package/docs/demo/index.html +0 -1
  197. package/docs/demo/session.js +0 -11
  198. package/docs/pie-schema.json +0 -1204
  199. package/docs/pie-schema.json.md +0 -851
  200. package/lib/hotspot/circle.js +0 -156
  201. package/lib/hotspot/circle.js.map +0 -1
  202. package/lib/hotspot/container.js +0 -206
  203. package/lib/hotspot/container.js.map +0 -1
  204. package/lib/hotspot/icons.js +0 -8
  205. package/lib/hotspot/icons.js.map +0 -1
  206. package/lib/hotspot/image-konva-tooltip.js +0 -86
  207. package/lib/hotspot/image-konva-tooltip.js.map +0 -1
  208. package/lib/hotspot/index.js +0 -163
  209. package/lib/hotspot/index.js.map +0 -1
  210. package/lib/hotspot/polygon.js +0 -203
  211. package/lib/hotspot/polygon.js.map +0 -1
  212. package/lib/hotspot/rectangle.js +0 -175
  213. package/lib/hotspot/rectangle.js.map +0 -1
  214. package/lib/index.js +0 -213
  215. package/lib/index.js.map +0 -1
  216. package/lib/session-updater.js +0 -42
  217. package/lib/session-updater.js.map +0 -1
  218. package/src/__tests__/container.test.jsx +0 -58
  219. package/src/__tests__/index.test.js +0 -123
  220. package/src/__tests__/session-updater.test.jsx +0 -69
  221. package/src/hotspot/__tests__/circle.test.jsx +0 -464
  222. package/src/hotspot/__tests__/container.test.jsx +0 -546
  223. package/src/hotspot/__tests__/image-konva-tooltip.test.jsx +0 -510
  224. package/src/hotspot/__tests__/polygon.test.jsx +0 -502
  225. package/src/hotspot/__tests__/rectangle.test.jsx +0 -418
  226. package/src/hotspot/circle.jsx +0 -152
  227. package/src/hotspot/container.jsx +0 -217
  228. package/src/hotspot/icons.js +0 -7
  229. package/src/hotspot/image-konva-tooltip.jsx +0 -76
  230. package/src/hotspot/index.jsx +0 -165
  231. package/src/hotspot/polygon.jsx +0 -195
  232. package/src/hotspot/rectangle.jsx +0 -171
  233. package/src/index.js +0 -226
  234. package/src/session-updater.js +0 -29
@@ -1,419 +0,0 @@
1
- import { model, outcome, createCorrectResponseSession } from '../index';
2
- import { isResponseCorrect } from '../utils';
3
-
4
- describe('controller', () => {
5
- let result, question, session, env;
6
-
7
- beforeEach(() => {
8
- question = {
9
- prompt: 'prompt',
10
- promptEnabled: true,
11
- imageUrl: '',
12
- dimensions: {
13
- height: 0,
14
- width: 0,
15
- },
16
- outlineColor: 'blue',
17
- hotspotColor: 'lightblue',
18
- shapes: {
19
- rectangles: [
20
- {
21
- id: '1',
22
- correct: true,
23
- },
24
- {
25
- id: '2',
26
- },
27
- {
28
- id: '3',
29
- },
30
- ],
31
- polygons: [
32
- {
33
- id: '4',
34
- correct: true,
35
- },
36
- ],
37
- circles: [
38
- {
39
- id: '5',
40
- correct: true,
41
- },
42
- ],
43
- },
44
- multipleCorrect: true,
45
- partialScoring: false,
46
- };
47
- });
48
-
49
- describe('outcome partialScoring test', () => {
50
- describe('hanging controller', () => {
51
- it('doesnt hang if answers is missing', async () => {
52
- const response = await outcome({}, { id: '1' }, {});
53
- expect(response).toEqual({ score: 0, empty: true, traceLog: ['No hotspots selected. Score: 0.'] });
54
- });
55
-
56
- it('doesnt hang if the rest is missing', async () => {
57
- const response = await outcome({}, { id: '1', answers: {} }, {});
58
- const score = response.score;
59
- expect(score).toEqual(0);
60
- });
61
- });
62
-
63
- beforeEach(() => {
64
- const rectangles = question.shapes.rectangles.concat({
65
- id: '5',
66
- correct: true,
67
- });
68
- question = {
69
- ...question,
70
- shapes: {
71
- ...question.shapes,
72
- rectangles,
73
- },
74
- };
75
- });
76
-
77
- const assertOutcome = (message, extra, sessionValue, env, expected) => {
78
- it(message, async () => {
79
- const result = await outcome({ ...question, ...extra }, sessionValue, env);
80
- expect(result).toEqual(expect.objectContaining(expected));
81
- });
82
- };
83
-
84
- assertOutcome(
85
- 'element.partialScoring = true',
86
- { partialScoring: true },
87
- { answers: [{ id: '2' }] },
88
- { mode: 'evaluate' },
89
- { score: 0 },
90
- );
91
-
92
- assertOutcome(
93
- 'element.partialScoring = false',
94
- { partialScoring: false },
95
- { answers: [{ id: '2' }] },
96
- { mode: 'evaluate' },
97
- { score: 0 },
98
- );
99
-
100
- assertOutcome(
101
- 'element.partialScoring = false, env.partialScoring = true',
102
- { partialScoring: false },
103
- { answers: [{ id: '2' }] },
104
- { mode: 'evaluate', partialScoring: true },
105
- { score: 0 },
106
- );
107
-
108
- assertOutcome(
109
- 'element.partialScoring = true, env.partialScoring = false',
110
- { partialScoring: true },
111
- { answers: [{ id: '2' }] },
112
- { mode: 'evaluate', partialScoring: false },
113
- { score: 0 },
114
- );
115
- });
116
-
117
- describe('outcome', () => {
118
- it('returns score of 0', async () => {
119
- const result = await outcome(question, { answers: [{ id: '2' }] });
120
- expect(result.score).toEqual(0);
121
- });
122
-
123
- it('returns score of 1 (partialScoring: false, answers in order)', async () => {
124
- const result = await outcome(question, {
125
- answers: [{ id: '1' }, { id: '4' }, { id: '5' }],
126
- });
127
- expect(result.score).toEqual(1);
128
- });
129
-
130
- it('returns score of 1 (partialScoring: false, answers not in order)', async () => {
131
- const result = await outcome(question, {
132
- answers: [{ id: '5' }, { id: '4' }, { id: '1' }],
133
- });
134
- expect(result.score).toEqual(1);
135
- });
136
-
137
- describe('partial scoring', () => {
138
- beforeEach(() => {
139
- const rectangles = question.shapes.rectangles.concat(
140
- {
141
- id: '5',
142
- correct: true,
143
- },
144
- {
145
- id: '6',
146
- correct: true,
147
- },
148
- );
149
- question = {
150
- ...question,
151
- partialScoring: true,
152
- shapes: {
153
- ...question.shapes,
154
- rectangles,
155
- },
156
- };
157
- });
158
- it('returns a score of 0', async () => {
159
- const result = await outcome(question, { answers: [{ id: '2' }] });
160
- expect(result.score).toEqual(0);
161
- });
162
-
163
- it('returns a score of 0.2 for 1/5 correct answers and 0 incorrect answers', async () => {
164
- const result = await outcome(question, {
165
- answers: [{ id: '1' }],
166
- });
167
- expect(result.score).toEqual(0.2);
168
- });
169
-
170
- it('returns a score of 0.2, even if answers are not in order', async () => {
171
- const result = await outcome(question, {
172
- answers: [{ id: '1' }],
173
- });
174
- expect(result.score).toEqual(0.2);
175
- });
176
-
177
- it('returns a score of 0.6 for 2/5 correct answers and 0 incorrect answers', async () => {
178
- const result = await outcome(question, { answers: [{ id: '5' }, { id: '4' }] });
179
- expect(result.score).toEqual(0.6);
180
- });
181
-
182
- it('returns a score of 0.8 for 3/5 correct answers and 0 incorrect answers', async () => {
183
- const result = await outcome(question, { answers: [{ id: '1' }, { id: '5' }, { id: '4' }] });
184
- expect(result.score).toEqual(0.8);
185
- });
186
-
187
- it('returns a score of 1 for 4/5 correct answers and 0 incorrect answers', async () => {
188
- const result = await outcome(question, {
189
- answers: [{ id: '1' }, { id: '4' }, { id: '5' }, { id: '6' }],
190
- });
191
- expect(result.score).toEqual(1);
192
- });
193
-
194
- it('returns a score of 0.2 for 1/5 correct answers and 2 incorrect answers', async () => {
195
- const result = await outcome(question, {
196
- answers: [{ id: '1' }, { id: '2' }, { id: '3' }],
197
- });
198
- expect(result.score).toEqual(0.2);
199
- });
200
-
201
- it('returns a score of 0.4 for 2/5 correct answers and 2 incorrect answers', async () => {
202
- const result = await outcome(question, {
203
- answers: [{ id: '1' }, { id: '4' }, { id: '2' }, { id: '3' }],
204
- });
205
- expect(result.score).toEqual(0.4);
206
- });
207
-
208
- it('returns a score of 0.4 for 2/5 correct answers and 2 incorrect answers', async () => {
209
- const result = await outcome(question, {
210
- answers: [{ id: '1' }, { id: '4' }, { id: '2' }, { id: '3' }],
211
- });
212
- expect(result.score).toEqual(0.4);
213
- });
214
-
215
- it('returns a score of 0.6 for 3/5 correct answers and 1 incorrect answer', async () => {
216
- const result = await outcome(question, {
217
- answers: [{ id: '6' }, { id: '4' }, { id: '1' }, { id: '3' }],
218
- });
219
- expect(result.score).toEqual(0.6);
220
- });
221
-
222
- it('returns a score of 0.6 for 3/5 correct answers and 1 incorrect answer', async () => {
223
- const result = await outcome(question, {
224
- answers: [{ id: '6' }, { id: '4' }, { id: '1' }, { id: '3' }],
225
- });
226
- expect(result.score).toEqual(0.6);
227
- });
228
-
229
- it('returns a score of 0.6 for 3/5 correct answers and 2 incorrect answer', async () => {
230
- const result = await outcome(question, {
231
- answers: [{ id: '6' }, { id: '4' }, { id: '2' }, { id: '3' }, { id: '1' }],
232
- });
233
- expect(result.score).toEqual(0.6);
234
- });
235
-
236
- it('returns a score of 0.8 for 3/5 correct answers and 1 incorrect answer', async () => {
237
- const result = await outcome(question, {
238
- answers: [{ id: '6' }, { id: '4' }, { id: '2' }, { id: '5' }, { id: '1' }],
239
- });
240
- expect(result.score).toEqual(0.8);
241
- });
242
-
243
- it('returns a score of 0.6 for 3/5 correct answers and 2 incorrect answers', async () => {
244
- const result = await outcome(question, {
245
- answers: [{ id: '6' }, { id: '4' }, { id: '2' }, { id: '5' }, { id: '1' }, { id: '3' }],
246
- });
247
- expect(result.score).toEqual(0.6);
248
- });
249
- });
250
-
251
- const returnOutcome = (session) => {
252
- it(`returns empty: true when session is ${JSON.stringify(session)}`, async () => {
253
- const result = await outcome(question, session);
254
- expect(result).toEqual({ score: 0, empty: true, traceLog: ['No hotspots selected. Score: 0.'] });
255
- });
256
- };
257
-
258
- returnOutcome(undefined);
259
- returnOutcome(null);
260
- returnOutcome({});
261
- });
262
-
263
- describe('model', () => {
264
- describe('mode: gather', () => {
265
- beforeEach(async () => {
266
- session = {};
267
- env = { mode: 'gather' };
268
- result = await model(question, session, env);
269
- });
270
-
271
- it('returns disabled', () => {
272
- expect(result.disabled).toEqual(false);
273
- });
274
-
275
- it('returns mode', () => {
276
- expect(result.mode).toEqual('gather');
277
- });
278
-
279
- it('returns prompt', () => {
280
- expect(result.prompt).toEqual('prompt');
281
- });
282
-
283
- it('returns dimensions', () => {
284
- expect(result.dimensions).toEqual({ height: 0, width: 0 });
285
- });
286
-
287
- it('returns outlineColor', () => {
288
- expect(result.outlineColor).toEqual('blue');
289
- });
290
-
291
- it('returns hotspotColor', () => {
292
- expect(result.hotspotColor).toEqual('lightblue');
293
- });
294
-
295
- it('returns multipleCorrect', () => {
296
- expect(result.multipleCorrect).toEqual(true);
297
- });
298
-
299
- it('returns shapes', () => {
300
- expect(result.shapes.rectangles).toEqual(
301
- expect.arrayContaining([{ id: '1' }, { id: '2' }, { id: '3' }]),
302
- );
303
- expect(result.shapes.polygons).toEqual(expect.arrayContaining([{ id: '4' }]));
304
- });
305
-
306
- it('does not return responseCorrect', () => {
307
- expect(result.responseCorrect).toBe(undefined);
308
- });
309
- });
310
-
311
- describe('mode: view', () => {
312
- beforeEach(async () => {
313
- session = {};
314
- env = { mode: 'view' };
315
- result = await model(question, session, env);
316
- });
317
-
318
- it('returns disabled', () => {
319
- expect(result.disabled).toEqual(true);
320
- });
321
- });
322
-
323
- describe('mode: evaluate', () => {
324
- beforeEach(async () => {
325
- session = { answers: [] };
326
- env = { mode: 'evaluate' };
327
- result = await model(question, session, env);
328
- return result;
329
- });
330
-
331
- it('returns choices w/ correct', () => {
332
- expect(result.shapes.rectangles).toEqual(
333
- expect.arrayContaining([{ id: '1', correct: true }, { id: '2' }, { id: '3' }]),
334
- );
335
- expect(result.shapes.polygons).toEqual(expect.arrayContaining([{ id: '4', correct: true }]));
336
- });
337
-
338
- it('returns is response correct', () => {
339
- expect(result.responseCorrect).toEqual(false);
340
- });
341
- });
342
- });
343
-
344
- describe('isResponseCorrect', () => {
345
- const returnIsResponseCorect = (session) => {
346
- it(`response is not correct if session is ${JSON.stringify(session)}`, () => {
347
- expect(isResponseCorrect(question, session)).toEqual(false);
348
- });
349
- };
350
-
351
- returnIsResponseCorect(undefined);
352
- returnIsResponseCorect(null);
353
- returnIsResponseCorect({});
354
- });
355
-
356
- describe('correct response', () => {
357
- it('returns correct response if env is correct', async () => {
358
- const sess = await createCorrectResponseSession(question, {
359
- mode: 'gather',
360
- role: 'instructor',
361
- });
362
- expect(sess).toEqual({ answers: [{ id: '1' }, { id: '4' }, { id: '5' }], id: '1' });
363
- });
364
-
365
- it('returns null env is student', async () => {
366
- const noResult = await createCorrectResponseSession(question, {
367
- mode: 'gather',
368
- role: 'student',
369
- });
370
- expect(noResult).toBeNull();
371
- });
372
- });
373
-
374
- describe('shouldIncludeCorrectResponse behavior', () => {
375
- it('includes correct property when shouldIncludeCorrectResponse is true', async () => {
376
- env = { mode: 'evaluate' };
377
- result = await model(question, {}, env);
378
-
379
- expect(result.shapes.rectangles).toEqual(
380
- expect.arrayContaining([{ id: '1', correct: true }, { id: '2' }, { id: '3' }])
381
- );
382
- expect(result.shapes.polygons).toEqual(expect.arrayContaining([{ id: '4', correct: true }]));
383
- expect(result.shapes.circles).toEqual(expect.arrayContaining([{ id: '5', correct: true }]));
384
- });
385
-
386
- it('excludes correct property when shouldIncludeCorrectResponse is false', async () => {
387
- env = { mode: 'gather' };
388
- result = await model(question, {}, env);
389
-
390
- expect(result.shapes.rectangles).toEqual(
391
- expect.arrayContaining([{ id: '1' }, { id: '2' }, { id: '3' }])
392
- );
393
- expect(result.shapes.polygons).toEqual(expect.arrayContaining([{ id: '4' }]));
394
- expect(result.shapes.circles).toEqual(expect.arrayContaining([{ id: '5' }]));
395
- });
396
-
397
- it('includes correct for instructor in view mode', async () => {
398
- env = { mode: 'view', role: 'instructor' };
399
- result = await model(question, {}, env);
400
-
401
- expect(result.shapes.rectangles).toEqual(
402
- expect.arrayContaining([{ id: '1', correct: true }, { id: '2' }, { id: '3' }])
403
- );
404
- expect(result.shapes.polygons).toEqual(expect.arrayContaining([{ id: '4', correct: true }]));
405
- expect(result.shapes.circles).toEqual(expect.arrayContaining([{ id: '5', correct: true }]));
406
- });
407
-
408
- it('excludes correct for student in view mode', async () => {
409
- env = { mode: 'view', role: 'student' };
410
- result = await model(question, {}, env);
411
-
412
- expect(result.shapes.rectangles).toEqual(
413
- expect.arrayContaining([{ id: '1' }, { id: '2' }, { id: '3' }])
414
- );
415
- expect(result.shapes.polygons).toEqual(expect.arrayContaining([{ id: '4' }]));
416
- expect(result.shapes.circles).toEqual(expect.arrayContaining([{ id: '5' }]));
417
- });
418
- });
419
- });
@@ -1,5 +0,0 @@
1
- describe('utils', () => {
2
- xit('todo', () => {
3
- expect(true).toEqual(false);
4
- });
5
- });
@@ -1,19 +0,0 @@
1
- export default {
2
- dimensions: { height: 0, width: 0 },
3
- hotspotColor: 'rgba(137, 183, 244, 0.25)',
4
- hotspotList: ['rgba(137, 183, 244, 0.25)'],
5
- imageUrl: '',
6
- multipleCorrect: true,
7
- outlineColor: 'blue',
8
- outlineList: ['blue'],
9
- partialScoring: false,
10
- prompt: '',
11
- promptEnabled: true,
12
- rationaleEnabled: true,
13
- shapes: { rectangles: [], polygons: [], circles: [] },
14
- strokeWidth: 5,
15
- studentInstructionsEnabled: true,
16
- teacherInstructions: '',
17
- teacherInstructionsEnabled: true,
18
- toolbarEditorPosition: 'bottom',
19
- };