@coorpacademy/app-review 0.1.15 → 0.1.16

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 (212) hide show
  1. package/es/actions/api/fetch-skills.d.ts +4 -6
  2. package/es/actions/api/fetch-skills.js +7 -4
  3. package/es/actions/api/fetch-slide.d.ts +14 -7
  4. package/es/actions/api/fetch-slide.js +22 -19
  5. package/es/actions/api/post-progression.d.ts +4 -6
  6. package/es/actions/api/post-progression.js +13 -8
  7. package/es/actions/api/test/create-test-store.d.ts +5 -0
  8. package/es/actions/api/test/create-test-store.js +16 -0
  9. package/es/actions/api/test/fetch-skills.test.js +54 -0
  10. package/es/actions/api/test/fetch-slide.test.js +61 -0
  11. package/es/actions/api/test/post-progression.test.d.ts +1 -0
  12. package/es/actions/api/test/post-progression.test.js +102 -0
  13. package/es/actions/ui/answers.d.ts +7 -0
  14. package/es/actions/ui/answers.js +7 -0
  15. package/es/fixtures/temp-fixture.d.ts +1 -1
  16. package/es/index.js +10 -16
  17. package/es/reducers/data/index.d.ts +1 -1
  18. package/es/reducers/data/slides.d.ts +2 -2
  19. package/es/reducers/data/slides.js +5 -1
  20. package/es/reducers/data/test/progression.test.d.ts +1 -0
  21. package/es/reducers/data/test/progression.test.js +38 -0
  22. package/es/reducers/data/test/skills.test.d.ts +1 -0
  23. package/es/reducers/data/test/skills.test.js +12 -0
  24. package/es/reducers/data/test/slides.test.d.ts +1 -0
  25. package/es/reducers/data/test/slides.test.js +20 -0
  26. package/es/reducers/data/test/token.test.d.ts +1 -0
  27. package/es/reducers/data/test/token.test.js +11 -0
  28. package/es/reducers/index.d.ts +2 -2
  29. package/es/reducers/ui/answers.d.ts +4 -0
  30. package/es/reducers/ui/answers.js +13 -0
  31. package/es/reducers/ui/index.d.ts +4 -4
  32. package/es/reducers/ui/index.js +2 -2
  33. package/es/reducers/ui/test/answers.test.d.ts +1 -0
  34. package/es/reducers/ui/test/answers.test.js +11 -0
  35. package/es/reducers/ui/test/current-slide-ref.test.d.ts +1 -0
  36. package/es/reducers/ui/test/current-slide-ref.test.js +12 -0
  37. package/es/reducers/ui/test/navigation.test.d.ts +1 -0
  38. package/es/reducers/ui/test/navigation.test.js +15 -0
  39. package/es/services/fetch-slide.js +1 -1
  40. package/es/services/index.js +3 -1
  41. package/es/services/post-answer.d.ts +2 -0
  42. package/es/services/post-answer.js +18 -0
  43. package/es/services/test/fetch-slide.test.d.ts +1 -0
  44. package/es/services/test/fetch-slide.test.js +22 -0
  45. package/es/services/test/post-answer.test.d.ts +1 -0
  46. package/es/services/test/post-answer.test.js +57 -0
  47. package/es/services/test/post-progression.test.js +9 -1
  48. package/es/test/util/services.mock.js +37 -7
  49. package/es/types/common.d.ts +22 -8
  50. package/es/views/slides/index.d.ts +78 -2
  51. package/es/views/slides/index.js +70 -4
  52. package/es/views/slides/map-api-slide-to-ui.d.ts +8 -0
  53. package/es/views/slides/map-api-slide-to-ui.js +172 -0
  54. package/{lib/helpers → es/views/slides}/test/fixtures/free-text.d.ts +1 -1
  55. package/es/views/slides/test/fixtures/free-text.js +38 -0
  56. package/es/{helpers → views/slides}/test/fixtures/qcm-drag.d.ts +1 -1
  57. package/es/views/slides/test/fixtures/qcm-drag.js +108 -0
  58. package/es/{helpers → views/slides}/test/fixtures/qcm-graphic.d.ts +1 -1
  59. package/es/views/slides/test/fixtures/qcm-graphic.js +88 -0
  60. package/es/{helpers → views/slides}/test/fixtures/qcm.d.ts +1 -1
  61. package/es/{helpers → views/slides}/test/fixtures/qcm.js +5 -1
  62. package/es/{helpers → views/slides}/test/fixtures/select-template.d.ts +1 -1
  63. package/es/views/slides/test/fixtures/select-template.js +92 -0
  64. package/es/{helpers → views/slides}/test/fixtures/slider.d.ts +1 -1
  65. package/es/views/slides/test/fixtures/slider.js +36 -0
  66. package/es/{helpers → views/slides}/test/fixtures/text-template.d.ts +1 -1
  67. package/es/{helpers → views/slides}/test/fixtures/text-template.js +5 -1
  68. package/es/views/slides/test/map-api-slide-to-ui.test.d.ts +1 -0
  69. package/es/{helpers → views/slides}/test/map-api-slide-to-ui.test.js +19 -9
  70. package/lib/actions/api/fetch-skills.d.ts +4 -6
  71. package/lib/actions/api/fetch-skills.js +55 -7
  72. package/lib/actions/api/fetch-slide.d.ts +14 -7
  73. package/lib/actions/api/fetch-slide.js +70 -20
  74. package/lib/actions/api/post-progression.d.ts +4 -6
  75. package/lib/actions/api/post-progression.js +63 -9
  76. package/lib/actions/api/test/create-test-store.d.ts +5 -0
  77. package/lib/actions/api/test/create-test-store.js +18 -0
  78. package/lib/actions/api/test/fetch-skills.test.d.ts +1 -0
  79. package/lib/actions/api/test/fetch-skills.test.js +113 -0
  80. package/lib/actions/api/test/fetch-slide.test.d.ts +1 -0
  81. package/lib/actions/api/test/fetch-slide.test.js +120 -0
  82. package/lib/actions/api/test/post-progression.test.d.ts +1 -0
  83. package/lib/actions/api/test/post-progression.test.js +160 -0
  84. package/lib/actions/ui/answers.d.ts +7 -0
  85. package/lib/actions/ui/answers.js +9 -0
  86. package/lib/fixtures/temp-fixture.d.ts +1 -1
  87. package/lib/index.js +21 -18
  88. package/lib/reducers/data/index.d.ts +1 -1
  89. package/lib/reducers/data/slides.d.ts +2 -2
  90. package/lib/reducers/data/slides.js +5 -1
  91. package/lib/reducers/data/test/progression.test.d.ts +1 -0
  92. package/lib/reducers/data/test/progression.test.js +38 -0
  93. package/lib/reducers/data/test/skills.test.d.ts +1 -0
  94. package/lib/reducers/data/test/skills.test.js +12 -0
  95. package/lib/reducers/data/test/slides.test.d.ts +1 -0
  96. package/lib/reducers/data/test/slides.test.js +20 -0
  97. package/lib/reducers/data/test/token.test.d.ts +1 -0
  98. package/lib/reducers/data/test/token.test.js +11 -0
  99. package/lib/reducers/index.d.ts +2 -2
  100. package/lib/reducers/ui/answers.d.ts +4 -0
  101. package/lib/reducers/ui/answers.js +14 -0
  102. package/lib/reducers/ui/index.d.ts +4 -4
  103. package/lib/reducers/ui/index.js +2 -2
  104. package/lib/reducers/ui/test/answers.test.d.ts +1 -0
  105. package/lib/reducers/ui/test/answers.test.js +11 -0
  106. package/lib/reducers/ui/test/current-slide-ref.test.d.ts +1 -0
  107. package/lib/reducers/ui/test/current-slide-ref.test.js +12 -0
  108. package/lib/reducers/ui/test/navigation.test.d.ts +1 -0
  109. package/lib/reducers/ui/test/navigation.test.js +15 -0
  110. package/lib/services/fetch-slide.js +1 -1
  111. package/lib/services/index.js +3 -1
  112. package/lib/services/post-answer.d.ts +2 -0
  113. package/lib/services/post-answer.js +62 -0
  114. package/lib/services/test/fetch-slide.test.d.ts +1 -0
  115. package/lib/services/test/fetch-slide.test.js +76 -0
  116. package/lib/services/test/post-answer.test.d.ts +1 -0
  117. package/lib/services/test/post-answer.test.js +111 -0
  118. package/lib/services/test/post-progression.test.js +9 -1
  119. package/lib/test/util/services.mock.js +37 -7
  120. package/lib/types/common.d.ts +22 -8
  121. package/lib/views/slides/index.d.ts +78 -2
  122. package/lib/views/slides/index.js +70 -4
  123. package/lib/views/slides/map-api-slide-to-ui.d.ts +8 -0
  124. package/lib/views/slides/map-api-slide-to-ui.js +178 -0
  125. package/{es/helpers → lib/views/slides}/test/fixtures/free-text.d.ts +1 -1
  126. package/lib/views/slides/test/fixtures/free-text.js +38 -0
  127. package/lib/{helpers → views/slides}/test/fixtures/qcm-drag.d.ts +1 -1
  128. package/lib/views/slides/test/fixtures/qcm-drag.js +108 -0
  129. package/lib/{helpers → views/slides}/test/fixtures/qcm-graphic.d.ts +1 -1
  130. package/lib/views/slides/test/fixtures/qcm-graphic.js +88 -0
  131. package/lib/{helpers → views/slides}/test/fixtures/qcm.d.ts +1 -1
  132. package/lib/{helpers → views/slides}/test/fixtures/qcm.js +5 -1
  133. package/lib/{helpers → views/slides}/test/fixtures/select-template.d.ts +1 -1
  134. package/lib/views/slides/test/fixtures/select-template.js +92 -0
  135. package/lib/{helpers → views/slides}/test/fixtures/slider.d.ts +1 -1
  136. package/lib/views/slides/test/fixtures/slider.js +36 -0
  137. package/lib/{helpers → views/slides}/test/fixtures/text-template.d.ts +1 -1
  138. package/lib/{helpers → views/slides}/test/fixtures/text-template.js +5 -1
  139. package/lib/views/slides/test/map-api-slide-to-ui.test.d.ts +1 -0
  140. package/lib/{helpers → views/slides}/test/map-api-slide-to-ui.test.js +19 -9
  141. package/package.json +3 -3
  142. package/src/actions/api/fetch-skills.ts +12 -12
  143. package/src/actions/api/fetch-slide.ts +33 -29
  144. package/src/actions/api/post-progression.ts +18 -21
  145. package/src/actions/api/test/create-test-store.ts +25 -0
  146. package/src/actions/api/test/fetch-skills.test.ts +70 -0
  147. package/src/actions/api/test/fetch-slide.test.ts +77 -0
  148. package/src/actions/api/test/post-progression.test.ts +119 -0
  149. package/src/actions/ui/answers.ts +16 -0
  150. package/src/fixtures/temp-fixture.ts +1 -1
  151. package/src/index.tsx +14 -29
  152. package/src/reducers/data/index.ts +1 -1
  153. package/src/reducers/data/slides.ts +11 -2
  154. package/src/reducers/data/test/progression.test.ts +42 -0
  155. package/src/reducers/data/test/skills.test.ts +14 -0
  156. package/src/reducers/data/test/slides.test.ts +26 -0
  157. package/src/reducers/data/test/token.test.ts +13 -0
  158. package/src/reducers/ui/answers.ts +19 -0
  159. package/src/reducers/ui/index.ts +3 -3
  160. package/src/reducers/ui/test/answers.test.ts +13 -0
  161. package/src/reducers/ui/test/current-slide-ref.test.ts +14 -0
  162. package/src/reducers/ui/test/navigation.test.ts +19 -0
  163. package/src/services/fetch-slide.ts +1 -1
  164. package/src/services/index.ts +3 -1
  165. package/src/services/post-answer.ts +27 -0
  166. package/src/services/test/fetch-slide.test.ts +30 -0
  167. package/src/services/test/post-answer.test.ts +68 -0
  168. package/src/services/test/post-progression.test.ts +9 -1
  169. package/src/test/util/services.mock.ts +37 -7
  170. package/src/types/common.ts +34 -14
  171. package/src/views/slides/index.ts +164 -5
  172. package/src/views/slides/map-api-slide-to-ui.ts +251 -0
  173. package/src/views/slides/test/fixtures/free-text.ts +43 -0
  174. package/src/views/slides/test/fixtures/qcm-drag.ts +111 -0
  175. package/src/views/slides/test/fixtures/qcm-graphic.ts +94 -0
  176. package/src/{helpers → views/slides}/test/fixtures/qcm.ts +6 -2
  177. package/src/views/slides/test/fixtures/select-template.ts +98 -0
  178. package/src/views/slides/test/fixtures/slider.ts +41 -0
  179. package/src/{helpers → views/slides}/test/fixtures/text-template.ts +6 -2
  180. package/src/{helpers → views/slides}/test/map-api-slide-to-ui.test.ts +21 -10
  181. package/es/helpers/map-api-slide-to-ui.d.ts +0 -11
  182. package/es/helpers/map-api-slide-to-ui.js +0 -193
  183. package/es/helpers/test/fixtures/free-text.js +0 -30
  184. package/es/helpers/test/fixtures/qcm-drag.js +0 -112
  185. package/es/helpers/test/fixtures/qcm-graphic.js +0 -76
  186. package/es/helpers/test/fixtures/select-template.js +0 -94
  187. package/es/helpers/test/fixtures/slider.js +0 -33
  188. package/es/reducers/ui/slides.d.ts +0 -9
  189. package/es/reducers/ui/slides.js +0 -42
  190. package/es/types/views/slides.d.ts +0 -74
  191. package/es/types/views/slides.js +0 -6
  192. package/lib/helpers/map-api-slide-to-ui.d.ts +0 -11
  193. package/lib/helpers/map-api-slide-to-ui.js +0 -201
  194. package/lib/helpers/test/fixtures/free-text.js +0 -30
  195. package/lib/helpers/test/fixtures/qcm-drag.js +0 -112
  196. package/lib/helpers/test/fixtures/qcm-graphic.js +0 -76
  197. package/lib/helpers/test/fixtures/select-template.js +0 -94
  198. package/lib/helpers/test/fixtures/slider.js +0 -33
  199. package/lib/reducers/ui/slides.d.ts +0 -9
  200. package/lib/reducers/ui/slides.js +0 -43
  201. package/lib/types/views/slides.d.ts +0 -74
  202. package/lib/types/views/slides.js +0 -6
  203. package/src/helpers/map-api-slide-to-ui.ts +0 -279
  204. package/src/helpers/test/fixtures/free-text.ts +0 -33
  205. package/src/helpers/test/fixtures/qcm-drag.ts +0 -115
  206. package/src/helpers/test/fixtures/qcm-graphic.ts +0 -79
  207. package/src/helpers/test/fixtures/select-template.ts +0 -97
  208. package/src/helpers/test/fixtures/slider.ts +0 -36
  209. package/src/reducers/ui/slides.ts +0 -58
  210. package/src/types/views/slides.ts +0 -90
  211. /package/es/{helpers/test/map-api-slide-to-ui.test.d.ts → actions/api/test/fetch-skills.test.d.ts} +0 -0
  212. /package/{lib/helpers/test/map-api-slide-to-ui.test.d.ts → es/actions/api/test/fetch-slide.test.d.ts} +0 -0
