@coorpacademy/player-web 4.22.52 → 4.23.0

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 (141) hide show
  1. package/es/index.js +1 -8
  2. package/es/index.js.map +1 -1
  3. package/es/map-state-to-props/answer.js +0 -35
  4. package/es/map-state-to-props/answer.js.map +1 -1
  5. package/es/map-state-to-props/error-popin.js +0 -4
  6. package/es/map-state-to-props/error-popin.js.map +1 -1
  7. package/es/map-state-to-props/header.js +3 -14
  8. package/es/map-state-to-props/header.js.map +1 -1
  9. package/es/map-state-to-props/index.js +0 -6
  10. package/es/map-state-to-props/index.js.map +1 -1
  11. package/es/map-state-to-props/loading.js +0 -1
  12. package/es/map-state-to-props/loading.js.map +1 -1
  13. package/es/map-state-to-props/player.js +0 -13
  14. package/es/map-state-to-props/player.js.map +1 -1
  15. package/es/map-state-to-props/popin-correction.js +0 -25
  16. package/es/map-state-to-props/popin-correction.js.map +1 -1
  17. package/es/map-state-to-props/popin-end.js +6 -35
  18. package/es/map-state-to-props/popin-end.js.map +1 -1
  19. package/es/map-state-to-props/resources.js +4 -10
  20. package/es/map-state-to-props/resources.js.map +1 -1
  21. package/es/map-state-to-props/slide.js +0 -2
  22. package/es/map-state-to-props/slide.js.map +1 -1
  23. package/es/map-state-to-props/test/answer.js +0 -21
  24. package/es/map-state-to-props/test/answer.js.map +1 -1
  25. package/es/map-state-to-props/test/header.js +0 -2
  26. package/es/map-state-to-props/test/header.js.map +1 -1
  27. package/es/map-state-to-props/test/index.js +22 -29
  28. package/es/map-state-to-props/test/index.js.map +1 -1
  29. package/es/map-state-to-props/test/player.js +6 -19
  30. package/es/map-state-to-props/test/player.js.map +1 -1
  31. package/es/map-state-to-props/test/popin-correction.create-header-cta.js +0 -15
  32. package/es/map-state-to-props/test/popin-correction.create-header-cta.js.map +1 -1
  33. package/es/map-state-to-props/test/popin-correction.js +0 -8
  34. package/es/map-state-to-props/test/popin-correction.js.map +1 -1
  35. package/es/map-state-to-props/test/popin-end.js +0 -13
  36. package/es/map-state-to-props/test/popin-end.js.map +1 -1
  37. package/es/map-state-to-props/test/popin-error.js.map +1 -1
  38. package/es/map-state-to-props/test/resources.js +0 -2
  39. package/es/map-state-to-props/test/resources.js.map +1 -1
  40. package/es/run-app.js +0 -2
  41. package/es/run-app.js.map +1 -1
  42. package/es/store.js +0 -4
  43. package/es/store.js.map +1 -1
  44. package/es/test/add-timeout.js.map +1 -1
  45. package/es/test/helpers/css-register.js.map +1 -1
  46. package/es/test/helpers/macro.js +0 -1
  47. package/es/test/helpers/macro.js.map +1 -1
  48. package/es/test/index.js.map +1 -1
  49. package/es/test/init-reducers.js.map +1 -1
  50. package/es/test/locales.js.map +1 -1
  51. package/es/test/run-app.js.map +1 -1
  52. package/es/test/store.js.map +1 -1
  53. package/es/views/index.js.map +1 -1
  54. package/es/views/test/helpers/render.js +0 -2
  55. package/es/views/test/helpers/render.js.map +1 -1
  56. package/es/views/test/helpers/state-to-vnode.js +0 -2
  57. package/es/views/test/helpers/state-to-vnode.js.map +1 -1
  58. package/es/views/test/loading.js.map +1 -1
  59. package/es/views/test/popin-correction.js +0 -6
  60. package/es/views/test/popin-correction.js.map +1 -1
  61. package/es/views/test/popin-end.js.map +1 -1
  62. package/es/views/test/router.js.map +1 -1
  63. package/es/views/test/slide.js +0 -1
  64. package/es/views/test/slide.js.map +1 -1
  65. package/lib/index.js +2 -18
  66. package/lib/index.js.map +1 -1
  67. package/lib/map-state-to-props/answer.js +1 -47
  68. package/lib/map-state-to-props/answer.js.map +1 -1
  69. package/lib/map-state-to-props/error-popin.js +2 -10
  70. package/lib/map-state-to-props/error-popin.js.map +1 -1
  71. package/lib/map-state-to-props/header.js +5 -19
  72. package/lib/map-state-to-props/header.js.map +1 -1
  73. package/lib/map-state-to-props/index.js +1 -19
  74. package/lib/map-state-to-props/index.js.map +1 -1
  75. package/lib/map-state-to-props/loading.js +1 -4
  76. package/lib/map-state-to-props/loading.js.map +1 -1
  77. package/lib/map-state-to-props/player.js +2 -22
  78. package/lib/map-state-to-props/player.js.map +1 -1
  79. package/lib/map-state-to-props/popin-correction.js +1 -32
  80. package/lib/map-state-to-props/popin-correction.js.map +1 -1
  81. package/lib/map-state-to-props/popin-end.js +8 -47
  82. package/lib/map-state-to-props/popin-end.js.map +1 -1
  83. package/lib/map-state-to-props/resources.js +6 -20
  84. package/lib/map-state-to-props/resources.js.map +1 -1
  85. package/lib/map-state-to-props/slide.js +2 -11
  86. package/lib/map-state-to-props/slide.js.map +1 -1
  87. package/lib/map-state-to-props/test/answer.js +1 -37
  88. package/lib/map-state-to-props/test/answer.js.map +1 -1
  89. package/lib/map-state-to-props/test/header.js +1 -12
  90. package/lib/map-state-to-props/test/header.js.map +1 -1
  91. package/lib/map-state-to-props/test/index.js +23 -20
  92. package/lib/map-state-to-props/test/index.js.map +1 -1
  93. package/lib/map-state-to-props/test/player.js +12 -52
  94. package/lib/map-state-to-props/test/player.js.map +1 -1
  95. package/lib/map-state-to-props/test/popin-correction.create-header-cta.js +1 -27
  96. package/lib/map-state-to-props/test/popin-correction.create-header-cta.js.map +1 -1
  97. package/lib/map-state-to-props/test/popin-correction.js +1 -11
  98. package/lib/map-state-to-props/test/popin-correction.js.map +1 -1
  99. package/lib/map-state-to-props/test/popin-end.js +1 -26
  100. package/lib/map-state-to-props/test/popin-end.js.map +1 -1
  101. package/lib/map-state-to-props/test/popin-error.js +1 -6
  102. package/lib/map-state-to-props/test/popin-error.js.map +1 -1
  103. package/lib/map-state-to-props/test/resources.js +1 -11
  104. package/lib/map-state-to-props/test/resources.js.map +1 -1
  105. package/lib/run-app.js +1 -5
  106. package/lib/run-app.js.map +1 -1
  107. package/lib/store.js +1 -11
  108. package/lib/store.js.map +1 -1
  109. package/lib/test/add-timeout.js +1 -4
  110. package/lib/test/add-timeout.js.map +1 -1
  111. package/lib/test/helpers/css-register.js +1 -3
  112. package/lib/test/helpers/css-register.js.map +1 -1
  113. package/lib/test/helpers/macro.js +1 -4
  114. package/lib/test/helpers/macro.js.map +1 -1
  115. package/lib/test/index.js +3 -12
  116. package/lib/test/index.js.map +1 -1
  117. package/lib/test/init-reducers.js +1 -5
  118. package/lib/test/init-reducers.js.map +1 -1
  119. package/lib/test/locales.js +1 -8
  120. package/lib/test/locales.js.map +1 -1
  121. package/lib/test/run-app.js +1 -5
  122. package/lib/test/run-app.js.map +1 -1
  123. package/lib/test/store.js +1 -5
  124. package/lib/test/store.js.map +1 -1
  125. package/lib/views/index.js +2 -9
  126. package/lib/views/index.js.map +1 -1
  127. package/lib/views/test/helpers/render.js +2 -10
  128. package/lib/views/test/helpers/render.js.map +1 -1
  129. package/lib/views/test/helpers/state-to-vnode.js +1 -6
  130. package/lib/views/test/helpers/state-to-vnode.js.map +1 -1
  131. package/lib/views/test/loading.js +1 -5
  132. package/lib/views/test/loading.js.map +1 -1
  133. package/lib/views/test/popin-correction.js +1 -18
  134. package/lib/views/test/popin-correction.js.map +1 -1
  135. package/lib/views/test/popin-end.js +1 -10
  136. package/lib/views/test/popin-end.js.map +1 -1
  137. package/lib/views/test/router.js +1 -8
  138. package/lib/views/test/router.js.map +1 -1
  139. package/lib/views/test/slide.js +3 -23
  140. package/lib/views/test/slide.js.map +1 -1
  141. package/package.json +13 -14
