@coorpacademy/player-web 4.22.7 → 4.22.8

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 +391 -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 +339 -0
  78. package/es/views/test/slide.js.map +1 -0
  79. package/lib/map-state-to-props/test/answer.js +409 -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 +363 -0
  156. package/lib/views/test/slide.js.map +1 -0
  157. package/package.json +4 -3
@@ -0,0 +1,339 @@
1
+ import _isFunction from "lodash/fp/isFunction";
2
+ import _omit from "lodash/fp/omit";
3
+ import _map from "lodash/fp/map";
4
+ import _identity from "lodash/fp/identity";
5
+ import test from 'ava';
6
+ import { mockTranslate } from '@coorpacademy/translate';
7
+ 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';
8
+ import microlearningHeader from '../../map-state-to-props/test/fixtures/progression-state';
9
+ import learnerHeader from '../../map-state-to-props/test/fixtures/progression-learner';
10
+ import stateSlide from '../../map-state-to-props/test/fixtures/player/slide';
11
+ import stateSlideNoLessons from '../../map-state-to-props/test/fixtures/player/slide-no-lessons';
12
+ import stateNoClue from '../../map-state-to-props/test/fixtures/player/no-clue';
13
+ import stateClue from '../../map-state-to-props/test/fixtures/player/clue';
14
+ import stateLoadingClue from '../../map-state-to-props/test/fixtures/player/loading-clue';
15
+ import * as fixtures from '../../../sandbox/fixtures';
16
+ import stateToVNode from './helpers/state-to-vnode';
17
+ import testRendering from './helpers/render';
18
+ const services = {
19
+ Analytics: AnalyticsService,
20
+ Answers: AnswersService(fixtures),
21
+ Clues: CluesService(fixtures),
22
+ Coach: CoachService,
23
+ Comments: CommentsService,
24
+ Content: ContentService(fixtures),
25
+ ExitNodes: ExitNodesService(fixtures),
26
+ LeaderBoard: LeaderBoardService,
27
+ Location: LocationService,
28
+ Logger: console,
29
+ Progressions: ProgressionsService(fixtures),
30
+ Recommendations: RecommendationsService(fixtures)
31
+ };
32
+ const options = {
33
+ translate: mockTranslate,
34
+ services
35
+ };
36
+ const store = {
37
+ dispatch: _identity
38
+ };
39
+ const mapStateToVNode = stateToVNode(options, store);
40
+ test('should display microlearning header', t => {
41
+ const vNode = mapStateToVNode(microlearningHeader);
42
+ testRendering(vNode);
43
+ const {
44
+ props: {
45
+ player: {
46
+ header: headerProps
47
+ }
48
+ }
49
+ } = vNode;
50
+ t.is(headerProps.type, 'microlearning');
51
+ t.is(headerProps.content.title, 'Les réseaux sociaux au service du crowdfunding');
52
+ t.is(headerProps.subcontent, null);
53
+ t.deepEqual(headerProps.lives, {
54
+ count: 3
55
+ });
56
+ const onClick = headerProps.content.onClick;
57
+ t.true(_isFunction(onClick));
58
+ const actionOnClick = onClick();
59
+ t.true(_isFunction(actionOnClick));
60
+ });
61
+ test('should display learner header with chapter num', t => {
62
+ const vNode = mapStateToVNode(learnerHeader);
63
+ testRendering(vNode);
64
+ const {
65
+ props: {
66
+ player: {
67
+ header: headerProps
68
+ }
69
+ }
70
+ } = vNode;
71
+ t.is(headerProps.type, 'learner');
72
+ t.is(headerProps.content.title, 'level1');
73
+ t.is(headerProps.content.details, 'base-translation');
74
+ t.is(headerProps.subcontent.title, 'chapter2!');
75
+ t.is(headerProps.subcontent.details, '2/2');
76
+ t.deepEqual(headerProps.lives, {
77
+ count: 3
78
+ });
79
+ const onClick = headerProps.content.onClick;
80
+ t.true(_isFunction(onClick));
81
+ const actionOnClick = onClick();
82
+ t.true(_isFunction(actionOnClick));
83
+ });
84
+ test('should display learner header with no chapter nums', t => {
85
+ const state = _omit('data.contents.level.entities.1.chapterIds', learnerHeader);
86
+
87
+ const vNode = mapStateToVNode(state);
88
+ testRendering(vNode);
89
+ const {
90
+ props: {
91
+ player: {
92
+ header: headerProps
93
+ }
94
+ }
95
+ } = vNode;
96
+ t.is(headerProps.type, 'learner');
97
+ t.is(headerProps.content.title, 'level1');
98
+ t.is(headerProps.content.details, 'base-translation');
99
+ t.is(headerProps.subcontent.title, 'chapter2!');
100
+ t.is(headerProps.subcontent.details, null);
101
+ t.deepEqual(headerProps.lives, {
102
+ count: 3
103
+ });
104
+ const onClick = headerProps.content.onClick;
105
+ t.true(_isFunction(onClick));
106
+ const actionOnClick = onClick();
107
+ t.true(_isFunction(actionOnClick));
108
+ });
109
+ test('should display slide', async t => {
110
+ const vNode = mapStateToVNode(stateSlide);
111
+ testRendering(vNode);
112
+ const {
113
+ props: {
114
+ player: playerProps
115
+ }
116
+ } = vNode;
117
+ t.is(playerProps.typeClue, 'answer');
118
+ t.is(playerProps.text, null);
119
+ t.deepEqual(playerProps.step, {
120
+ current: 2,
121
+ total: 4
122
+ });
123
+ t.is(playerProps.question, "Écrivez le mot Text dans l'input.\n");
124
+ t.deepEqual(_omit('onClick', playerProps.cta), {
125
+ 'aria-label': '__Validate. __Submit your Answer',
126
+ submitValue: '__Validate',
127
+ disabled: true,
128
+ name: 'validateAnswerCTA',
129
+ light: false,
130
+ small: false,
131
+ secondary: false,
132
+ useButtonTag: true
133
+ });
134
+ await t.notThrows(playerProps.cta.onClick);
135
+ t.is(playerProps.help, 'Saisissez votre réponse.');
136
+ t.truthy(playerProps.answerType);
137
+ t.deepEqual(_map(_omit('onClick'), playerProps.buttons), [{
138
+ title: '__Question',
139
+ type: 'question',
140
+ selected: true
141
+ }, {
142
+ notify: true,
143
+ disabled: false,
144
+ title: '__Media',
145
+ type: 'media',
146
+ selected: false
147
+ }, {
148
+ title: '__Clue',
149
+ type: 'clue',
150
+ selected: false,
151
+ disabled: false
152
+ }, {
153
+ disabled: true,
154
+ title: '__Coach',
155
+ type: 'coach'
156
+ }]);
157
+ t.is(playerProps.showNewMedia, true);
158
+ t.is(playerProps.showReviewLesson, false);
159
+ return Promise.all(_map(button => t.notThrows(button.onClick), playerProps.buttons));
160
+ });
161
+ test('should disable lesson button if slide has no lessons', async t => {
162
+ const vNode = mapStateToVNode(stateSlideNoLessons);
163
+ testRendering(vNode);
164
+ const {
165
+ props: {
166
+ player: playerProps
167
+ }
168
+ } = vNode;
169
+ t.is(playerProps.typeClue, 'answer');
170
+ t.is(playerProps.text, null);
171
+ t.deepEqual(playerProps.step, {
172
+ current: 2,
173
+ total: 4
174
+ });
175
+ t.is(playerProps.question, "Écrivez le mot Text dans l'input.\n");
176
+ t.deepEqual(_omit('onClick', playerProps.cta), {
177
+ 'aria-label': '__Validate. __Submit your Answer',
178
+ submitValue: '__Validate',
179
+ disabled: true,
180
+ name: 'validateAnswerCTA',
181
+ light: false,
182
+ small: false,
183
+ secondary: false,
184
+ useButtonTag: true
185
+ });
186
+ await t.notThrows(playerProps.cta.onClick);
187
+ t.is(playerProps.help, 'Saisissez votre réponse.');
188
+ t.truthy(playerProps.answerType);
189
+ t.deepEqual(_map(_omit('onClick'), playerProps.buttons), [{
190
+ title: '__Question',
191
+ type: 'question',
192
+ selected: true
193
+ }, {
194
+ notify: false,
195
+ disabled: true,
196
+ title: '__Media',
197
+ type: 'media',
198
+ selected: false
199
+ }, {
200
+ title: '__Clue',
201
+ type: 'clue',
202
+ selected: false,
203
+ disabled: false
204
+ }, {
205
+ disabled: true,
206
+ title: '__Coach',
207
+ type: 'coach'
208
+ }]);
209
+ t.is(playerProps.showNewMedia, false);
210
+ t.is(playerProps.showReviewLesson, false);
211
+ return Promise.all(_map(button => t.notThrows(button.onClick), playerProps.buttons));
212
+ });
213
+ test('should display loading clue', async t => {
214
+ const vNode = mapStateToVNode(stateLoadingClue);
215
+ testRendering(vNode);
216
+ const {
217
+ props: {
218
+ player: playerProps
219
+ }
220
+ } = vNode;
221
+ t.is(playerProps.typeClue, 'clue');
222
+ t.is(playerProps.text, null);
223
+ t.deepEqual(playerProps.step, {
224
+ current: 1,
225
+ total: 1
226
+ });
227
+ t.is(playerProps.question, "Écrivez le mot Text dans l'input.\n");
228
+ t.deepEqual(_omit('onClick', playerProps.cta), {
229
+ submitValue: '__Back to question',
230
+ name: 'backToQuestionCTA',
231
+ light: false,
232
+ small: false,
233
+ secondary: true,
234
+ disabled: false
235
+ });
236
+ await t.notThrows(playerProps.cta.onClick);
237
+ t.is(playerProps.help, 'Saisissez votre réponse.');
238
+ t.truthy(playerProps.answerType);
239
+ t.deepEqual(_map(_omit('onClick'), playerProps.buttons), [{
240
+ title: '__Question',
241
+ type: 'question',
242
+ selected: false
243
+ }, {
244
+ notify: true,
245
+ disabled: false,
246
+ title: '__Media',
247
+ type: 'media',
248
+ selected: false
249
+ }, {
250
+ title: '__Clue',
251
+ type: 'clue',
252
+ selected: true,
253
+ disabled: false
254
+ }, {
255
+ disabled: true,
256
+ title: '__Coach',
257
+ type: 'coach'
258
+ }]);
259
+ return Promise.all(_map(button => t.notThrows(button.onClick), playerProps.buttons));
260
+ });
261
+ test('should display clue', async t => {
262
+ const vNode = mapStateToVNode(stateClue);
263
+ testRendering(vNode);
264
+ const {
265
+ props: {
266
+ player: playerProps
267
+ }
268
+ } = vNode;
269
+ t.is(playerProps.typeClue, 'clue');
270
+ t.is(playerProps.text, 'Clue');
271
+ t.deepEqual(playerProps.step, {
272
+ current: 2,
273
+ total: 4
274
+ });
275
+ t.is(playerProps.question, "Écrivez le mot Text dans l'input.\n");
276
+ t.deepEqual(_omit('onClick', playerProps.cta), {
277
+ submitValue: '__Back to question',
278
+ name: 'backToQuestionCTA',
279
+ light: false,
280
+ small: false,
281
+ secondary: true,
282
+ disabled: false
283
+ });
284
+ await t.notThrows(playerProps.cta.onClick);
285
+ t.is(playerProps.help, 'Saisissez votre réponse.');
286
+ t.truthy(playerProps.answerType);
287
+ t.deepEqual(_map(_omit('onClick'), playerProps.buttons), [{
288
+ title: '__Question',
289
+ type: 'question',
290
+ selected: false
291
+ }, {
292
+ notify: true,
293
+ disabled: false,
294
+ title: '__Media',
295
+ type: 'media',
296
+ selected: false
297
+ }, {
298
+ title: '__Clue',
299
+ type: 'clue',
300
+ selected: true,
301
+ disabled: false
302
+ }, {
303
+ disabled: true,
304
+ title: '__Coach',
305
+ type: 'coach'
306
+ }]);
307
+ return Promise.all(_map(button => t.notThrows(button.onClick), playerProps.buttons));
308
+ });
309
+ test('should disable clue button if slide has no clue', t => {
310
+ const vNode = mapStateToVNode(stateNoClue);
311
+ testRendering(vNode);
312
+ const {
313
+ props: {
314
+ player: playerProps
315
+ }
316
+ } = vNode;
317
+ t.deepEqual(_map(_omit('onClick'), playerProps.buttons), [{
318
+ title: '__Question',
319
+ type: 'question',
320
+ selected: true
321
+ }, {
322
+ notify: true,
323
+ disabled: false,
324
+ title: '__Media',
325
+ type: 'media',
326
+ selected: false
327
+ }, {
328
+ title: '__Clue',
329
+ type: 'clue',
330
+ selected: false,
331
+ disabled: true
332
+ }, {
333
+ disabled: true,
334
+ title: '__Coach',
335
+ type: 'coach'
336
+ }]);
337
+ return Promise.all(_map(button => t.notThrows(button.onClick), playerProps.buttons));
338
+ });
339
+ //# sourceMappingURL=slide.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slide.js","names":["test","mockTranslate","Analytics","AnalyticsService","Answers","AnswersService","Clues","CluesService","Coach","CoachService","Comments","CommentsService","Content","ContentService","ExitNodes","ExitNodesService","LeaderBoard","LeaderBoardService","Location","LocationService","Progressions","ProgressionsService","Recommendations","RecommendationsService","microlearningHeader","learnerHeader","stateSlide","stateSlideNoLessons","stateNoClue","stateClue","stateLoadingClue","fixtures","stateToVNode","testRendering","services","Logger","console","options","translate","store","dispatch","mapStateToVNode","t","vNode","props","player","header","headerProps","is","type","content","title","subcontent","deepEqual","lives","count","onClick","true","actionOnClick","details","state","playerProps","typeClue","text","step","current","total","question","cta","submitValue","disabled","name","light","small","secondary","useButtonTag","notThrows","help","truthy","answerType","buttons","selected","notify","showNewMedia","showReviewLesson","Promise","all","button"],"sources":["../../../src/views/test/slide.js"],"sourcesContent":["import test from 'ava';\nimport {identity, map, omit, isFunction} from 'lodash/fp';\n\nimport {mockTranslate} from '@coorpacademy/translate';\nimport {\n Analytics as AnalyticsService,\n Answers as AnswersService,\n Clues as CluesService,\n Coach as CoachService,\n Comments as CommentsService,\n Content as ContentService,\n ExitNodes as ExitNodesService,\n LeaderBoard as LeaderBoardService,\n Location as LocationService,\n Progressions as ProgressionsService,\n Recommendations as RecommendationsService\n} from '@coorpacademy/player-services';\nimport microlearningHeader from '../../map-state-to-props/test/fixtures/progression-state';\nimport learnerHeader from '../../map-state-to-props/test/fixtures/progression-learner';\nimport stateSlide from '../../map-state-to-props/test/fixtures/player/slide';\nimport stateSlideNoLessons from '../../map-state-to-props/test/fixtures/player/slide-no-lessons';\nimport stateNoClue from '../../map-state-to-props/test/fixtures/player/no-clue';\nimport stateClue from '../../map-state-to-props/test/fixtures/player/clue';\nimport stateLoadingClue from '../../map-state-to-props/test/fixtures/player/loading-clue';\nimport * as fixtures from '../../../sandbox/fixtures';\nimport stateToVNode from './helpers/state-to-vnode';\nimport testRendering from './helpers/render';\n\nconst services = {\n Analytics: AnalyticsService,\n Answers: AnswersService(fixtures),\n Clues: CluesService(fixtures),\n Coach: CoachService,\n Comments: CommentsService,\n Content: ContentService(fixtures),\n ExitNodes: ExitNodesService(fixtures),\n LeaderBoard: LeaderBoardService,\n Location: LocationService,\n Logger: console,\n Progressions: ProgressionsService(fixtures),\n Recommendations: RecommendationsService(fixtures)\n};\n\nconst options = {translate: mockTranslate, services};\nconst store = {dispatch: identity};\nconst mapStateToVNode = stateToVNode(options, store);\n\ntest('should display microlearning header', t => {\n const vNode = mapStateToVNode(microlearningHeader);\n testRendering(vNode);\n const {\n props: {\n player: {header: headerProps}\n }\n } = vNode;\n t.is(headerProps.type, 'microlearning');\n t.is(headerProps.content.title, 'Les réseaux sociaux au service du crowdfunding');\n t.is(headerProps.subcontent, null);\n t.deepEqual(headerProps.lives, {count: 3});\n const onClick = headerProps.content.onClick;\n t.true(isFunction(onClick));\n const actionOnClick = onClick();\n t.true(isFunction(actionOnClick));\n});\n\ntest('should display learner header with chapter num', t => {\n const vNode = mapStateToVNode(learnerHeader);\n testRendering(vNode);\n const {\n props: {\n player: {header: headerProps}\n }\n } = vNode;\n\n t.is(headerProps.type, 'learner');\n t.is(headerProps.content.title, 'level1');\n t.is(headerProps.content.details, 'base-translation');\n t.is(headerProps.subcontent.title, 'chapter2!');\n t.is(headerProps.subcontent.details, '2/2');\n t.deepEqual(headerProps.lives, {count: 3});\n\n const onClick = headerProps.content.onClick;\n t.true(isFunction(onClick));\n const actionOnClick = onClick();\n t.true(isFunction(actionOnClick));\n});\n\ntest('should display learner header with no chapter nums', t => {\n const state = omit('data.contents.level.entities.1.chapterIds', learnerHeader);\n\n const vNode = mapStateToVNode(state);\n testRendering(vNode);\n const {\n props: {\n player: {header: headerProps}\n }\n } = vNode;\n\n t.is(headerProps.type, 'learner');\n t.is(headerProps.content.title, 'level1');\n t.is(headerProps.content.details, 'base-translation');\n t.is(headerProps.subcontent.title, 'chapter2!');\n t.is(headerProps.subcontent.details, null);\n t.deepEqual(headerProps.lives, {count: 3});\n\n const onClick = headerProps.content.onClick;\n t.true(isFunction(onClick));\n const actionOnClick = onClick();\n t.true(isFunction(actionOnClick));\n});\n\ntest('should display slide', async t => {\n const vNode = mapStateToVNode(stateSlide);\n testRendering(vNode);\n const {\n props: {player: playerProps}\n } = vNode;\n\n t.is(playerProps.typeClue, 'answer');\n t.is(playerProps.text, null);\n\n t.deepEqual(playerProps.step, {current: 2, total: 4});\n\n t.is(playerProps.question, \"Écrivez le mot Text dans l'input.\\n\");\n t.deepEqual(omit('onClick', playerProps.cta), {\n 'aria-label': '__Validate. __Submit your Answer',\n submitValue: '__Validate',\n disabled: true,\n name: 'validateAnswerCTA',\n light: false,\n small: false,\n secondary: false,\n useButtonTag: true\n });\n await t.notThrows(playerProps.cta.onClick);\n t.is(playerProps.help, 'Saisissez votre réponse.');\n t.truthy(playerProps.answerType);\n\n t.deepEqual(map(omit('onClick'), playerProps.buttons), [\n {\n title: '__Question',\n type: 'question',\n selected: true\n },\n {\n notify: true,\n disabled: false,\n title: '__Media',\n type: 'media',\n selected: false\n },\n {\n title: '__Clue',\n type: 'clue',\n selected: false,\n disabled: false\n },\n {\n disabled: true,\n title: '__Coach',\n type: 'coach'\n }\n ]);\n t.is(playerProps.showNewMedia, true);\n t.is(playerProps.showReviewLesson, false);\n return Promise.all(map(button => t.notThrows(button.onClick), playerProps.buttons));\n});\n\ntest('should disable lesson button if slide has no lessons', async t => {\n const vNode = mapStateToVNode(stateSlideNoLessons);\n testRendering(vNode);\n const {\n props: {player: playerProps}\n } = vNode;\n\n t.is(playerProps.typeClue, 'answer');\n t.is(playerProps.text, null);\n\n t.deepEqual(playerProps.step, {current: 2, total: 4});\n\n t.is(playerProps.question, \"Écrivez le mot Text dans l'input.\\n\");\n t.deepEqual(omit('onClick', playerProps.cta), {\n 'aria-label': '__Validate. __Submit your Answer',\n submitValue: '__Validate',\n disabled: true,\n name: 'validateAnswerCTA',\n light: false,\n small: false,\n secondary: false,\n useButtonTag: true\n });\n await t.notThrows(playerProps.cta.onClick);\n t.is(playerProps.help, 'Saisissez votre réponse.');\n t.truthy(playerProps.answerType);\n\n t.deepEqual(map(omit('onClick'), playerProps.buttons), [\n {\n title: '__Question',\n type: 'question',\n selected: true\n },\n {\n notify: false,\n disabled: true,\n title: '__Media',\n type: 'media',\n selected: false\n },\n {\n title: '__Clue',\n type: 'clue',\n selected: false,\n disabled: false\n },\n {\n disabled: true,\n title: '__Coach',\n type: 'coach'\n }\n ]);\n t.is(playerProps.showNewMedia, false);\n t.is(playerProps.showReviewLesson, false);\n return Promise.all(map(button => t.notThrows(button.onClick), playerProps.buttons));\n});\n\ntest('should display loading clue', async t => {\n const vNode = mapStateToVNode(stateLoadingClue);\n testRendering(vNode);\n const {\n props: {player: playerProps}\n } = vNode;\n\n t.is(playerProps.typeClue, 'clue');\n t.is(playerProps.text, null);\n\n t.deepEqual(playerProps.step, {current: 1, total: 1});\n\n t.is(playerProps.question, \"Écrivez le mot Text dans l'input.\\n\");\n t.deepEqual(omit('onClick', playerProps.cta), {\n submitValue: '__Back to question',\n name: 'backToQuestionCTA',\n light: false,\n small: false,\n secondary: true,\n disabled: false\n });\n await t.notThrows(playerProps.cta.onClick);\n t.is(playerProps.help, 'Saisissez votre réponse.');\n t.truthy(playerProps.answerType);\n\n t.deepEqual(map(omit('onClick'), playerProps.buttons), [\n {\n title: '__Question',\n type: 'question',\n selected: false\n },\n {\n notify: true,\n disabled: false,\n title: '__Media',\n type: 'media',\n selected: false\n },\n {\n title: '__Clue',\n type: 'clue',\n selected: true,\n disabled: false\n },\n {\n disabled: true,\n title: '__Coach',\n type: 'coach'\n }\n ]);\n\n return Promise.all(map(button => t.notThrows(button.onClick), playerProps.buttons));\n});\n\ntest('should display clue', async t => {\n const vNode = mapStateToVNode(stateClue);\n testRendering(vNode);\n const {\n props: {player: playerProps}\n } = vNode;\n\n t.is(playerProps.typeClue, 'clue');\n t.is(playerProps.text, 'Clue');\n\n t.deepEqual(playerProps.step, {current: 2, total: 4});\n\n t.is(playerProps.question, \"Écrivez le mot Text dans l'input.\\n\");\n t.deepEqual(omit('onClick', playerProps.cta), {\n submitValue: '__Back to question',\n name: 'backToQuestionCTA',\n light: false,\n small: false,\n secondary: true,\n disabled: false\n });\n await t.notThrows(playerProps.cta.onClick);\n t.is(playerProps.help, 'Saisissez votre réponse.');\n t.truthy(playerProps.answerType);\n\n t.deepEqual(map(omit('onClick'), playerProps.buttons), [\n {\n title: '__Question',\n type: 'question',\n selected: false\n },\n {\n notify: true,\n disabled: false,\n title: '__Media',\n type: 'media',\n selected: false\n },\n {\n title: '__Clue',\n type: 'clue',\n selected: true,\n disabled: false\n },\n {\n disabled: true,\n title: '__Coach',\n type: 'coach'\n }\n ]);\n\n return Promise.all(map(button => t.notThrows(button.onClick), playerProps.buttons));\n});\n\ntest('should disable clue button if slide has no clue', t => {\n const vNode = mapStateToVNode(stateNoClue);\n testRendering(vNode);\n const {\n props: {player: playerProps}\n } = vNode;\n\n t.deepEqual(map(omit('onClick'), playerProps.buttons), [\n {\n title: '__Question',\n type: 'question',\n selected: true\n },\n {\n notify: true,\n disabled: false,\n title: '__Media',\n type: 'media',\n selected: false\n },\n {\n title: '__Clue',\n type: 'clue',\n selected: false,\n disabled: true\n },\n {\n disabled: true,\n title: '__Coach',\n type: 'coach'\n }\n ]);\n\n return Promise.all(map(button => t.notThrows(button.onClick), playerProps.buttons));\n});\n"],"mappings":"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"}