@@ -0,0 +1,160 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (_) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ import test from 'ava';
49
+ import { postProgression, POST_PROGRESSION_REQUEST, POST_PROGRESSION_SUCCESS, POST_PROGRESSION_FAILURE } from '../post-progression';
50
+ import { freeTextSlide } from '../../../views/slides/test/fixtures/free-text';
51
+ import { services as mockedServices } from '../../../test/util/services.mock';
52
+ import { SLIDE_FETCH_REQUEST, SLIDE_FETCH_SUCCESS } from '../fetch-slide';
53
+ import { SET_CURRENT_SLIDE } from '../../ui/slides';
54
+ import { createTestStore } from './create-test-store';
55
+ var initialState = {
56
+ data: {
57
+ progression: null,
58
+ slides: {},
59
+ skills: [],
60
+ token: '1234'
61
+ },
62
+ ui: {
63
+ currentSlideRef: '',
64
+ navigation: [],
65
+ answers: []
66
+ }
67
+ };
68
+ test('should dispatch POST_PROGRESSION_SUCCESS and SLIDE_FETCH_REQUEST actions when postProgression return a progression', function (t) { return __awaiter(void 0, void 0, void 0, function () {
69
+ var progression, services, expectedActions, dispatch;
70
+ return __generator(this, function (_a) {
71
+ switch (_a.label) {
72
+ case 0:
73
+ progression = {
74
+ _id: '62b1d1087aa12f00253f40ee',
75
+ content: {
76
+ ref: '_skill-ref',
77
+ type: 'skill'
78
+ },
79
+ engine: {
80
+ ref: 'review'
81
+ },
82
+ state: {
83
+ allAnswers: [],
84
+ isCorrect: true,
85
+ nextContent: {
86
+ ref: 'sli_VJYjJnJhg',
87
+ type: 'slide'
88
+ },
89
+ pendingSlides: [],
90
+ slides: [],
91
+ step: {
92
+ current: 1
93
+ },
94
+ stars: 0
95
+ }
96
+ };
97
+ services = __assign(__assign({}, mockedServices), { postProgression: function (skillRef, token) {
98
+ t.is(token, '1234');
99
+ t.is(skillRef, 'skill_12345');
100
+ return Promise.resolve(progression);
101
+ }, fetchSlide: function (slideRef, token) {
102
+ t.is(token, '1234');
103
+ t.is(slideRef, 'sli_VJYjJnJhg');
104
+ return Promise.resolve(freeTextSlide);
105
+ } });
106
+ expectedActions = [
107
+ { type: POST_PROGRESSION_REQUEST },
108
+ {
109
+ type: POST_PROGRESSION_SUCCESS,
110
+ payload: progression
111
+ },
112
+ {
113
+ type: SLIDE_FETCH_REQUEST,
114
+ meta: {
115
+ slideRef: 'sli_VJYjJnJhg'
116
+ }
117
+ },
118
+ {
119
+ type: SLIDE_FETCH_SUCCESS,
120
+ meta: {
121
+ slideRef: 'sli_VJYjJnJhg'
122
+ },
123
+ payload: freeTextSlide
124
+ },
125
+ { type: SET_CURRENT_SLIDE, payload: freeTextSlide }
126
+ ];
127
+ dispatch = createTestStore(t, initialState, services, expectedActions).dispatch;
128
+ return [4 /*yield*/, dispatch(postProgression('skill_12345', '1234'))];
129
+ case 1:
130
+ _a.sent();
131
+ return [2 /*return*/];
132
+ }
133
+ });
134
+ }); });
135
+ test('should dispatch POST_PROGRESSION_FAILURE action when postProgression fails', function (t) { return __awaiter(void 0, void 0, void 0, function () {
136
+ var services, expectedActions, dispatch;
137
+ return __generator(this, function (_a) {
138
+ switch (_a.label) {
139
+ case 0:
140
+ services = __assign(__assign({}, mockedServices), { postProgression: function (skillRef, token) {
141
+ t.is(token, '1234');
142
+ t.is(skillRef, 'skill_12345');
143
+ return Promise.reject(new Error('error'));
144
+ } });
145
+ expectedActions = [
146
+ { type: POST_PROGRESSION_REQUEST },
147
+ {
148
+ type: POST_PROGRESSION_FAILURE,
149
+ payload: new Error('error'),
150
+ error: true
151
+ }
152
+ ];
153
+ dispatch = createTestStore(t, initialState, services, expectedActions).dispatch;
154
+ return [4 /*yield*/, dispatch(postProgression('skill_12345', '1234'))];
155
+ case 1:
156
+ _a.sent();
157
+ return [2 /*return*/];
158
+ }
159
+ });
160
+ }); });
@@ -0,0 +1,7 @@
1
+ import { Dispatch } from 'redux';
2
+ export declare const EDIT_BASIC: "@@answer/EDIT_BASIC";
3
+ export declare type EditBasicAction = {
4
+ type: typeof EDIT_BASIC;
5
+ payload: string[];
6
+ };
7
+ export declare const editAnswer: (answer: string) => (dispatch: Dispatch) => EditBasicAction;
@@ -0,0 +1,9 @@
1
+ export var EDIT_BASIC = '@@answer/EDIT_BASIC';
2
+ export var editAnswer = function (answer) {
3
+ return function (dispatch) {
4
+ return dispatch({
5
+ type: EDIT_BASIC,
6
+ payload: [answer]
7
+ });
8
+ };
9
+ };
@@ -1,3 +1,3 @@
1
- import { SlidesViewProps, CorrectionPopinProps } from '../types/views/slides';
1
+ import { SlidesViewProps, CorrectionPopinProps } from '../views/slides';
2
2
  export declare const correctionPopinProps: CorrectionPopinProps;
