@coorpacademy/player-web 4.2.11 → 4.2.12

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 (157) hide show
  1. package/es/map-state-to-props/test/answer.js +390 -0
  2. package/es/map-state-to-props/test/answer.js.map +1 -0
  3. package/es/map-state-to-props/test/fixtures/player/clue.json +131 -0
  4. package/es/map-state-to-props/test/fixtures/player/loading-clue.json +131 -0
  5. package/es/map-state-to-props/test/fixtures/player/no-clue.json +118 -0
  6. package/es/map-state-to-props/test/fixtures/player/slide-no-lessons.json +115 -0
  7. package/es/map-state-to-props/test/fixtures/player/slide.json +127 -0
  8. package/es/map-state-to-props/test/fixtures/popin-correction/popin-extra-life.json +139 -0
  9. package/es/map-state-to-props/test/fixtures/popin-correction/popin-failure.json +145 -0
  10. package/es/map-state-to-props/test/fixtures/popin-correction/popin-next-level.json +282 -0
  11. package/es/map-state-to-props/test/fixtures/popin-correction/popin-revival.json +140 -0
  12. package/es/map-state-to-props/test/fixtures/popin-correction/popin-success-node.json +154 -0
  13. package/es/map-state-to-props/test/fixtures/popin-correction/popin-success.json +268 -0
  14. package/es/map-state-to-props/test/fixtures/popin-correction/state-fail-multiple-answers.json +473 -0
  15. package/es/map-state-to-props/test/fixtures/popin-end/fail.json +205 -0
  16. package/es/map-state-to-props/test/fixtures/popin-end/learner-adaptive-failure.json +209 -0
  17. package/es/map-state-to-props/test/fixtures/popin-end/learner-failure-with-redirection.json +211 -0
  18. package/es/map-state-to-props/test/fixtures/popin-end/learner-failure.json +211 -0
  19. package/es/map-state-to-props/test/fixtures/popin-end/learner-success-with-redirection.json +278 -0
  20. package/es/map-state-to-props/test/fixtures/popin-end/learner-success.json +275 -0
  21. package/es/map-state-to-props/test/fixtures/popin-end/success.json +223 -0
  22. package/es/map-state-to-props/test/fixtures/progression-learner.json +102 -0
  23. package/es/map-state-to-props/test/fixtures/progression-state.json +45 -0
  24. package/es/map-state-to-props/test/fixtures/slides/basic.json +60 -0
  25. package/es/map-state-to-props/test/fixtures/slides/plop.json +56 -0
  26. package/es/map-state-to-props/test/fixtures/slides/qcm-drag.json +56 -0
  27. package/es/map-state-to-props/test/fixtures/slides/qcm-graphic.json +49 -0
  28. package/es/map-state-to-props/test/fixtures/slides/qcm.json +43 -0
  29. package/es/map-state-to-props/test/fixtures/slides/slider.json +57 -0
  30. package/es/map-state-to-props/test/fixtures/slides/template.json +49 -0
  31. package/es/map-state-to-props/test/fixtures/slides/videos.json +163 -0
  32. package/es/map-state-to-props/test/fixtures/slides/with-context.json +69 -0
  33. package/es/map-state-to-props/test/header.js +131 -0
  34. package/es/map-state-to-props/test/header.js.map +1 -0
  35. package/es/map-state-to-props/test/index.js +107 -0
  36. package/es/map-state-to-props/test/index.js.map +1 -0
  37. package/es/map-state-to-props/test/player.js +680 -0
  38. package/es/map-state-to-props/test/player.js.map +1 -0
  39. package/es/map-state-to-props/test/popin-correction.create-header-cta.js +301 -0
  40. package/es/map-state-to-props/test/popin-correction.create-header-cta.js.map +1 -0
  41. package/es/map-state-to-props/test/popin-correction.js +80 -0
  42. package/es/map-state-to-props/test/popin-correction.js.map +1 -0
  43. package/es/map-state-to-props/test/popin-end.js +313 -0
  44. package/es/map-state-to-props/test/popin-end.js.map +1 -0
  45. package/es/map-state-to-props/test/popin-error.js +77 -0
  46. package/es/map-state-to-props/test/popin-error.js.map +1 -0
  47. package/es/map-state-to-props/test/resources.js +31 -0
  48. package/es/map-state-to-props/test/resources.js.map +1 -0
  49. package/es/test/add-timeout.js +8 -0
  50. package/es/test/add-timeout.js.map +1 -0
  51. package/es/test/helpers/css-register.js +3 -0
  52. package/es/test/helpers/css-register.js.map +1 -0
  53. package/es/test/helpers/macro.js +6 -0
  54. package/es/test/helpers/macro.js.map +1 -0
  55. package/es/test/index.js +39 -0
  56. package/es/test/index.js.map +1 -0
  57. package/es/test/init-reducers.js +50 -0
  58. package/es/test/init-reducers.js.map +1 -0
  59. package/es/test/locales.js +8 -0
  60. package/es/test/locales.js.map +1 -0
  61. package/es/test/run-app.js +20 -0
  62. package/es/test/run-app.js.map +1 -0
  63. package/es/test/store.js +38 -0
  64. package/es/test/store.js.map +1 -0
  65. package/es/views/test/helpers/render.js +13 -0
  66. package/es/views/test/helpers/render.js.map +1 -0
  67. package/es/views/test/helpers/state-to-vnode.js +7 -0
  68. package/es/views/test/helpers/state-to-vnode.js.map +1 -0
  69. package/es/views/test/loading.js +15 -0
  70. package/es/views/test/loading.js.map +1 -0
  71. package/es/views/test/popin-correction.js +223 -0
  72. package/es/views/test/popin-correction.js.map +1 -0
  73. package/es/views/test/popin-end.js +93 -0
  74. package/es/views/test/popin-end.js.map +1 -0
  75. package/es/views/test/router.js +22 -0
  76. package/es/views/test/router.js.map +1 -0
  77. package/es/views/test/slide.js +335 -0
  78. package/es/views/test/slide.js.map +1 -0
  79. package/lib/map-state-to-props/test/answer.js +408 -0
  80. package/lib/map-state-to-props/test/answer.js.map +1 -0
  81. package/lib/map-state-to-props/test/fixtures/player/clue.json +131 -0
  82. package/lib/map-state-to-props/test/fixtures/player/loading-clue.json +131 -0
  83. package/lib/map-state-to-props/test/fixtures/player/no-clue.json +118 -0
  84. package/lib/map-state-to-props/test/fixtures/player/slide-no-lessons.json +115 -0
  85. package/lib/map-state-to-props/test/fixtures/player/slide.json +127 -0
  86. package/lib/map-state-to-props/test/fixtures/popin-correction/popin-extra-life.json +139 -0
  87. package/lib/map-state-to-props/test/fixtures/popin-correction/popin-failure.json +145 -0
  88. package/lib/map-state-to-props/test/fixtures/popin-correction/popin-next-level.json +282 -0
  89. package/lib/map-state-to-props/test/fixtures/popin-correction/popin-revival.json +140 -0
  90. package/lib/map-state-to-props/test/fixtures/popin-correction/popin-success-node.json +154 -0
  91. package/lib/map-state-to-props/test/fixtures/popin-correction/popin-success.json +268 -0
  92. package/lib/map-state-to-props/test/fixtures/popin-correction/state-fail-multiple-answers.json +473 -0
  93. package/lib/map-state-to-props/test/fixtures/popin-end/fail.json +205 -0
  94. package/lib/map-state-to-props/test/fixtures/popin-end/learner-adaptive-failure.json +209 -0
  95. package/lib/map-state-to-props/test/fixtures/popin-end/learner-failure-with-redirection.json +211 -0
  96. package/lib/map-state-to-props/test/fixtures/popin-end/learner-failure.json +211 -0
  97. package/lib/map-state-to-props/test/fixtures/popin-end/learner-success-with-redirection.json +278 -0
  98. package/lib/map-state-to-props/test/fixtures/popin-end/learner-success.json +275 -0
  99. package/lib/map-state-to-props/test/fixtures/popin-end/success.json +223 -0
  100. package/lib/map-state-to-props/test/fixtures/progression-learner.json +102 -0
  101. package/lib/map-state-to-props/test/fixtures/progression-state.json +45 -0
  102. package/lib/map-state-to-props/test/fixtures/slides/basic.json +60 -0
  103. package/lib/map-state-to-props/test/fixtures/slides/plop.json +56 -0
  104. package/lib/map-state-to-props/test/fixtures/slides/qcm-drag.json +56 -0
  105. package/lib/map-state-to-props/test/fixtures/slides/qcm-graphic.json +49 -0
  106. package/lib/map-state-to-props/test/fixtures/slides/qcm.json +43 -0
  107. package/lib/map-state-to-props/test/fixtures/slides/slider.json +57 -0
  108. package/lib/map-state-to-props/test/fixtures/slides/template.json +49 -0
  109. package/lib/map-state-to-props/test/fixtures/slides/videos.json +163 -0
  110. package/lib/map-state-to-props/test/fixtures/slides/with-context.json +69 -0
  111. package/lib/map-state-to-props/test/header.js +143 -0
  112. package/lib/map-state-to-props/test/header.js.map +1 -0
  113. package/lib/map-state-to-props/test/index.js +100 -0
  114. package/lib/map-state-to-props/test/index.js.map +1 -0
  115. package/lib/map-state-to-props/test/player.js +714 -0
  116. package/lib/map-state-to-props/test/player.js.map +1 -0
  117. package/lib/map-state-to-props/test/popin-correction.create-header-cta.js +315 -0
  118. package/lib/map-state-to-props/test/popin-correction.create-header-cta.js.map +1 -0
  119. package/lib/map-state-to-props/test/popin-correction.js +85 -0
  120. package/lib/map-state-to-props/test/popin-correction.js.map +1 -0
  121. package/lib/map-state-to-props/test/popin-end.js +328 -0
  122. package/lib/map-state-to-props/test/popin-end.js.map +1 -0
  123. package/lib/map-state-to-props/test/popin-error.js +85 -0
  124. package/lib/map-state-to-props/test/popin-error.js.map +1 -0
  125. package/lib/map-state-to-props/test/resources.js +42 -0
  126. package/lib/map-state-to-props/test/resources.js.map +1 -0
  127. package/lib/test/add-timeout.js +14 -0
  128. package/lib/test/add-timeout.js.map +1 -0
  129. package/lib/test/helpers/css-register.js +8 -0
  130. package/lib/test/helpers/css-register.js.map +1 -0
  131. package/lib/test/helpers/macro.js +12 -0
  132. package/lib/test/helpers/macro.js.map +1 -0
  133. package/lib/test/index.js +53 -0
  134. package/lib/test/index.js.map +1 -0
  135. package/lib/test/init-reducers.js +57 -0
  136. package/lib/test/init-reducers.js.map +1 -0
  137. package/lib/test/locales.js +18 -0
  138. package/lib/test/locales.js.map +1 -0
  139. package/lib/test/run-app.js +27 -0
  140. package/lib/test/run-app.js.map +1 -0
  141. package/lib/test/store.js +45 -0
  142. package/lib/test/store.js.map +1 -0
  143. package/lib/views/test/helpers/render.js +24 -0
  144. package/lib/views/test/helpers/render.js.map +1 -0
  145. package/lib/views/test/helpers/state-to-vnode.js +14 -0
  146. package/lib/views/test/helpers/state-to-vnode.js.map +1 -0
  147. package/lib/views/test/loading.js +22 -0
  148. package/lib/views/test/loading.js.map +1 -0
  149. package/lib/views/test/popin-correction.js +237 -0
  150. package/lib/views/test/popin-correction.js.map +1 -0
  151. package/lib/views/test/popin-end.js +105 -0
  152. package/lib/views/test/popin-end.js.map +1 -0
  153. package/lib/views/test/router.js +32 -0
  154. package/lib/views/test/router.js.map +1 -0
  155. package/lib/views/test/slide.js +359 -0
  156. package/lib/views/test/slide.js.map +1 -0
  157. package/package.json +4 -3