@@ -31,15 +31,12 @@ test('should create initial qcm props', t => {
31
31
  }
32
32
  }
33
33
  };
34
-
35
34
  const _getAnswerProps = createGetAnswerProps(options, {
36
35
  dispatch: thunk => {
37
36
  t.true(_isFunction(thunk));
38
37
  }
39
38
  });
40
-
41
39
  const props = _getAnswerProps(state, qcm);
42
-
43
40
  t.is(props.type, 'qcm');
44
41
  t.true(props.answers.every(answer => answer.selected === false));
45
42
  props.answers[0].onClick();
@@ -84,15 +81,12 @@ test('should create edited template props', t => {
84
81
  }
85
82
  }
86
83
  };
87
-
88
84
  const _getAnswerProps = createGetAnswerProps(options, {
89
85
  dispatch: thunk => {
90
86
  t.true(_isFunction(thunk));
91
87
  }
92
88
  });
93
-
94
89
  const props = _getAnswerProps(state, template);
95
-
96
90
  t.is(props.type, 'template');
97
91
  t.is(props.template, 'The answer is {{inp81438}} {{sel31191}}');
98
92
  t.true(Array.isArray(props.answers));
@@ -129,15 +123,12 @@ test('should add an invalid `select an answer` choice for a select field in a te
129
123
  }