3
3
  export declare const congratsProps: SlidesViewProps['congratsProps'];
package/lib/index.js CHANGED
@@ -1,34 +1,37 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
1
12
  import React, { useEffect, useState } from 'react';
2
- import { connect, Provider } from 'react-redux';
13
+ import { useSelector, useDispatch, Provider } from 'react-redux';
3
14
  import AppReviewTemplate from '@coorpacademy/components/es/template/app-review';
4
15
  import { TemplateContext } from '@coorpacademy/components/es/template/app-review/template-context';
5
16
  import isEmpty from 'lodash/fp/isEmpty';
6
17
  import get from 'lodash/fp/get';
7
18
  import configureStore from './configure-store';
8
- import { validateSlide } from './actions/ui/slides';
9
- import { navigateTo, navigateBack } from './actions/ui/navigation';
19
+ import { navigateTo } from './actions/ui/navigation';
10
20
  import { storeToken } from './actions/data/token';
11
21
  import { fetchSkills } from './actions/api/fetch-skills';
12
22
  import { postProgression } from './actions/api/post-progression';
13
23
  import { VIEWS } from './common';
14
24
  import { mapStateToSlidesProps } from './views/slides';
15
25
  import { mapStateToSkillsProps } from './views/skills';
16
- var mapDispatchToProps = {
17
- navigateTo: navigateTo,
18
- navigateBack: navigateBack,
19
- validateSlide: validateSlide
20
- };
21
- var getCurrentViewName = function (storeState) {
22
- return storeState.ui.navigation[storeState.ui.navigation.length - 1];
23
- };
24
- var mapStateToProps = function (state) {
25
- return {
26
- viewName: getCurrentViewName(state),
27
- slides: mapStateToSlidesProps(state),
28
- skills: mapStateToSkillsProps(state)
26
+ var ConnectedApp = function () {
27
+ var dispatch = useDispatch();
28
+ var props = {
29
+ viewName: useSelector(function (state) { return state.ui.navigation[state.ui.navigation.length - 1]; }),
30
+ slides: useSelector(function (state) { return mapStateToSlidesProps(state, dispatch); }),
31
+ skills: useSelector(function (state) { return mapStateToSkillsProps(state); })
29
32
  };
33
+ return React.createElement(AppReviewTemplate, __assign({}, props));
30
34
  };
31
- var App = connect(mapStateToProps, mapDispatchToProps)(AppReviewTemplate);
32
35
  var AppReview = function (_a) {
33
36
  var options = _a.options;
34
37
  var _b = useState(null), store = _b[0], setStore = _b[1];
@@ -80,6 +83,6 @@ var AppReview = function (_a) {
80
83
  var values = options.templateContext;
81
84
  return (React.createElement(Provider, { store: store },
82
85
  React.createElement(TemplateContext, { values: values },
83
- React.createElement(App, null))));
86
+ React.createElement(ConnectedApp, null))));
84
87
  };