@@ -0,0 +1,390 @@
1
+ import _pick from "lodash/fp/pick";
2
+ import _map from "lodash/fp/map";
3
+ import _pipe from "lodash/fp/pipe";
4
+ import _sortBy from "lodash/fp/sortBy";
5
+ import _identity from "lodash/fp/identity";
6
+ import _isFunction from "lodash/fp/isFunction";
7
+ import _omit from "lodash/fp/omit";
8
+ import test from 'ava';
9
+ import { mockTranslate } from '@coorpacademy/translate';
10
+ import { createGetAnswerProps, createGetHelp } from '../answer';
11
+ import basic from './fixtures/slides/basic';
12
+ import qcm from './fixtures/slides/qcm';
13
+ import qcmDrag from './fixtures/slides/qcm-drag';
14
+ import qcmGraphic from './fixtures/slides/qcm-graphic';
15
+ import template from './fixtures/slides/template';
16
+ import slider from './fixtures/slides/slider';
17
+ const options = {
18
+ translate: mockTranslate
19
+ };
20
+ const store = {
21
+ dispatch: _identity
22
+ };
23
+ const getAnswerProps = createGetAnswerProps(options, store);
24
+ const getHelp = createGetHelp(options, store);
25
+ test('should create initial qcm props', t => {
26
+ t.plan(3);
27
+ const state = {
28
+ ui: {
29
+ current: {
30
+ progressionId: '1234'
31
+ }
32
+ }
33
+ };
34
+
35
+ const _getAnswerProps = createGetAnswerProps(options, {
36
+ dispatch: thunk => {
37
+ t.true(_isFunction(thunk));
38
+ }
39
+ });
40
+
41
+ const props = _getAnswerProps(state, qcm);
42
+
43
+ t.is(props.type, 'qcm');
44
+ t.true(props.answers.every(answer => answer.selected === false));
45
+ props.answers[0].onClick();
46
+ });
47
+ test('should create edited qcm props', t => {
48
+ const state = {
49
+ ui: {
50
+ answers: {
51
+ 1234: {
52
+ value: ['Case 1', 'Case 3']
53
+ }
54
+ },
55
+ current: {
56
+ progressionId: '1234'
57
+ }
58
+ }
59
+ };
60
+ const props = getAnswerProps(state, qcm);
61
+ t.is(props.type, 'qcm');
62
+ t.is(props.answers.length, 4);
63
+ t.is(props.answers[0].title, 'Case 1');
64
+ t.true(props.answers[0].selected);
65
+ t.is(props.answers[1].title, 'Case 2');
66
+ t.false(props.answers[1].selected);
67
+ t.is(props.answers[2].title, 'Case 3');
68
+ t.true(props.answers[2].selected);
69
+ t.is(props.answers[3].title, 'Case 4');
70
+ t.false(props.answers[3].selected);
71
+ t.true(_isFunction(props.answers[0].onClick));
72
+ });
73
+ test('should create edited template props', t => {
74
+ t.plan(23);
75
+ const state = {
76
+ ui: {
77
+ answers: {
78
+ 1234: {
79
+ value: ['foo', 'exclusive']
80
+ }
81
+ },
82
+ current: {
83
+ progressionId: '1234'
84
+ }
85
+ }
86
+ };
87
+
88
+ const _getAnswerProps = createGetAnswerProps(options, {
89
+ dispatch: thunk => {
90
+ t.true(_isFunction(thunk));
91
+ }
92
+ });
93
+
94
+ const props = _getAnswerProps(state, template);
95
+
96
+ t.is(props.type, 'template');
97
+ t.is(props.template, 'The answer is {{inp81438}} {{sel31191}}');
98
+ t.true(Array.isArray(props.answers));
99
+ t.is(props.answers.length, 2);
100
+ t.is(props.answers[0].type, 'text');
101
+ t.is(props.answers[0].name, 'inp81438');
102
+ t.is(props.answers[0].placeholder, '__Type here');
103
+ t.is(props.answers[0].value, 'foo');
104
+ t.true(_isFunction(props.answers[0].onChange));
105
+ t.is(props.answers[1].type, 'select');
106
+ t.is(props.answers[1].name, 'sel31191');
107
+ t.true(_isFunction(props.answers[1].onChange));
108
+ const selectOptions = props.answers[1].options;
109
+ t.true(Array.isArray(selectOptions));
110
+ t.is(selectOptions.length, 2);
111
+ t.is(selectOptions[0].name, 'temporary');
112
+ t.is(selectOptions[0].value, 'temporary');
113
+ t.false(selectOptions[0].selected);
114
+ t.true(selectOptions[0].validOption);
115
+ t.is(selectOptions[1].name, 'exclusive');
116
+ t.is(selectOptions[1].value, 'exclusive');
117
+ t.true(selectOptions[1].selected);
118
+ t.true(selectOptions[1].validOption);
119
+ props.answers[1].onChange();
120
+ });
121
+ test('should add an invalid `select an answer` choice for a select field in a template question if there are no answers for it', t => {
122
+ t.plan(13);
123
+ const state = {
124
+ ui: {
125
+ answers: {},
126
+ current: {
127
+ progressionId: '1234'
128
+ }
129
+ }
130
+ };
131
+
132
+ const _getAnswerProps = createGetAnswerProps(options, {
133
+ dispatch: thunk => {
134
+ t.true(_isFunction(thunk));
135
+ }
136
+ });
137
+
138
+ const props = _getAnswerProps(state, template);
139
+
140
+ const selectOptions = props.answers[1].options;
141
+ t.is(selectOptions.length, 3);
142
+ t.is(selectOptions[0].name, '__Select an answer');
143
+ t.true(selectOptions[0].selected);
144
+ t.false(selectOptions[0].validOption);
145
+ t.is(selectOptions[1].name, 'temporary');
146
+ t.is(selectOptions[1].value, 'temporary');
147
+ t.false(selectOptions[1].selected);
148
+ t.true(selectOptions[1].validOption);
149
+ t.is(selectOptions[2].name, 'exclusive');
150
+ t.is(selectOptions[2].value, 'exclusive');
151
+ t.false(selectOptions[2].selected);
152
+ t.true(selectOptions[2].validOption);
153
+ props.answers[1].onChange();
154
+ });
155
+ test('should create initial qcmGraphic props', t => {
156
+ const state = {
157
+ ui: {
158
+ answers: {},
159
+ current: {
160
+ progressionId: '1234'
161
+ }
162
+ }
163
+ };
164
+ const props = getAnswerProps(state, qcmGraphic);
165
+ t.is(props.type, 'qcmGraphic');
166
+ t.is(props.answers.length, 2);
167
+ t.true(props.answers.every(answer => answer.selected === false));
168
+ });
169
+ test('should create edited qcmGraphic props', t => {
170
+ t.plan(5);
171
+ const state = {
172
+ data: {
173
+ configs: {
174
+ entities: {
175
+ 'learner@2': {
176
+ version: '2',
177
+ shuffleChoices: true
178
+ }
179
+ }
180
+ },
181
+ progressions: {
182
+ entities: {
183
+ 1234: {
184
+ engine: {
185
+ ref: 'learner',
186
+ version: '2'
187
+ }
188
+ }
189
+ }
190
+ }
191
+ },
192
+ ui: {
193
+ answers: {
194
+ 1234: {
195
+ value: ['Vrai']
196
+ }
197
+ },
198
+ current: {
199
+ progressionId: '1234'
200
+ }
201
+ }
202
+ };
203
+
204
+ const _getAnswerProps = createGetAnswerProps(options, {
205
+ dispatch: thunk => {
206
+ t.true(_isFunction(thunk));
207
+ }
208
+ });
209
+
210
+ const props = _getAnswerProps(state, qcmGraphic);
211
+
212
+ t.is(props.type, 'qcmGraphic');
213
+ t.is(props.answers.length, 2);
214
+
215
+ const answers = _pipe(_map(_pick(['title', 'selected'])), _sortBy('title'))(props.answers);
216
+
217
+ t.deepEqual(answers, [{
218
+ title: 'Faux',
219
+ selected: false
220
+ }, {
221
+ title: 'Vrai',
222
+ selected: true
223
+ }]);
224
+ t.true(_isFunction(props.answers[0].onClick));
225
+ props.answers[0].onClick();
226
+ });
227
+ test('should create initial qcmDrag props', t => {
228
+ const state = {
229
+ ui: {
230
+ answers: {},
231
+ current: {
232
+ progressionId: '1234'
233
+ }
234
+ }
235
+ };
236
+ const props = getAnswerProps(state, qcmDrag);
237
+ t.is(props.type, 'qcmDrag');
238
+ t.is(props.answers.length, 3);
239
+ t.is(props.answers[0].title, "L'ordinateur");
240
+ t.false(props.answers[0].selected);
241
+ t.true(_isFunction(props.answers[0].onClick));
242
+ t.is(props.answers[1].title, 'La tablette');
243
+ t.false(props.answers[1].selected);
244
+ t.true(_isFunction(props.answers[1].onClick));
245
+ t.is(props.answers[2].title, 'Le smartphone');
246
+ t.false(props.answers[2].selected);
247
+ t.true(_isFunction(props.answers[2].onClick));
248
+ });
249
+ test('should create edited qcmDrag props', t => {
250
+ t.plan(14);
251
+ const state = {
252
+ ui: {
253
+ answers: {
254
+ 1234: {
255
+ value: ['Le smartphone', "L'ordinateur"]
256
+ }
257
+ },
258
+ current: {
259
+ progressionId: '1234'
260
+ }
261
+ }
262
+ };
263
+
264
+ const _getAnswerProps = createGetAnswerProps(options, {
265
+ dispatch: thunk => {
266
+ t.true(_isFunction(thunk));
267
+ }
268
+ });
269
+
270
+ const props = _getAnswerProps(state, qcmDrag);
271
+
272
+ t.is(props.type, 'qcmDrag');
273
+ t.is(props.answers.length, 3);
274
+ t.is(props.answers[0].title, "L'ordinateur");
275
+ t.true(props.answers[0].selected);
276
+ t.is(props.answers[0].order, 1);
277
+ t.true(_isFunction(props.answers[0].onClick));
278
+ t.is(props.answers[1].title, 'La tablette');
279
+ t.false(props.answers[1].selected);
280
+ t.true(_isFunction(props.answers[1].onClick));
281
+ t.is(props.answers[2].title, 'Le smartphone');
282
+ t.true(props.answers[2].selected);
283
+ t.is(props.answers[2].order, 0);
284
+ t.true(_isFunction(props.answers[2].onClick));
285
+ props.answers[2].onClick();
286
+ });
287
+ test('should create initial slider props', t => {
288
+ t.plan(8);
289
+ const state = {
290
+ ui: {
291
+ answers: {},
292
+ current: {
293
+ progressionId: '1234'
294
+ }
295
+ }
296
+ };
297
+
298
+ const dispatch = action => {
299
+ t.pass();
300
+ };
301
+
302
+ const props = createGetAnswerProps(options, {
303
+ dispatch
304
+ })(state, slider);
305
+ t.is(props.type, 'slider');
306
+ t.is(props.placeholder, 'Déplacez le curseur.');
307
+ t.is(props.minLabel, '0 an(s)');
308
+ t.is(props.maxLabel, '1000 an(s)');
309
+ t.is(props.title, '500 an(s)');
310
+ t.is(props.value, 0.5);
311
+ t.true(_isFunction(props.onChange));
312
+ props.onChange(0.87);
313
+ });
314
+ test('should default slider step to 1', t => {
315
+ t.plan(2);
316
+ const state = {
317
+ ui: {
318
+ answers: {},
319
+ current: {
320
+ progressionId: '1234'
321
+ }
322
+ }
323
+ };
324
+
325
+ const dispatch = action => {
326
+ t.pass();
327
+ };
328
+
329
+ const props = createGetAnswerProps(options, {
330
+ dispatch
331
+ })(state, _omit('question.content.step', slider));
332
+ t.true(_isFunction(props.onChange));
333
+ props.onChange(0.87);
334
+ });
335
+ test('should create edited slider props', t => {
336
+ const state = {
337
+ ui: {
338
+ answers: {
339
+ 1234: {
340
+ value: ['300']
341
+ }
342
+ },
343
+ current: {
344
+ progressionId: '1234'
345
+ }
346
+ }
347
+ };
348
+ const props = getAnswerProps(state, slider);
349
+ t.is(props.title, '300 an(s)');
350
+ t.is(props.value, 0.3);
351
+ });
352
+ test('should create initial basic props', t => {
353
+ const state = {
354
+ ui: {
355
+ answers: {},
356
+ current: {
357
+ progressionId: null
358
+ }
359
+ }
360
+ };
361
+ const props = getAnswerProps(state, basic);
362
+ t.is(props.type, 'freeText');
363
+ });
364
+ test('should create edited basic props', t => {
365
+ const state = {
366
+ ui: {
367
+ answers: {
368
+ 1234: {
369
+ value: ['foo']
370
+ }
371
+ },
372
+ current: {
373
+ progressionId: '1234'
374
+ }
375
+ }
376
+ };
377
+ const props = getAnswerProps(state, basic);
378
+ t.is(props.type, 'freeText');
379
+ t.is(props.value, 'foo');
380
+ t.true(_isFunction(props.onChange));
381
+ });
382
+ test('should provide an help subtitle depending on question.type', t => {
383
+ const help = getHelp(qcmDrag);
384
+ t.is(help, 'Cliquez sur les réponses dans le bon ordre.');
385
+ const help1 = getHelp(template);
386
+ t.is(help1, 'Type your answers');
387
+ const help2 = getHelp(qcm);
388
+ t.is(help2, '__Select something below');
389
+ });
390
+ //# sourceMappingURL=answer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answer.js","names":["test","mockTranslate","createGetAnswerProps","createGetHelp","basic","qcm","qcmDrag","qcmGraphic","template","slider","options","translate","store","dispatch","getAnswerProps","getHelp","t","plan","state","ui","current","progressionId","_getAnswerProps","thunk","true","props","is","type","answers","every","answer","selected","onClick","value","length","title","false","Array","isArray","name","placeholder","onChange","selectOptions","validOption","data","configs","entities","version","shuffleChoices","progressions","engine","ref","deepEqual","order","action","pass","minLabel","maxLabel","help","help1","help2"],"sources":["../../../src/map-state-to-props/test/answer.js"],"sourcesContent":["import test from 'ava';\nimport {omit, isFunction, identity, sortBy, pipe, map, pick} from 'lodash/fp';\n\nimport {mockTranslate} from '@coorpacademy/translate';\nimport {createGetAnswerProps, createGetHelp} from '../answer';\nimport basic from './fixtures/slides/basic';\nimport qcm from './fixtures/slides/qcm';\nimport qcmDrag from './fixtures/slides/qcm-drag';\nimport qcmGraphic from './fixtures/slides/qcm-graphic';\nimport template from './fixtures/slides/template';\nimport slider from './fixtures/slides/slider';\n\nconst options = {translate: mockTranslate};\nconst store = {dispatch: identity};\nconst getAnswerProps = createGetAnswerProps(options, store);\nconst getHelp = createGetHelp(options, store);\n\ntest('should create initial qcm props', t => {\n t.plan(3);\n\n const state = {\n ui: {\n current: {progressionId: '1234'}\n }\n };\n\n const _getAnswerProps = createGetAnswerProps(options, {\n dispatch: thunk => {\n t.true(isFunction(thunk));\n }\n });\n\n const props = _getAnswerProps(state, qcm);\n\n t.is(props.type, 'qcm');\n t.true(props.answers.every(answer => answer.selected === false));\n\n props.answers[0].onClick();\n});\n\ntest('should create edited qcm props', t => {\n const state = {\n ui: {\n answers: {1234: {value: ['Case 1', 'Case 3']}},\n current: {progressionId: '1234'}\n }\n };\n\n const props = getAnswerProps(state, qcm);\n\n t.is(props.type, 'qcm');\n t.is(props.answers.length, 4);\n t.is(props.answers[0].title, 'Case 1');\n t.true(props.answers[0].selected);\n t.is(props.answers[1].title, 'Case 2');\n t.false(props.answers[1].selected);\n t.is(props.answers[2].title, 'Case 3');\n t.true(props.answers[2].selected);\n t.is(props.answers[3].title, 'Case 4');\n t.false(props.answers[3].selected);\n t.true(isFunction(props.answers[0].onClick));\n});\n\ntest('should create edited template props', t => {\n t.plan(23);\n\n const state = {\n ui: {\n answers: {1234: {value: ['foo', 'exclusive']}},\n current: {progressionId: '1234'}\n }\n };\n\n const _getAnswerProps = createGetAnswerProps(options, {\n dispatch: thunk => {\n t.true(isFunction(thunk));\n }\n });\n\n const props = _getAnswerProps(state, template);\n t.is(props.type, 'template');\n t.is(props.template, 'The answer is {{inp81438}} {{sel31191}}');\n t.true(Array.isArray(props.answers));\n t.is(props.answers.length, 2);\n t.is(props.answers[0].type, 'text');\n t.is(props.answers[0].name, 'inp81438');\n t.is(props.answers[0].placeholder, '__Type here');\n t.is(props.answers[0].value, 'foo');\n t.true(isFunction(props.answers[0].onChange));\n t.is(props.answers[1].type, 'select');\n t.is(props.answers[1].name, 'sel31191');\n t.true(isFunction(props.answers[1].onChange));\n const selectOptions = props.answers[1].options;\n t.true(Array.isArray(selectOptions));\n t.is(selectOptions.length, 2);\n t.is(selectOptions[0].name, 'temporary');\n t.is(selectOptions[0].value, 'temporary');\n t.false(selectOptions[0].selected);\n t.true(selectOptions[0].validOption);\n t.is(selectOptions[1].name, 'exclusive');\n t.is(selectOptions[1].value, 'exclusive');\n t.true(selectOptions[1].selected);\n t.true(selectOptions[1].validOption);\n\n props.answers[1].onChange();\n});\n\ntest('should add an invalid `select an answer` choice for a select field in a template question if there are no answers for it', t => {\n t.plan(13);\n const state = {\n ui: {\n answers: {},\n current: {progressionId: '1234'}\n }\n };\n\n const _getAnswerProps = createGetAnswerProps(options, {\n dispatch: thunk => {\n t.true(isFunction(thunk));\n }\n });\n\n const props = _getAnswerProps(state, template);\n const selectOptions = props.answers[1].options;\n\n t.is(selectOptions.length, 3);\n t.is(selectOptions[0].name, '__Select an answer');\n t.true(selectOptions[0].selected);\n t.false(selectOptions[0].validOption);\n t.is(selectOptions[1].name, 'temporary');\n t.is(selectOptions[1].value, 'temporary');\n t.false(selectOptions[1].selected);\n t.true(selectOptions[1].validOption);\n t.is(selectOptions[2].name, 'exclusive');\n t.is(selectOptions[2].value, 'exclusive');\n t.false(selectOptions[2].selected);\n t.true(selectOptions[2].validOption);\n\n props.answers[1].onChange();\n});\n\ntest('should create initial qcmGraphic props', t => {\n const state = {\n ui: {\n answers: {},\n current: {progressionId: '1234'}\n }\n };\n const props = getAnswerProps(state, qcmGraphic);\n t.is(props.type, 'qcmGraphic');\n t.is(props.answers.length, 2);\n t.true(props.answers.every(answer => answer.selected === false));\n});\n\ntest('should create edited qcmGraphic props', t => {\n t.plan(5);\n const state = {\n data: {\n configs: {\n entities: {\n 'learner@2': {\n version: '2',\n shuffleChoices: true\n }\n }\n },\n progressions: {\n entities: {\n 1234: {\n engine: {\n ref: 'learner',\n version: '2'\n }\n }\n }\n }\n },\n ui: {\n answers: {1234: {value: ['Vrai']}},\n current: {progressionId: '1234'}\n }\n };\n\n const _getAnswerProps = createGetAnswerProps(options, {\n dispatch: thunk => {\n t.true(isFunction(thunk));\n }\n });\n\n const props = _getAnswerProps(state, qcmGraphic);\n\n t.is(props.type, 'qcmGraphic');\n t.is(props.answers.length, 2);\n\n const answers = pipe(map(pick(['title', 'selected'])), sortBy('title'))(props.answers);\n t.deepEqual(answers, [\n {title: 'Faux', selected: false},\n {title: 'Vrai', selected: true}\n ]);\n\n t.true(isFunction(props.answers[0].onClick));\n\n props.answers[0].onClick();\n});\n\ntest('should create initial qcmDrag props', t => {\n const state = {\n ui: {\n answers: {},\n current: {progressionId: '1234'}\n }\n };\n const props = getAnswerProps(state, qcmDrag);\n t.is(props.type, 'qcmDrag');\n t.is(props.answers.length, 3);\n t.is(props.answers[0].title, \"L'ordinateur\");\n t.false(props.answers[0].selected);\n t.true(isFunction(props.answers[0].onClick));\n t.is(props.answers[1].title, 'La tablette');\n t.false(props.answers[1].selected);\n t.true(isFunction(props.answers[1].onClick));\n t.is(props.answers[2].title, 'Le smartphone');\n t.false(props.answers[2].selected);\n t.true(isFunction(props.answers[2].onClick));\n});\n\ntest('should create edited qcmDrag props', t => {\n t.plan(14);\n const state = {\n ui: {\n answers: {1234: {value: ['Le smartphone', \"L'ordinateur\"]}},\n current: {progressionId: '1234'}\n }\n };\n\n const _getAnswerProps = createGetAnswerProps(options, {\n dispatch: thunk => {\n t.true(isFunction(thunk));\n }\n });\n\n const props = _getAnswerProps(state, qcmDrag);\n\n t.is(props.type, 'qcmDrag');\n t.is(props.answers.length, 3);\n\n t.is(props.answers[0].title, \"L'ordinateur\");\n t.true(props.answers[0].selected);\n t.is(props.answers[0].order, 1);\n t.true(isFunction(props.answers[0].onClick));\n t.is(props.answers[1].title, 'La tablette');\n t.false(props.answers[1].selected);\n t.true(isFunction(props.answers[1].onClick));\n t.is(props.answers[2].title, 'Le smartphone');\n t.true(props.answers[2].selected);\n t.is(props.answers[2].order, 0);\n t.true(isFunction(props.answers[2].onClick));\n\n props.answers[2].onClick();\n});\n\ntest('should create initial slider props', t => {\n t.plan(8);\n const state = {\n ui: {\n answers: {},\n current: {progressionId: '1234'}\n }\n };\n\n const dispatch = action => {\n t.pass();\n };\n\n const props = createGetAnswerProps(options, {dispatch})(state, slider);\n\n t.is(props.type, 'slider');\n t.is(props.placeholder, 'Déplacez le curseur.');\n t.is(props.minLabel, '0 an(s)');\n t.is(props.maxLabel, '1000 an(s)');\n t.is(props.title, '500 an(s)');\n t.is(props.value, 0.5);\n t.true(isFunction(props.onChange));\n\n props.onChange(0.87);\n});\n\ntest('should default slider step to 1', t => {\n t.plan(2);\n const state = {\n ui: {\n answers: {},\n current: {progressionId: '1234'}\n }\n };\n\n const dispatch = action => {\n t.pass();\n };\n\n const props = createGetAnswerProps(options, {dispatch})(\n state,\n omit('question.content.step', slider)\n );\n\n t.true(isFunction(props.onChange));\n\n props.onChange(0.87);\n});\n\ntest('should create edited slider props', t => {\n const state = {\n ui: {\n answers: {1234: {value: ['300']}},\n current: {progressionId: '1234'}\n }\n };\n\n const props = getAnswerProps(state, slider);\n t.is(props.title, '300 an(s)');\n t.is(props.value, 0.3);\n});\n\ntest('should create initial basic props', t => {\n const state = {\n ui: {\n answers: {},\n current: {progressionId: null}\n }\n };\n const props = getAnswerProps(state, basic);\n t.is(props.type, 'freeText');\n});\n\ntest('should create edited basic props', t => {\n const state = {\n ui: {\n answers: {1234: {value: ['foo']}},\n current: {progressionId: '1234'}\n }\n };\n\n const props = getAnswerProps(state, basic);\n t.is(props.type, 'freeText');\n t.is(props.value, 'foo');\n t.true(isFunction(props.onChange));\n});\n\ntest('should provide an help subtitle depending on question.type', t => {\n const help = getHelp(qcmDrag);\n t.is(help, 'Cliquez sur les réponses dans le bon ordre.');\n const help1 = getHelp(template);\n t.is(help1, 'Type your answers');\n const help2 = getHelp(qcm);\n t.is(help2, '__Select something below');\n});\n"],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ {
2
+ "data": {
3
+ "configs": {
4
+ "entities": {
5
+ "microlearning@1": {
6
+ "version": 1
7
+ }
8
+ }
9
+ },
10
+ "clues": {
11
+ "entities": {
12
+ "0": {
13
+ "1.B2.4": "Clue"
14
+ }
15
+ }
16
+ },
17
+ "contents": {
18
+ "chapter": {
19
+ "entities": {
20
+ "cha_Ny1BTxRp~": {
21
+ "info": {
22
+ "nbSlides": 4
23
+ }
24
+ }
25
+ }
26
+ },
27
+ "slide": {
28
+ "entities": {
29
+ "1.B2.4": {
30
+ "_id": "1.B2.4",
31
+ "klf": "Some KLF",
32
+ "tips": "XXX",
33
+ "hasClue": true,
34
+ "chapter_id": "cha_Ny1BTxRp~",
35
+ "authors": [],
36
+ "context": {
37
+ "media": {
38
+ "subtitles": [],
39
+ "posters": [],
40
+ "src": []
41
+ }
42
+ },
43
+ "lessons": [
44
+ {
45
+ "type": "video",
46
+ "poster": "//static.coorpacademy.com/content/digital/miniatures_cours/base/1B2.png",
47
+ "description": "Anatomie d'une page de résultats",
48
+ "mimeType": "application/vimeo",
49
+ "videoId": "88393119\n",
50
+ "_id": "590b862e2e967f64333ad456",
51
+ "subtitles": [],
52
+ "posters": [],
53
+ "src": []
54
+ }
55
+ ],
56
+ "question": {
57
+ "type": "basic",
58
+ "header": "Écrivez le mot Text dans l'input.\n",
59
+ "explanation": "Saisissez votre réponse.",
60
+ "content": {
61
+ "label": "Saisissez votre réponse.",
62
+ "placeholder": " ",
63
+ "maxTypos": null,
64
+ "choices": [],
65
+ "answers": [["Text"]],
66
+ "media": {
67
+ "subtitles": [],
68
+ "posters": [],
69
+ "src": []
70
+ }
71
+ },
72
+ "medias": []
73
+ }
74
+ }
75
+ }
76
+ }
77
+ },
78
+ "progressions": {
79
+ "entities": {
80
+ "0": {
81
+ "_id": "0",
82
+ "engine": {
83
+ "ref": "microlearning",
84
+ "version": "1"
85
+ },
86
+ "content": {
87
+ "ref": "cha_Ny1BTxRp~",
88
+ "type": "chapter"
89
+ },
90
+ "state": {
91
+ "slides": ["1.B2.3"],
92
+ "content": {
93
+ "ref": "1.B2.3",
94
+ "type": "slide"
95
+ },
96
+ "nextContent": {
97
+ "ref": "1.B2.4",
98
+ "type": "slide"
99
+ },
100
+ "lives": 1,
101
+ "step": {
102
+ "current": 2
103
+ },
104
+ "isCorrect": false,
105
+ "stars": 0,
106
+ "requestedClues": [],
107
+ "viewedResources": []
108
+ }
109
+ }
110
+ }
111
+ },
112
+ "exitNodes": {
113
+ "entities": {}
114
+ }
115
+ },
116
+ "ui": {
117
+ "answers": {
118
+ "0": {
119
+ "isCorrect": false,
120
+ "correction": [["Text"]]
121
+ }
122
+ },
123
+ "current": {
124
+ "progressionId": "0"
125
+ },
126
+ "corrections": {},
127
+ "route": {
128
+ "0": "clue"
129
+ }
130
+ }
131
+ }