130
124
  }
131
125
  };
132
-
133
126
  const _getAnswerProps = createGetAnswerProps(options, {
134
127
  dispatch: thunk => {
135
128
  t.true(_isFunction(thunk));
136
129
  }
137
130
  });
138
-
139
131
  const props = _getAnswerProps(state, template);
140
-
141
132
  const selectOptions = props.answers[1].options;
142
133
  t.is(selectOptions.length, 3);
143
134
  t.is(selectOptions[0].name, '__Select an answer');
@@ -201,20 +192,15 @@ test('should create edited qcmGraphic props', t => {
201
192
  }
202
193
  }
203
194
  };
204
-
205
195
  const _getAnswerProps = createGetAnswerProps(options, {
206
196
  dispatch: thunk => {
207
197
  t.true(_isFunction(thunk));
208
198
  }
209
199
  });
210
-
211
200
  const props = _getAnswerProps(state, qcmGraphic);
212
-
213
201
  t.is(props.type, 'qcmGraphic');
214
202
  t.is(props.answers.length, 2);
215
-
216
203
  const answers = _pipe(_map(_pick(['title', 'selected'])), _sortBy('title'))(props.answers);
217
-
218
204
  t.deepEqual(answers, [{
219
205
  title: 'Faux',
220
206
  selected: false
@@ -261,15 +247,12 @@ test('should create edited qcmDrag props', t => {
261
247
  }
262
248
  }
263
249
  };
264
-
265
250
  const _getAnswerProps = createGetAnswerProps(options, {
266
251
  dispatch: thunk => {
267
252
  t.true(_isFunction(thunk));
268
253
  }
269
254
  });
270
-
271
255
  const props = _getAnswerProps(state, qcmDrag);
272
-
273
256
  t.is(props.type, 'qcmDrag');
274
257
  t.is(props.answers.length, 3);
275
258
  t.is(props.answers[0].title, "L'ordinateur");
@@ -295,11 +278,9 @@ test('should create initial slider props', t => {
295
278
  }
296
279
  }
297
280
  };
298
-
299
281
  const dispatch = action => {
300
282
  t.pass();
301
283
  };
302
-
303
284
  const props = createGetAnswerProps(options, {
304
285
  dispatch
305
286
  })(state, slider);
@@ -322,11 +303,9 @@ test('should default slider step to 1', t => {
322
303
  }
323
304
  }
324
305
  };
325
-
326
306
  const dispatch = action => {
327
307
  t.pass();
328
308
  };
329
-
330
309
  const props = createGetAnswerProps(options, {
331
310
  dispatch
332
311
  })(state, _omit('question.content.step', slider));