85
88
  export default AppReview;
@@ -4,7 +4,7 @@ import { SlidesState } from './slides';
4
4
  import { TokenState } from './token';
5
5
  export declare type DataState = {
6
6
  isFetching?: boolean;
7
- progression?: ProgressionState;
7
+ progression: ProgressionState;
8
8
  skills: SkillsState;
9
9
  slides: SlidesState;
10
10
  token?: TokenState;
@@ -1,7 +1,7 @@
1
1
  import { ValidateSlide } from '../../actions/ui/slides';
2
- import { ReceivedSlide } from '../../actions/api/fetch-slide';
2
+ import { ReceivedSlide, FetchSlide } from '../../actions/api/fetch-slide';
3
3
  import { SlideFromAPI } from '../../types/common';
4
- export declare type SlidesAction = ReceivedSlide | ValidateSlide;
4
+ export declare type SlidesAction = FetchSlide | ReceivedSlide | ValidateSlide;
5
5
  export declare type SlidesState = Record<string, SlideFromAPI>;
6
6
  export declare const initialState: SlidesState;
7
7
  declare const reducer: (state: SlidesState | undefined, action: SlidesAction) => SlidesState;
@@ -1,10 +1,14 @@
1
1
  import set from 'lodash/fp/set';
2
- import { SLIDE_FETCH_SUCCESS } from '../../actions/api/fetch-slide';
2
+ import { SLIDE_FETCH_REQUEST, SLIDE_FETCH_SUCCESS } from '../../actions/api/fetch-slide';
3
3
  export var initialState = {};
4
4
  // eslint-disable-next-line default-param-last
5
5
  var reducer = function (state, action) {
6
6
  if (state === void 0) { state = initialState; }
7
7
  switch (action.type) {
8
+ case SLIDE_FETCH_REQUEST: {
9
+ var meta = action.meta;
10
+ return set(meta.slideRef, null, state);
11
+ }
8
12
  case SLIDE_FETCH_SUCCESS: {
9
13
  var slide = action.payload;
10
14
  return set(slide.id, slide, state);
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,38 @@
1
+ import test from 'ava';
2
+ import reducer from '../progression';
3
+ import { POST_PROGRESSION_SUCCESS } from '../../../actions/api/post-progression';
4
+ test('should have inital value', function (t) {
5
+ var state = reducer(undefined, {});
6
+ t.is(state, null);
7
+ });
8
+ test('should set the value of POST_PROGRESSION_SUCCESS action', function (t) {
9
+ var progression = {
10
+ _id: '62b1d1087aa12f00253f40ee',
11
+ content: {
12
+ ref: '_skill-ref',
13
+ type: 'skill'
14
+ },
15
+ engine: {
16
+ ref: 'review'
17
+ },
18
+ state: {
19
+ allAnswers: [],
20
+ isCorrect: true,
21
+ nextContent: {
22
+ ref: 'sli_N1XACJobn',
23
+ type: 'slide'
24
+ },
25
+ pendingSlides: [],
26
+ slides: [],
27
+ step: {
28
+ current: 1
29
+ },
30
+ stars: 0
31
+ }
32
+ };
33
+ var state = reducer(null, {
34
+ type: POST_PROGRESSION_SUCCESS,
35
+ payload: progression
36
+ });
37
+ t.deepEqual(state, progression);
38
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
1
+ import test from 'ava';
2
+ import reducer from '../skills';
3
+ import { SKILLS_FETCH_SUCCESS } from '../../../actions/api/fetch-skills';
4
+ test('should have inital value', function (t) {
5
+ var state = reducer(undefined, {});
6
+ t.deepEqual(state, []);
7
+ });
8
+ test('should set the value of SKILLS_FETCH_SUCCESS action', function (t) {
9
+ var skills = [{ skillRef: 'skill', name: 'skill name', slidesToReview: 5, custom: false }];
10
+ var state = reducer([], { type: SKILLS_FETCH_SUCCESS, payload: skills });
11
+ t.deepEqual(state, skills);
12
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ import test from 'ava';
2
+ import reducer from '../slides';
3
+ import { SLIDE_FETCH_REQUEST, SLIDE_FETCH_SUCCESS } from '../../../actions/api/fetch-slide';
4
+ import { freeTextSlide } from '../../../views/slides/test/fixtures/free-text';
5
+ test('should have inital value', function (t) {
6
+ var state = reducer(undefined, {});
7
+ t.deepEqual(state, {});
8
+ });
9
+ test('should set the value of SLIDE_FETCH_REQUEST action', function (t) {
10
+ var state = reducer({}, { type: SLIDE_FETCH_REQUEST, meta: { slideRef: 'slideRef' } });
11
+ t.deepEqual(state, {
12
+ slideRef: null
13
+ });
14
+ });
15
+ test('should set the value of SLIDE_FETCH_SUCCESS action', function (t) {
16
+ var state = reducer({}, { type: SLIDE_FETCH_SUCCESS, payload: freeTextSlide, meta: { slideRef: 'sli_VJYjJnJhg' } });
17
+ t.deepEqual(state, {
18
+ sli_VJYjJnJhg: freeTextSlide
19
+ });
20
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,11 @@
1
+ import test from 'ava';
2
+ import reducer from '../token';
3
+ import { STORE_TOKEN } from '../../../actions/data/token';
4
+ test('should have inital value', function (t) {
5
+ var state = reducer(undefined, {});
6
+ t.is(state, null);
7
+ });
8
+ test('should set the value of STORE_TOKEN action', function (t) {
9
+ var state = reducer(null, { type: STORE_TOKEN, payload: 'token' });
10
+ t.is(state, 'token');
11
+ });
@@ -14,7 +14,7 @@ declare const _default: import("redux").Reducer<import("redux").CombinedState<{
14
14
  ui: import("redux").CombinedState<{
15
15
  currentSlideRef: string;
16
16
  navigation: import("./ui/navigation").NavigationState;
17
- slides: import("./ui/slides").UISlidesState;
17
+ answers: import("./ui/answers").AnswerState;
18
18
  }>;
19
- }>, import("../actions/ui/slides").SetCurrentSlide | import("../actions/api/post-progression").ReceiveProgression | import("../actions/api/fetch-skills").ReceivedSkills | import("./data/slides").SlidesAction | import("../actions/data/token").StoreToken | import("../actions/ui/navigation").NavigateTo | import("../actions/ui/navigation").NavigateBack>;
19
+ }>, import("../actions/ui/slides").SetCurrentSlide | import("../actions/api/post-progression").ReceiveProgression | import("../actions/api/fetch-skills").ReceivedSkills | import("./data/slides").SlidesAction | import("../actions/data/token").StoreToken | import("../actions/ui/navigation").NavigateTo | import("../actions/ui/navigation").NavigateBack | import("../actions/ui/answers").EditBasicAction>;
20
20
  export default _default;
@@ -0,0 +1,4 @@
1
+ import { EditBasicAction } from '../../actions/ui/answers';
2
+ export declare type AnswerState = string[];
3
+ declare const reducer: (state: AnswerState | undefined, action: EditBasicAction) => AnswerState;
4
+ export default reducer;
@@ -0,0 +1,14 @@
1
+ import { EDIT_BASIC } from '../../actions/ui/answers';
2
+ var reducer = function (
3
+ // eslint-disable-next-line default-param-last
4
+ state, action) {
5
+ if (state === void 0) { state = []; }
6
+ switch (action.type) {
7
+ case EDIT_BASIC: {
8
+ return action.payload;
9
+ }
10
+ default:
11
+ return state;
12
+ }
13
+ };
14
+ export default reducer;
@@ -1,14 +1,14 @@
1
1
  import { CurrentSlideRefState } from './current-slide-ref';
2
2
  import { NavigationState } from './navigation';
3
- import { UISlidesState } from './slides';
3
+ import { AnswerState } from './answers';
4
4
  export declare type UIState = {
5
5
  currentSlideRef: CurrentSlideRefState;
6
6
  navigation: NavigationState;
7
- slides: UISlidesState;
7
+ answers: AnswerState;
8
8
  };
9
9
  declare const _default: import("redux").Reducer<import("redux").CombinedState<{
10
10
  currentSlideRef: string;
11
11
  navigation: NavigationState;
12
- slides: UISlidesState;
13
- }>, import("../../actions/ui/slides").SetCurrentSlide | import("../../actions/ui/navigation").NavigateTo | import("../../actions/ui/navigation").NavigateBack>;
12
+ answers: AnswerState;
13
+ }>, import("../../actions/ui/slides").SetCurrentSlide | import("../../actions/ui/navigation").NavigateTo | import("../../actions/ui/navigation").NavigateBack | import("../../actions/ui/answers").EditBasicAction>;
14
14
  export default _default;
@@ -1,9 +1,9 @@
1
1
  import { combineReducers } from 'redux';
2
2
  import currentSlideRef from './current-slide-ref';
3
3
  import navigation from './navigation';
4
- import slides from './slides';
4
+ import answers from './answers';
5
5
  export default combineReducers({
6
6
  currentSlideRef: currentSlideRef,
7
7
  navigation: navigation,
8
- slides: slides
8
+ answers: answers
9
9
  });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,11 @@
1
+ import test from 'ava';
2
+ import reducer from '../answers';
3
+ import { EDIT_BASIC } from '../../../actions/ui/answers';
4
+ test('should have inital value', function (t) {
5
+ var state = reducer(undefined, {});
6
+ t.deepEqual(state, []);
7
+ });
8
+ test('should set the value of EDIT_BASIC action', function (t) {
9
+ var state = reducer([], { type: EDIT_BASIC, payload: ['value'] });
10
+ t.deepEqual(state, ['value']);
11
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
1
+ import test from 'ava';
2
+ import reducer from '../current-slide-ref';
3
+ import { SET_CURRENT_SLIDE } from '../../../actions/ui/slides';
4
+ import { freeTextSlide } from '../../../views/slides/test/fixtures/free-text';
5
+ test('should have inital value', function (t) {
6
+ var state = reducer(undefined, {});
7
+ t.is(state, '');
8
+ });
9
+ test('should set the value of SET_CURRENT_SLIDE action', function (t) {
10
+ var state = reducer('', { type: SET_CURRENT_SLIDE, payload: freeTextSlide });
11
+ t.is(state, 'sli_VJYjJnJhg');
12
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ import test from 'ava';
2
+ import reducer from '../navigation';
3
+ import { NAVIGATE_TO, NAVIGATE_BACK } from '../../../actions/ui/navigation';
4
+ test('should have inital value', function (t) {
5
+ var state = reducer(undefined, {});
6
+ t.deepEqual(state, []);
7
+ });
8
+ test('should set the value of NAVIGATE_TO and NAVIGATE_BACK action', function (t) {
9
+ var state = reducer([], { type: NAVIGATE_TO, payload: 'loader' });
10
+ t.deepEqual(state, ['loader']);
11
+ var updatedState = reducer(state, { type: NAVIGATE_TO, payload: 'skills' });
12
+ t.deepEqual(updatedState, ['loader', 'skills']);
13
+ var _updatedState = reducer(updatedState, { type: NAVIGATE_BACK });
14
+ t.deepEqual(_updatedState, ['loader']);
15
+ });
@@ -43,7 +43,7 @@ export var fetchSlide = function (slideRef, token) { return __awaiter(void 0, vo
43
43
  switch (_a.label) {
44
44
  case 0:
45
45
  host = decode(token).host;
46
- return [4 /*yield*/, crossFetch("".concat(host, "/api/v2/slide/").concat(slideRef), {
46
+ return [4 /*yield*/, crossFetch("".concat(host, "/api/v2/slide/").concat(slideRef, "/parentContentTitle"), {
47
47
  headers: { authorization: token }
48
48
  })];
49
49
  case 1:
@@ -1,8 +1,10 @@
1
1
  import { fetchSkills } from './fetch-skills';
2
2
  import { postProgression } from './post-progression';
3
3
  import { fetchSlide } from './fetch-slide';
4
+ import { postAnswer } from './post-answer';
4
5
  export var getServices = function () { return ({
5
6
  fetchSkills: fetchSkills,
6
7
  fetchSlide: fetchSlide,
7
- postProgression: postProgression
8
+ postProgression: postProgression,
9
+ postAnswer: postAnswer
8
10
  }); };
@@ -0,0 +1,2 @@
1
+ import { ProgressionFromAPI } from '../types/common';
2
+ export declare const postAnswer: (skillRef: string, token: string, progressionId: string, answer: string[]) => Promise<ProgressionFromAPI>;
@@ -0,0 +1,62 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (_) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import crossFetch from 'cross-fetch';
38
+ import decode from 'jwt-decode';
39
+ import { toJSON } from './tools/fetch-responses';
40
+ export var postAnswer = function (skillRef, token, progressionId, answer) { return __awaiter(void 0, void 0, void 0, function () {
41
+ var host, response;
42
+ return __generator(this, function (_a) {
43
+ switch (_a.label) {
44
+ case 0:
45
+ host = decode(token).host;
46
+ return [4 /*yield*/, crossFetch("".concat(host, "/api/v2/progressions/").concat(progressionId, "/answers"), {
47
+ method: 'post',
48
+ headers: { authorization: token },
49
+ body: JSON.stringify({
50
+ content: {
51
+ ref: skillRef,
52
+ type: 'slide'
53
+ },
54
+ answer: answer
55
+ })
56
+ })];
57
+ case 1:
58
+ response = _a.sent();
59
+ return [2 /*return*/, toJSON(response)];
60
+ }
61
+ });
62
+ }); };
@@ -0,0 +1 @@
1
+ export {};