@@ -1 +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(24);\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.is(props.answers[1]['aria-label'], '__Select an answer');\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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"}
1
+ {"version":3,"file":"answer.js","names":["test","mockTranslate","createGetAnswerProps","createGetHelp","basic","qcm","qcmDrag","qcmGraphic","template","slider","options","translate","store","dispatch","_identity","getAnswerProps","getHelp","t","plan","state","ui","current","progressionId","_getAnswerProps","thunk","true","_isFunction","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","_pipe","_map","_pick","_sortBy","deepEqual","order","action","pass","minLabel","maxLabel","_omit","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(24);\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.is(props.answers[1]['aria-label'], '__Select an answer');\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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","ignoreList":[]}
@@ -13,7 +13,6 @@ const store = {
13
13
  dispatch: _identity
14
14
  };
15
15
  const headerProps = createHeader(options, store);
16
-
17
16
  const createProgression = slide => ({
18
17
  engine: {
19
18
  ref: 'microlearning',
@@ -36,7 +35,6 @@ const createProgression = slide => ({
36
35
  viewedResources: []
37
36
  }
38
37
  });
39
-
40
38
  const data = {
41
39
  contents: {
42
40
  chapter: {
@@ -1 +1 @@
1
- {"version":3,"file":"header.js","names":["test","mockTranslate","createHeader","basicSlide","options","translate","store","dispatch","headerProps","createProgression","slide","engine","ref","version","content","type","state","nextContent","_id","lives","livesDisabled","step","current","viewedResources","data","contents","chapter","entities","name","level","chapterIds","chapter_id","progressions","basic","t","ui","progressionId","props","deepEqual","count","title","subcontent","details","is"],"sources":["../../../src/map-state-to-props/test/header.js"],"sourcesContent":["import test from 'ava';\nimport {set, identity, omit, pipe} from 'lodash/fp';\n\nimport {mockTranslate} from '@coorpacademy/translate';\nimport createHeader from '../header';\nimport basicSlide from './fixtures/slides/basic';\n\nconst options = {translate: mockTranslate};\nconst store = {dispatch: identity};\nconst headerProps = createHeader(options, store);\n\nconst createProgression = slide => ({\n engine: {\n ref: 'microlearning',\n version: '1'\n },\n content: {\n ref: '1.B1',\n type: 'chapter'\n },\n state: {\n nextContent: {\n ref: slide._id,\n type: 'slide'\n },\n lives: 100,\n livesDisabled: false,\n step: {\n current: 1\n },\n viewedResources: []\n }\n});\n\nconst data = {\n contents: {\n chapter: {\n entities: {\n '1.B2': {\n _id: '1.B2',\n name: 'some-title'\n }\n }\n },\n level: {\n entities: {\n '1.B': {\n name: 'level-with-chapters',\n chapterIds: ['1.B1', '1.B2', '1.B3']\n }\n }\n },\n slide: {\n entities: {\n [basicSlide._id]: {\n chapter_id: '1.B2'\n }\n }\n }\n },\n progressions: {\n entities: {\n basic: createProgression(basicSlide)\n }\n }\n};\n\ntest('should create header with the number of lives in the state', t => {\n const ui = {current: {progressionId: 'basic'}};\n const state = {data, ui};\n const props = headerProps(state);\n t.deepEqual(props.lives, {\n count: 100\n });\n});\n\ntest('should read title from the content when available', t => {\n const ui = {current: {progressionId: 'basic'}};\n const state = {data: set('progressions.entities.basic.content.ref', '1.B2', data), ui};\n const props = headerProps(state);\n\n t.deepEqual(omit('onClick', props.content), {\n title: 'some-title'\n });\n});\n\ntest('should find chapter details within learner.header.subcontent', t => {\n const ui = {current: {progressionId: 'basic'}};\n const state = {\n data: pipe(\n set('progressions.entities.basic.engine.ref', 'learner'),\n set('progressions.entities.basic.content.type', 'level'),\n set('progressions.entities.basic.content.ref', '1.B')\n )(data),\n ui\n };\n const props = headerProps(state);\n\n t.deepEqual(props.subcontent, {\n title: 'some-title',\n details: '2/3'\n });\n});\n\ntest('should set lives to null if lives are disabled in the progression', t => {\n const ui = {current: {progressionId: 'basic'}};\n const state = {data: set('progressions.entities.basic.state.livesDisabled', true, data), ui};\n const props = headerProps(state);\n\n t.is(props.lives, false);\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"header.js","names":["test","mockTranslate","createHeader","basicSlide","options","translate","store","dispatch","_identity","headerProps","createProgression","slide","engine","ref","version","content","type","state","nextContent","_id","lives","livesDisabled","step","current","viewedResources","data","contents","chapter","entities","name","level","chapterIds","chapter_id","progressions","basic","t","ui","progressionId","props","deepEqual","count","_set","_omit","title","_pipe","subcontent","details","is"],"sources":["../../../src/map-state-to-props/test/header.js"],"sourcesContent":["import test from 'ava';\nimport {set, identity, omit, pipe} from 'lodash/fp';\n\nimport {mockTranslate} from '@coorpacademy/translate';\nimport createHeader from '../header';\nimport basicSlide from './fixtures/slides/basic';\n\nconst options = {translate: mockTranslate};\nconst store = {dispatch: identity};\nconst headerProps = createHeader(options, store);\n\nconst createProgression = slide => ({\n engine: {\n ref: 'microlearning',\n version: '1'\n },\n content: {\n ref: '1.B1',\n type: 'chapter'\n },\n state: {\n nextContent: {\n ref: slide._id,\n type: 'slide'\n },\n lives: 100,\n livesDisabled: false,\n step: {\n current: 1\n },\n viewedResources: []\n }\n});\n\nconst data = {\n contents: {\n chapter: {\n entities: {\n '1.B2': {\n _id: '1.B2',\n name: 'some-title'\n }\n }\n },\n level: {\n entities: {\n '1.B': {\n name: 'level-with-chapters',\n chapterIds: ['1.B1', '1.B2', '1.B3']\n }\n }\n },\n slide: {\n entities: {\n [basicSlide._id]: {\n chapter_id: '1.B2'\n }\n }\n }\n },\n progressions: {\n entities: {\n basic: createProgression(basicSlide)\n }\n }\n};\n\ntest('should create header with the number of lives in the state', t => {\n const ui = {current: {progressionId: 'basic'}};\n const state = {data, ui};\n const props = headerProps(state);\n t.deepEqual(props.lives, {\n count: 100\n });\n});\n\ntest('should read title from the content when available', t => {\n const ui = {current: {progressionId: 'basic'}};\n const state = {data: set('progressions.entities.basic.content.ref', '1.B2', data), ui};\n const props = headerProps(state);\n\n t.deepEqual(omit('onClick', props.content), {\n title: 'some-title'\n });\n});\n\ntest('should find chapter details within learner.header.subcontent', t => {\n const ui = {current: {progressionId: 'basic'}};\n const state = {\n data: pipe(\n set('progressions.entities.basic.engine.ref', 'learner'),\n set('progressions.entities.basic.content.type', 'level'),\n set('progressions.entities.basic.content.ref', '1.B')\n )(data),\n ui\n };\n const props = headerProps(state);\n\n t.deepEqual(props.subcontent, {\n title: 'some-title',\n details: '2/3'\n });\n});\n\ntest('should set lives to null if lives are disabled in the progression', t => {\n const ui = {current: {progressionId: 'basic'}};\n const state = {data: set('progressions.entities.basic.state.livesDisabled', true, data), ui};\n const props = headerProps(state);\n\n t.is(props.lives, false);\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,9 +1,6 @@
1
1
  import _set from "lodash/fp/set";
2
2
  import _get from "lodash/fp/get";
3
3
  import _map from "lodash/fp/map";
4
-
5
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
6
-
7
4
  import test from 'ava';
8
5
  import createPlayer from '../player';
9
6
  import { data, options, store } from './player';
@@ -26,33 +23,30 @@ test('memoize choices > QCM', t => {
26
23
  }
27
24
  }
28
25
  });
29
-
30
26
  const secondState = _set(['data', 'contents', 'slide', 'entities', 'qcmSlide-1', 'question', 'content', 'choices'], [{
31
27
  label: 'foo'
32
28
  }, {
33
29
  label: 'bar'
34
- }], initialState); // initiate player
30
+ }], initialState);
35
31
 
32
+ // initiate player
33
+ const player = createPlayer(options, store);
36
34
 
37
- const player = createPlayer(options, store); // test answers values
38
-
35
+ // test answers values
39
36
  const props = player(initialState);
37
+ const expected = _map('title', _get(['answerType', 'model', 'answers'], props));
40
38
 
41
- const expected = _map('title', _get(['answerType', 'model', 'answers'], props)); // test new answers values when state is updated
42
-
43
-
39
+ // test new answers values when state is updated
44
40
  const props2 = player(secondState);
45
-
46
41
  const expected2 = _map('title', _get(['answerType', 'model', 'answers'], props2));
42
+ t.deepEqual(expected2, expected);
47
43
 
48
- t.deepEqual(expected2, expected); // new player instance
49
-
50
- const newPlayer = createPlayer(options, store); // test new answers values when store and state are updated
44
+ // new player instance
45
+ const newPlayer = createPlayer(options, store);
51
46
 
47
+ // test new answers values when store and state are updated
52
48
  const props3 = newPlayer(secondState);
53
-
54
49
  const expected3 = _map('title', _get(['answerType', 'model', 'answers'], props3));
55
-
56
50
  t.deepEqual([...expected3].sort(), ['bar', 'foo']);
57
51
  });
58
52
  test('memoize choices > QCM DRAG', t => {
@@ -74,34 +68,33 @@ test('memoize choices > QCM DRAG', t => {
74
68
  }
75
69
  }
76
70
  });
77
-
78
71
  const secondState = _set(['data', 'contents', 'slide', 'entities', '8.B2.2', 'question', 'content', 'choices'], [{
79
72
  label: 'foo'
80
73
  }, {
81
74
  label: 'bar'
82
- }], _extends({}, initialState)); // initiate player
83
-
75
+ }], {
76
+ ...initialState
77
+ });
84
78
 
85
- const player = createPlayer(options, store); // test answers values
79
+ // initiate player
80
+ const player = createPlayer(options, store);
86
81
 
82
+ // test answers values
87
83
  const props = player(initialState);
88
-
89
84
  const expected = _map('title', _get(['answerType', 'model', 'answers'], props));
85
+ t.deepEqual([...expected].sort(), ["L'ordinateur", 'La tablette', 'Le smartphone']);
90
86
 
91
- t.deepEqual([...expected].sort(), ["L'ordinateur", 'La tablette', 'Le smartphone']); // test new answers values when state is updated
92
-
87
+ // test new answers values when state is updated
93
88
  const props2 = player(secondState);
94
-
95
89
  const expected2 = _map('title', _get(['answerType', 'model', 'answers'], props2));
90
+ t.deepEqual(expected2, expected);
96
91
 
97
- t.deepEqual(expected2, expected); // new player instance
98
-
99
- const newPlayer = createPlayer(options, store); // test new answers values when store and state are updated
92
+ // new player instance
93
+ const newPlayer = createPlayer(options, store);
100
94
 
95
+ // test new answers values when store and state are updated
101
96
  const props3 = newPlayer(secondState);
102
-
103
97
  const expected3 = _map('title', _get(['answerType', 'model', 'answers'], props3));
104
-
105
98
  t.deepEqual([...expected3].sort(), ['bar', 'foo']);
106
99
  });
107
100
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["test","createPlayer","data","options","store","t","initialState","version","shuffleChoices","ui","route","qcm","current","progressionId","coaches","availableCoaches","secondState","label","player","props","expected","props2","expected2","deepEqual","newPlayer","props3","expected3","sort","qcmDrag"],"sources":["../../../src/map-state-to-props/test/index.js"],"sourcesContent":["import test from 'ava';\nimport {map, get, set} from 'lodash/fp';\nimport createPlayer from '../player';\n\nimport {data, options, store} from './player';\n\ntest('memoize choices > QCM', t => {\n // state fixture\n const initialState = set(\n ['data', 'configs', 'entities', 'microlearning@1'],\n {version: '1', shuffleChoices: true},\n {\n data,\n ui: {\n route: {qcm: 'answer'},\n current: {progressionId: 'qcm'},\n coaches: {availableCoaches: 1}\n }\n }\n );\n const secondState = set(\n ['data', 'contents', 'slide', 'entities', 'qcmSlide-1', 'question', 'content', 'choices'],\n [\n {\n label: 'foo'\n },\n {\n label: 'bar'\n }\n ],\n initialState\n );\n\n // initiate player\n const player = createPlayer(options, store);\n\n // test answers values\n const props = player(initialState);\n const expected = map('title', get(['answerType', 'model', 'answers'], props));\n\n // test new answers values when state is updated\n const props2 = player(secondState);\n const expected2 = map('title', get(['answerType', 'model', 'answers'], props2));\n t.deepEqual(expected2, expected);\n\n // new player instance\n const newPlayer = createPlayer(options, store);\n\n // test new answers values when store and state are updated\n const props3 = newPlayer(secondState);\n const expected3 = map('title', get(['answerType', 'model', 'answers'], props3));\n t.deepEqual([...expected3].sort(), ['bar', 'foo']);\n});\n\ntest('memoize choices > QCM DRAG', t => {\n // state fixture\n const initialState = set(\n ['data', 'configs', 'entities', 'microlearning@1'],\n {version: '1', shuffleChoices: true},\n {\n data,\n ui: {\n route: {qcmDrag: 'answer'},\n current: {progressionId: 'qcmDrag'},\n coaches: {availableCoaches: 1}\n }\n }\n );\n const secondState = set(\n ['data', 'contents', 'slide', 'entities', '8.B2.2', 'question', 'content', 'choices'],\n [\n {\n label: 'foo'\n },\n {\n label: 'bar'\n }\n ],\n {...initialState}\n );\n\n // initiate player\n const player = createPlayer(options, store);\n\n // test answers values\n const props = player(initialState);\n const expected = map('title', get(['answerType', 'model', 'answers'], props));\n t.deepEqual([...expected].sort(), [\"L'ordinateur\", 'La tablette', 'Le smartphone']);\n\n // test new answers values when state is updated\n const props2 = player(secondState);\n\n const expected2 = map('title', get(['answerType', 'model', 'answers'], props2));\n t.deepEqual(expected2, expected);\n\n // new player instance\n const newPlayer = createPlayer(options, store);\n\n // test new answers values when store and state are updated\n const props3 = newPlayer(secondState);\n const expected3 = map('title', get(['answerType', 'model', 'answers'], props3));\n t.deepEqual([...expected3].sort(), ['bar', 'foo']);\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["test","createPlayer","data","options","store","t","initialState","_set","version","shuffleChoices","ui","route","qcm","current","progressionId","coaches","availableCoaches","secondState","label","player","props","expected","_map","_get","props2","expected2","deepEqual","newPlayer","props3","expected3","sort","qcmDrag"],"sources":["../../../src/map-state-to-props/test/index.js"],"sourcesContent":["import test from 'ava';\nimport {map, get, set} from 'lodash/fp';\nimport createPlayer from '../player';\n\nimport {data, options, store} from './player';\n\ntest('memoize choices > QCM', t => {\n // state fixture\n const initialState = set(\n ['data', 'configs', 'entities', 'microlearning@1'],\n {version: '1', shuffleChoices: true},\n {\n data,\n ui: {\n route: {qcm: 'answer'},\n current: {progressionId: 'qcm'},\n coaches: {availableCoaches: 1}\n }\n }\n );\n const secondState = set(\n ['data', 'contents', 'slide', 'entities', 'qcmSlide-1', 'question', 'content', 'choices'],\n [\n {\n label: 'foo'\n },\n {\n label: 'bar'\n }\n ],\n initialState\n );\n\n // initiate player\n const player = createPlayer(options, store);\n\n // test answers values\n const props = player(initialState);\n const expected = map('title', get(['answerType', 'model', 'answers'], props));\n\n // test new answers values when state is updated\n const props2 = player(secondState);\n const expected2 = map('title', get(['answerType', 'model', 'answers'], props2));\n t.deepEqual(expected2, expected);\n\n // new player instance\n const newPlayer = createPlayer(options, store);\n\n // test new answers values when store and state are updated\n const props3 = newPlayer(secondState);\n const expected3 = map('title', get(['answerType', 'model', 'answers'], props3));\n t.deepEqual([...expected3].sort(), ['bar', 'foo']);\n});\n\ntest('memoize choices > QCM DRAG', t => {\n // state fixture\n const initialState = set(\n ['data', 'configs', 'entities', 'microlearning@1'],\n {version: '1', shuffleChoices: true},\n {\n data,\n ui: {\n route: {qcmDrag: 'answer'},\n current: {progressionId: 'qcmDrag'},\n coaches: {availableCoaches: 1}\n }\n }\n );\n const secondState = set(\n ['data', 'contents', 'slide', 'entities', '8.B2.2', 'question', 'content', 'choices'],\n [\n {\n label: 'foo'\n },\n {\n label: 'bar'\n }\n ],\n {...initialState}\n );\n\n // initiate player\n const player = createPlayer(options, store);\n\n // test answers values\n const props = player(initialState);\n const expected = map('title', get(['answerType', 'model', 'answers'], props));\n t.deepEqual([...expected].sort(), [\"L'ordinateur\", 'La tablette', 'Le smartphone']);\n\n // test new answers values when state is updated\n const props2 = player(secondState);\n\n const expected2 = map('title', get(['answerType', 'model', 'answers'], props2));\n t.deepEqual(expected2, expected);\n\n // new player instance\n const newPlayer = createPlayer(options, store);\n\n // test new answers values when store and state are updated\n const props3 = newPlayer(secondState);\n const expected3 = map('title', get(['answerType', 'model', 'answers'], props3));\n t.deepEqual([...expected3].sort(), ['bar', 'foo']);\n});\n"],"mappings":"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","ignoreList":[]}
@@ -7,9 +7,6 @@ import _set from "lodash/fp/set";
7
7
  import _isEmpty from "lodash/fp/isEmpty";
8
8
  import _get from "lodash/fp/get";
9
9
  import _map from "lodash/fp/map";
10
-
11
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
12
-
13
10
  import test from 'ava';
14
11
  import { mockTranslate } from '@coorpacademy/translate';
15
12
  import { Analytics as AnalyticsService, Answers as AnswersService, Clues as CluesService, Coach as CoachService, Comments as CommentsService, Content as ContentService, ExitNodes as ExitNodesService, LeaderBoard as LeaderBoardService, Location as LocationService, Progressions as ProgressionsService, Recommendations as RecommendationsService } from '@coorpacademy/player-services';
@@ -48,9 +45,7 @@ export const store = {
48
45
  };
49
46
  const createPlayerProps = createPlayer(options, store);
50
47
  const createHeaderProps = createHeader(options, store);
51
-
52
48
  const availableSlides = _pipe(_map(slide => [slide._id, slide]), _fromPairs)([basicSlide, plopSlide, qcmSlide, qcmDragSlide, qcmGraphicSlide, contextSlide]);
53
-
54
49
  const createProgression = (slide, contentRef) => ({
55
50
  engine: {
56
51
  ref: 'microlearning',
@@ -73,7 +68,6 @@ const createProgression = (slide, contentRef) => ({
73
68
  viewedResources: []
74
69
  }
75
70
  });
76
-
77
71
  export const data = {
78
72
  contents: {
79
73
  chapter: {
@@ -110,7 +104,6 @@ export const data = {
110
104
  }
111
105
  }
112
106
  };
113
-
114
107
  const isDisabledFor = (slide, isConditional, answer) => {
115
108
  const progressionId = 'progression';
116
109
  const chapterId = 'chapter';
@@ -119,9 +112,10 @@ const isDisabledFor = (slide, isConditional, answer) => {
119
112
  contents: {
120
113
  slide: {
121
114
  entities: {
122
- [slide._id]: _extends({}, slide, {
115
+ [slide._id]: {
116
+ ...slide,
123
117
  chapter_id: chapterId
124
- })
118
+ }
125
119
  }
126
120
  },
127
121
  chapter: {
@@ -154,7 +148,6 @@ const isDisabledFor = (slide, isConditional, answer) => {
154
148
  }
155
149
  }).cta.disabled;
156
150
  };
157
-
158
151
  test('should create player props for basic question and show coaches', t => {
159
152
  const state = {
160
153
  data,
@@ -343,7 +336,6 @@ test('should display context tab button if slide context is available', t => {
343
336
  }
344
337
  }
345
338
  };
346
-
347
339
  const dispatch = action => {
348
340
  t.deepEqual(action, {
349
341
  type: UI_SELECT_ROUTE,
@@ -353,7 +345,6 @@ test('should display context tab button if slide context is available', t => {
353
345
  }
354
346
  });
355
347
  };
356
-
357
348
  const props = createPlayer(options, {
358
349
  dispatch: action => action(dispatch, () => state)
359
350
  })(state);
@@ -562,7 +553,6 @@ test('should not display review lesson notification when user has not seen any m
562
553
  });
563
554
  test('should feed step prop in non-adaptive mode', t => {
564
555
  const state = _set('data.contents.level.entities.1.info.nbSlides', 12, learnerProgressionStateFixture);
565
-
566
556
  const props = createPlayerProps(state);
567
557
  t.deepEqual(props.step, {
568
558
  current: 0,
@@ -571,7 +561,6 @@ test('should feed step prop in non-adaptive mode', t => {
571
561
  });
572
562
  test('should not feed step prop in adaptive mode', t => {
573
563
  const state = _pipe(_set('data.contents.level.entities.1.info.nbSlides', 12), _set('data.contents.chapter.entities.chapter2.isConditional', true))(learnerProgressionStateFixture);
574
-
575
564
  const props = createPlayerProps(state);
576
565
  t.falsy(props.step);
577
566
  });
@@ -579,7 +568,6 @@ test('should not send an id prop in resources', t => {
579
568
  const props = createPlayerProps(learnerProgressionStateFixture);
580
569
  t.is(_get('resources.0.id', props), undefined);
581
570
  });
582
-
583
571
  const createLearnerProgression = (slide, contentRef) => ({
584
572
  engine: {
585
573
  ref: 'learner',
@@ -602,7 +590,6 @@ const createLearnerProgression = (slide, contentRef) => ({
602
590
  viewedResources: []
603
591
  }
604
592
  });
605
-
606
593
  const check = (slide, answer) => {
607
594
  const progressionId = 'progression';
608
595
  const levelId = 'level';
@@ -612,9 +599,10 @@ const check = (slide, answer) => {
612
599
  contents: {
613
600
  slide: {
614
601
  entities: {
615
- [slide._id]: _extends({}, slide, {
602
+ [slide._id]: {
603
+ ...slide,
616
604
  chapter_id: chapterId
617
- })
605
+ }
618
606
  }
619
607
  },
620
608
  level: {
@@ -656,7 +644,6 @@ const check = (slide, answer) => {
656
644
  }
657
645
  }).cta.disabled;
658
646
  };
659
-
660
647
  test('should allow multi answers on adaptive level if the current chapter is not adaptive', t => {
661
648
  t.true(check(basicSlide, []));
662
649
  t.true(check(qcmSlide, []));