@coorpacademy/player-web 4.2.11 → 4.3.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.
- package/es/map-state-to-props/test/answer.js +390 -0
- package/es/map-state-to-props/test/answer.js.map +1 -0
- package/es/map-state-to-props/test/fixtures/player/clue.json +131 -0
- package/es/map-state-to-props/test/fixtures/player/loading-clue.json +131 -0
- package/es/map-state-to-props/test/fixtures/player/no-clue.json +118 -0
- package/es/map-state-to-props/test/fixtures/player/slide-no-lessons.json +115 -0
- package/es/map-state-to-props/test/fixtures/player/slide.json +127 -0
- package/es/map-state-to-props/test/fixtures/popin-correction/popin-extra-life.json +139 -0
- package/es/map-state-to-props/test/fixtures/popin-correction/popin-failure.json +145 -0
- package/es/map-state-to-props/test/fixtures/popin-correction/popin-next-level.json +282 -0
- package/es/map-state-to-props/test/fixtures/popin-correction/popin-revival.json +140 -0
- package/es/map-state-to-props/test/fixtures/popin-correction/popin-success-node.json +154 -0
- package/es/map-state-to-props/test/fixtures/popin-correction/popin-success.json +268 -0
- package/es/map-state-to-props/test/fixtures/popin-correction/state-fail-multiple-answers.json +473 -0
- package/es/map-state-to-props/test/fixtures/popin-end/fail.json +205 -0
- package/es/map-state-to-props/test/fixtures/popin-end/learner-adaptive-failure.json +209 -0
- package/es/map-state-to-props/test/fixtures/popin-end/learner-failure-with-redirection.json +211 -0
- package/es/map-state-to-props/test/fixtures/popin-end/learner-failure.json +211 -0
- package/es/map-state-to-props/test/fixtures/popin-end/learner-success-with-redirection.json +278 -0
- package/es/map-state-to-props/test/fixtures/popin-end/learner-success.json +275 -0
- package/es/map-state-to-props/test/fixtures/popin-end/success.json +223 -0
- package/es/map-state-to-props/test/fixtures/progression-learner.json +102 -0
- package/es/map-state-to-props/test/fixtures/progression-state.json +45 -0
- package/es/map-state-to-props/test/fixtures/slides/basic.json +60 -0
- package/es/map-state-to-props/test/fixtures/slides/plop.json +56 -0
- package/es/map-state-to-props/test/fixtures/slides/qcm-drag.json +56 -0
- package/es/map-state-to-props/test/fixtures/slides/qcm-graphic.json +49 -0
- package/es/map-state-to-props/test/fixtures/slides/qcm.json +43 -0
- package/es/map-state-to-props/test/fixtures/slides/slider.json +57 -0
- package/es/map-state-to-props/test/fixtures/slides/template.json +49 -0
- package/es/map-state-to-props/test/fixtures/slides/videos.json +163 -0
- package/es/map-state-to-props/test/fixtures/slides/with-context.json +69 -0
- package/es/map-state-to-props/test/header.js +131 -0
- package/es/map-state-to-props/test/header.js.map +1 -0
- package/es/map-state-to-props/test/index.js +107 -0
- package/es/map-state-to-props/test/index.js.map +1 -0
- package/es/map-state-to-props/test/player.js +680 -0
- package/es/map-state-to-props/test/player.js.map +1 -0
- package/es/map-state-to-props/test/popin-correction.create-header-cta.js +301 -0
- package/es/map-state-to-props/test/popin-correction.create-header-cta.js.map +1 -0
- package/es/map-state-to-props/test/popin-correction.js +80 -0
- package/es/map-state-to-props/test/popin-correction.js.map +1 -0
- package/es/map-state-to-props/test/popin-end.js +313 -0
- package/es/map-state-to-props/test/popin-end.js.map +1 -0
- package/es/map-state-to-props/test/popin-error.js +77 -0
- package/es/map-state-to-props/test/popin-error.js.map +1 -0
- package/es/map-state-to-props/test/resources.js +31 -0
- package/es/map-state-to-props/test/resources.js.map +1 -0
- package/es/test/add-timeout.js +8 -0
- package/es/test/add-timeout.js.map +1 -0
- package/es/test/helpers/css-register.js +3 -0
- package/es/test/helpers/css-register.js.map +1 -0
- package/es/test/helpers/macro.js +6 -0
- package/es/test/helpers/macro.js.map +1 -0
- package/es/test/index.js +39 -0
- package/es/test/index.js.map +1 -0
- package/es/test/init-reducers.js +50 -0
- package/es/test/init-reducers.js.map +1 -0
- package/es/test/locales.js +8 -0
- package/es/test/locales.js.map +1 -0
- package/es/test/run-app.js +20 -0
- package/es/test/run-app.js.map +1 -0
- package/es/test/store.js +38 -0
- package/es/test/store.js.map +1 -0
- package/es/views/test/helpers/render.js +13 -0
- package/es/views/test/helpers/render.js.map +1 -0
- package/es/views/test/helpers/state-to-vnode.js +7 -0
- package/es/views/test/helpers/state-to-vnode.js.map +1 -0
- package/es/views/test/loading.js +15 -0
- package/es/views/test/loading.js.map +1 -0
- package/es/views/test/popin-correction.js +223 -0
- package/es/views/test/popin-correction.js.map +1 -0
- package/es/views/test/popin-end.js +93 -0
- package/es/views/test/popin-end.js.map +1 -0
- package/es/views/test/router.js +22 -0
- package/es/views/test/router.js.map +1 -0
- package/es/views/test/slide.js +335 -0
- package/es/views/test/slide.js.map +1 -0
- package/lib/map-state-to-props/test/answer.js +408 -0
- package/lib/map-state-to-props/test/answer.js.map +1 -0
- package/lib/map-state-to-props/test/fixtures/player/clue.json +131 -0
- package/lib/map-state-to-props/test/fixtures/player/loading-clue.json +131 -0
- package/lib/map-state-to-props/test/fixtures/player/no-clue.json +118 -0
- package/lib/map-state-to-props/test/fixtures/player/slide-no-lessons.json +115 -0
- package/lib/map-state-to-props/test/fixtures/player/slide.json +127 -0
- package/lib/map-state-to-props/test/fixtures/popin-correction/popin-extra-life.json +139 -0
- package/lib/map-state-to-props/test/fixtures/popin-correction/popin-failure.json +145 -0
- package/lib/map-state-to-props/test/fixtures/popin-correction/popin-next-level.json +282 -0
- package/lib/map-state-to-props/test/fixtures/popin-correction/popin-revival.json +140 -0
- package/lib/map-state-to-props/test/fixtures/popin-correction/popin-success-node.json +154 -0
- package/lib/map-state-to-props/test/fixtures/popin-correction/popin-success.json +268 -0
- package/lib/map-state-to-props/test/fixtures/popin-correction/state-fail-multiple-answers.json +473 -0
- package/lib/map-state-to-props/test/fixtures/popin-end/fail.json +205 -0
- package/lib/map-state-to-props/test/fixtures/popin-end/learner-adaptive-failure.json +209 -0
- package/lib/map-state-to-props/test/fixtures/popin-end/learner-failure-with-redirection.json +211 -0
- package/lib/map-state-to-props/test/fixtures/popin-end/learner-failure.json +211 -0
- package/lib/map-state-to-props/test/fixtures/popin-end/learner-success-with-redirection.json +278 -0
- package/lib/map-state-to-props/test/fixtures/popin-end/learner-success.json +275 -0
- package/lib/map-state-to-props/test/fixtures/popin-end/success.json +223 -0
- package/lib/map-state-to-props/test/fixtures/progression-learner.json +102 -0
- package/lib/map-state-to-props/test/fixtures/progression-state.json +45 -0
- package/lib/map-state-to-props/test/fixtures/slides/basic.json +60 -0
- package/lib/map-state-to-props/test/fixtures/slides/plop.json +56 -0
- package/lib/map-state-to-props/test/fixtures/slides/qcm-drag.json +56 -0
- package/lib/map-state-to-props/test/fixtures/slides/qcm-graphic.json +49 -0
- package/lib/map-state-to-props/test/fixtures/slides/qcm.json +43 -0
- package/lib/map-state-to-props/test/fixtures/slides/slider.json +57 -0
- package/lib/map-state-to-props/test/fixtures/slides/template.json +49 -0
- package/lib/map-state-to-props/test/fixtures/slides/videos.json +163 -0
- package/lib/map-state-to-props/test/fixtures/slides/with-context.json +69 -0
- package/lib/map-state-to-props/test/header.js +143 -0
- package/lib/map-state-to-props/test/header.js.map +1 -0
- package/lib/map-state-to-props/test/index.js +100 -0
- package/lib/map-state-to-props/test/index.js.map +1 -0
- package/lib/map-state-to-props/test/player.js +714 -0
- package/lib/map-state-to-props/test/player.js.map +1 -0
- package/lib/map-state-to-props/test/popin-correction.create-header-cta.js +315 -0
- package/lib/map-state-to-props/test/popin-correction.create-header-cta.js.map +1 -0
- package/lib/map-state-to-props/test/popin-correction.js +85 -0
- package/lib/map-state-to-props/test/popin-correction.js.map +1 -0
- package/lib/map-state-to-props/test/popin-end.js +328 -0
- package/lib/map-state-to-props/test/popin-end.js.map +1 -0
- package/lib/map-state-to-props/test/popin-error.js +85 -0
- package/lib/map-state-to-props/test/popin-error.js.map +1 -0
- package/lib/map-state-to-props/test/resources.js +42 -0
- package/lib/map-state-to-props/test/resources.js.map +1 -0
- package/lib/test/add-timeout.js +14 -0
- package/lib/test/add-timeout.js.map +1 -0
- package/lib/test/helpers/css-register.js +8 -0
- package/lib/test/helpers/css-register.js.map +1 -0
- package/lib/test/helpers/macro.js +12 -0
- package/lib/test/helpers/macro.js.map +1 -0
- package/lib/test/index.js +53 -0
- package/lib/test/index.js.map +1 -0
- package/lib/test/init-reducers.js +57 -0
- package/lib/test/init-reducers.js.map +1 -0
- package/lib/test/locales.js +18 -0
- package/lib/test/locales.js.map +1 -0
- package/lib/test/run-app.js +27 -0
- package/lib/test/run-app.js.map +1 -0
- package/lib/test/store.js +45 -0
- package/lib/test/store.js.map +1 -0
- package/lib/views/test/helpers/render.js +24 -0
- package/lib/views/test/helpers/render.js.map +1 -0
- package/lib/views/test/helpers/state-to-vnode.js +14 -0
- package/lib/views/test/helpers/state-to-vnode.js.map +1 -0
- package/lib/views/test/loading.js +22 -0
- package/lib/views/test/loading.js.map +1 -0
- package/lib/views/test/popin-correction.js +237 -0
- package/lib/views/test/popin-correction.js.map +1 -0
- package/lib/views/test/popin-end.js +105 -0
- package/lib/views/test/popin-end.js.map +1 -0
- package/lib/views/test/router.js +32 -0
- package/lib/views/test/router.js.map +1 -0
- package/lib/views/test/slide.js +359 -0
- package/lib/views/test/slide.js.map +1 -0
- package/package.json +4 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"player.js","names":["services","Analytics","AnalyticsService","Answers","AnswersService","fixtures","Clues","CluesService","Coach","CoachService","Comments","CommentsService","Content","ContentService","ExitNodes","ExitNodesService","LeaderBoard","LeaderBoardService","Location","LocationService","Logger","console","Progressions","ProgressionsService","Recommendations","RecommendationsService","options","translate","mockTranslate","store","dispatch","createPlayerProps","createPlayer","createHeaderProps","createHeader","availableSlides","slide","_id","basicSlide","plopSlide","qcmSlide","qcmDragSlide","qcmGraphicSlide","contextSlide","createProgression","contentRef","engine","ref","version","content","type","state","nextContent","lives","livesDisabled","step","current","viewedResources","data","contents","chapter","entities","nonAdaptiveContent","isConditional","adaptiveContent","progressions","basic","plop","qcm","qcmDrag","qcmGraphic","template","templateSlide","context","adaptiveBasic","adaptiveQcm","adaptiveQcmDrag","adaptiveQcmGraphic","adaptiveContext","adaptiveTemplate","isDisabledFor","answer","progressionId","chapterId","chapter_id","ui","route","answers","value","cta","disabled","test","t","coaches","availableCoaches","props","headerProps","deepEqual","answerType","media","mimeType","url","is","typeClue","question","model","true","onChange","slideContext","undefined","submitValue","buttons","length","title","header","onClick","false","throws","message","plan","action","UI_SELECT_ROUTE","payload","meta","description","selected","foo","onClickSeeClue","progression","resources","showNewMedia","forEach","lessons","showReviewLesson","learnerProgressionStateFixture","total","falsy","createLearnerProgression","check","levelId","level","chapterIds"],"sources":["../../../src/map-state-to-props/test/player.js"],"sourcesContent":["import test from 'ava';\nimport {map, get, isEmpty, set, pipe, fromPairs, isFunction, identity, omit} 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 {UI_SELECT_ROUTE} from '@coorpacademy/player-store';\nimport createPlayer from '../player';\nimport createHeader from '../header';\nimport * as fixtures from '../../../sandbox/fixtures';\nimport learnerProgressionStateFixture from './fixtures/progression-learner';\nimport plopSlide from './fixtures/slides/plop';\nimport basicSlide from './fixtures/slides/basic';\nimport contextSlide from './fixtures/slides/with-context';\nimport templateSlide from './fixtures/slides/template';\nimport qcmSlide from './fixtures/slides/qcm';\nimport qcmDragSlide from './fixtures/slides/qcm-drag';\nimport qcmGraphicSlide from './fixtures/slides/qcm-graphic';\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\nexport const options = {translate: mockTranslate, services};\nexport const store = {dispatch: identity};\nconst createPlayerProps = createPlayer(options, store);\nconst createHeaderProps = createHeader(options, store);\n\nconst availableSlides = pipe(\n map(slide => [slide._id, slide]),\n fromPairs\n)([basicSlide, plopSlide, qcmSlide, qcmDragSlide, qcmGraphicSlide, contextSlide]);\n\nconst createProgression = (slide, contentRef) => ({\n engine: {\n ref: 'microlearning',\n version: '1'\n },\n content: {\n ref: contentRef,\n type: 'chapter'\n },\n state: {\n nextContent: {\n ref: slide._id,\n type: 'slide'\n },\n lives: 1,\n livesDisabled: false,\n step: {\n current: 1\n },\n viewedResources: []\n }\n});\n\nexport const data = {\n contents: {\n chapter: {\n entities: {\n nonAdaptiveContent: {\n _id: 'nonAdaptiveContent',\n isConditional: false\n },\n adaptiveContent: {\n _id: 'adaptiveContent',\n isConditional: true\n }\n }\n },\n slide: {\n entities: availableSlides\n }\n },\n progressions: {\n entities: {\n basic: createProgression(basicSlide, 'nonAdaptiveContent'),\n plop: createProgression(plopSlide, 'nonAdaptiveContent'),\n qcm: createProgression(qcmSlide, 'nonAdaptiveContent'),\n qcmDrag: createProgression(qcmDragSlide, 'nonAdaptiveContent'),\n qcmGraphic: createProgression(qcmGraphicSlide, 'nonAdaptiveContent'),\n template: createProgression(templateSlide, 'nonAdaptiveContent'),\n context: createProgression(contextSlide, 'nonAdaptiveContent'),\n adaptiveBasic: createProgression(basicSlide, 'adaptiveContent'),\n adaptiveQcm: createProgression(qcmSlide, 'adaptiveContent'),\n adaptiveQcmDrag: createProgression(qcmDragSlide, 'adaptiveContent'),\n adaptiveQcmGraphic: createProgression(qcmGraphicSlide, 'adaptiveContent'),\n adaptiveContext: createProgression(contextSlide, 'adaptiveContent'),\n adaptiveTemplate: createProgression(templateSlide, 'adaptiveContent')\n }\n }\n};\n\nconst isDisabledFor = (slide, isConditional, answer) => {\n const progressionId = 'progression';\n const chapterId = 'chapter';\n return createPlayerProps({\n data: {\n contents: {\n slide: {\n entities: {\n [slide._id]: {...slide, chapter_id: chapterId}\n }\n },\n chapter: {\n entities: {\n [chapterId]: {\n _id: chapterId,\n isConditional\n }\n }\n }\n },\n progressions: {\n entities: {\n [progressionId]: createProgression(slide, chapterId)\n }\n }\n },\n ui: {\n route: {[progressionId]: 'answer'},\n current: {progressionId},\n answers: {[progressionId]: {value: answer}}\n }\n }).cta.disabled;\n};\n\ntest('should create player props for basic question and show coaches', t => {\n const state = {\n data,\n ui: {\n route: {basic: 'answer'},\n current: {progressionId: 'basic'},\n coaches: {availableCoaches: 1}\n }\n };\n\n const props = createPlayerProps(state);\n const headerProps = createHeaderProps(state);\n\n t.deepEqual(props.answerType.media, {\n _id: '593eb72a187bd18c01283592',\n mimeType: 'image/jpeg',\n type: 'img',\n url: '//static.coorpacademy.com/content/ijoinchanel/en/slides/1B2_Q6/1B2-Q6-canap-v1.jpg'\n });\n t.is(props.typeClue, 'answer');\n t.is(props.question, \"Écrivez le mot Text dans l'input.\\n\");\n t.is(props.answerType.model.type, 'freeText');\n t.true(isFunction(props.answerType.model.onChange));\n t.is(props.slideContext, undefined);\n t.is(props.cta.submitValue, '__Validate');\n t.true(props.cta.disabled);\n\n t.is(props.buttons.length, 4);\n t.is(props.buttons[3].title, '__Coach');\n t.is(props.buttons[3].type, 'coach');\n t.deepEqual(omit('content.onClick', props.header), omit('content.onClick', headerProps));\n t.true(isFunction(props.header.content.onClick));\n});\ntest('should enable the validate button when there is an answer', t => {\n t.true(isDisabledFor(basicSlide, false, []));\n t.false(isDisabledFor(basicSlide, false, ['foo']));\n});\n\ntest('should enable the validate button when there are two answers in an non-adaptive content for all questions', t => {\n const answers = ['foo', 'bar'];\n\n t.false(isDisabledFor(basicSlide, false, answers));\n t.false(isDisabledFor(qcmSlide, false, answers));\n t.false(isDisabledFor(qcmGraphicSlide, false, answers));\n t.false(isDisabledFor(qcmDragSlide, false, answers));\n t.false(isDisabledFor(contextSlide, false, answers));\n t.false(isDisabledFor(templateSlide, false, answers));\n});\n\ntest('should disable the validate button when there are several answers in an adaptive content for qcm questions', t => {\n t.false(isDisabledFor(basicSlide, true, ['foo', 'bar']));\n t.true(isDisabledFor(qcmSlide, true, ['foo', 'bar']));\n t.true(isDisabledFor(qcmGraphicSlide, true, ['foo', 'bar']));\n t.false(isDisabledFor(qcmDragSlide, true, ['foo', 'bar']));\n t.false(isDisabledFor(contextSlide, true, ['foo', 'bar']));\n t.false(isDisabledFor(templateSlide, true, ['foo', 'bar']));\n\n t.false(isDisabledFor(basicSlide, true, ['foo', 'bar', 'baz']));\n t.true(isDisabledFor(qcmSlide, true, ['foo', 'bar', 'baz']));\n t.true(isDisabledFor(qcmGraphicSlide, true, ['foo', 'bar', 'baz']));\n t.false(isDisabledFor(qcmDragSlide, true, ['foo', 'bar', 'baz']));\n t.false(isDisabledFor(contextSlide, true, ['foo', 'bar', 'baz']));\n t.false(isDisabledFor(templateSlide, true, ['foo', 'bar', 'baz']));\n});\n\ntest('should disable the validate button when there the text answer has been deleted', t => {\n const state = {\n data,\n ui: {\n route: {basic: 'answer'},\n current: {progressionId: 'basic'},\n answers: {basic: {value: ['']}}\n }\n };\n\n const props = createPlayerProps(state);\n\n t.true(props.cta.disabled);\n});\n\ntest('should return defaut props when slide.question.type is not handles', t => {\n const state = {\n data,\n ui: {\n route: {basic: 'answer'},\n current: {progressionId: 'plop'},\n answers: {basic: {value: ['']}}\n }\n };\n\n t.throws(() => createPlayerProps(state), {message: 'plop is not an handled question.type'});\n});\n\ntest('should disable the validate button when no answer is provided', t => {\n const state = {\n data,\n ui: {\n route: {basic: 'answer'},\n current: {progressionId: 'basic'},\n answers: {}\n }\n };\n\n const props = createPlayerProps(state);\n\n t.true(props.cta.disabled);\n});\n\ntest('should disable the validate button when a previous selected answer has been unselected', t => {\n const state = {\n data,\n ui: {\n route: {basic: 'answer'},\n current: {progressionId: 'basic'},\n answers: {basic: {value: []}}\n }\n };\n\n const props = createPlayerProps(state);\n\n t.true(props.cta.disabled);\n});\n\ntest('should disable the validate button when some answer fields are empty', t => {\n const state = {\n data,\n ui: {\n route: {template: 'answer'},\n current: {progressionId: 'template'},\n answers: {template: {value: ['', 'Test']}}\n }\n };\n\n const props = createPlayerProps(state);\n\n t.true(props.cta.disabled);\n});\n\ntest('should disable the validate button when no answer has been selected by user on template question', t => {\n const state = {\n data,\n ui: {\n route: {template: 'answer'},\n current: {progressionId: 'template'}\n }\n };\n\n const props = createPlayerProps(state);\n\n t.true(props.cta.disabled);\n});\n\ntest('should display context tab button if slide context is available', t => {\n t.plan(10);\n const state = {\n data,\n ui: {\n route: {context: 'answer'},\n current: {progressionId: 'context'}\n }\n };\n\n const dispatch = action => {\n t.deepEqual(action, {\n type: UI_SELECT_ROUTE,\n payload: 'context',\n meta: {\n progressionId: 'context'\n }\n });\n };\n\n const props = createPlayer(options, {dispatch: action => action(dispatch, () => state)})(state);\n\n t.is(typeof props.slideContext, 'object');\n t.is(props.slideContext.title, 'Some context title');\n t.is(typeof props.slideContext.description, 'string');\n t.is(props.slideContext.description, contextSlide.context.description);\n t.is(props.buttons.length, 5);\n t.is(props.buttons[0].title, '__Context');\n t.is(props.buttons[0].type, 'context');\n t.false(props.buttons[0].selected);\n t.is(typeof props.buttons[0].onClick, 'function');\n\n props.buttons[0].onClick();\n});\n\ntest('should display \"Back to question\" for the cta in the tabs', t => {\n const state = {\n data,\n ui: {\n current: {progressionId: 'basic'},\n route: {\n basic: 'media'\n }\n }\n };\n\n const props = createPlayerProps(state);\n\n t.is(props.cta.submitValue, '__Back to question');\n\n state.ui.route.foo = 'clue';\n\n t.is(typeof props.onClickSeeClue, 'function');\n props.onClickSeeClue();\n\n t.is(props.cta.submitValue, '__Back to question');\n});\n\ntest('should display \"Go to question\" for the context tab cta', t => {\n const state = {\n data,\n ui: {\n current: {progressionId: 'basic'},\n route: {\n basic: 'context'\n }\n }\n };\n\n const props = createPlayerProps(state);\n t.is(props.cta.submitValue, '__Go to question');\n});\n\ntest('should display new media notification when user has not seen any media for the current slide', t => {\n const progression = createProgression(basicSlide);\n progression.state.viewedResources = [\n {\n resources: ['1234']\n }\n ];\n const state = {\n data: {\n contents: data.contents,\n progressions: {\n entities: {\n basic: progression\n }\n }\n },\n ui: {\n current: {progressionId: 'basic'},\n route: {\n basic: 'answer'\n }\n }\n };\n\n const props = createPlayerProps(state);\n t.true(props.showNewMedia);\n});\n\ntest('should display new media notification for the answer/undefined route when user has not seen any media', t => {\n const state = {\n data: {\n contents: data.contents,\n progressions: {\n entities: {\n basic: createProgression(basicSlide)\n }\n }\n },\n ui: {\n current: {progressionId: 'basic'},\n route: {}\n }\n };\n\n [undefined].forEach(route => {\n const props = createPlayerProps(set('ui.route.basic', route, state));\n t.true(isEmpty(props));\n });\n\n ['media', 'clue', 'context', 'answer'].forEach(route => {\n const props = createPlayerProps(set('ui.route.basic', route, state));\n t.false(isEmpty(props));\n });\n});\n\ntest('should not display new media notification for the other routes when user has not seen any media', t => {\n const state = {\n data: {\n contents: data.contents,\n progressions: {\n entities: {\n basic: createProgression(basicSlide)\n }\n }\n },\n ui: {\n current: {progressionId: 'basic'},\n route: {}\n }\n };\n\n ['media', 'clue'].forEach(route => {\n const props = createPlayerProps(set('ui.route.basic', route, state));\n t.false(props.showNewMedia);\n });\n});\n\ntest('should not display new media notification when user has seen at least one media of the current slide', t => {\n const progression = createProgression(basicSlide);\n progression.state.viewedResources = [\n {\n type: 'chapter',\n ref: basicSlide.chapter_id,\n resources: [basicSlide.lessons[0].ref]\n }\n ];\n const state = {\n data: {\n contents: data.contents,\n progressions: {\n entities: {\n basic: progression\n }\n }\n },\n ui: {\n current: {progressionId: 'basic'},\n route: {\n basic: 'answer'\n }\n }\n };\n\n const props = createPlayerProps(state);\n t.false(props.showNewMedia);\n});\n\ntest('should display review lesson notification when user has seen at least one media of the current slide', t => {\n const progression = createProgression(basicSlide);\n progression.state.viewedResources = [\n {\n type: 'chapter',\n ref: basicSlide.chapter_id,\n resources: [basicSlide.lessons[0].ref]\n }\n ];\n const state = {\n data: {\n contents: data.contents,\n progressions: {\n entities: {\n basic: progression\n }\n }\n },\n ui: {\n current: {progressionId: 'basic'},\n route: {\n basic: 'answer'\n }\n }\n };\n\n const props = createPlayerProps(state);\n t.true(props.showReviewLesson);\n});\n\ntest('should not display review lesson notification when user has not seen any media for the current slide', t => {\n const progression = createProgression(basicSlide);\n progression.state.viewedResources = [\n {\n type: 'chapter',\n ref: basicSlide.chapter_id,\n resources: []\n }\n ];\n const state = {\n data: {\n contents: data.contents,\n progressions: {\n entities: {\n basic: progression\n }\n }\n },\n ui: {\n current: {progressionId: 'basic'},\n route: {\n basic: 'answer'\n }\n }\n };\n\n const props = createPlayerProps(state);\n t.false(props.showReviewLesson);\n});\n\ntest('should feed step prop in non-adaptive mode', t => {\n const state = set(\n 'data.contents.level.entities.1.info.nbSlides',\n 12,\n learnerProgressionStateFixture\n );\n\n const props = createPlayerProps(state);\n\n t.deepEqual(props.step, {current: 0, total: 12});\n});\n\ntest('should not feed step prop in adaptive mode', t => {\n const state = pipe(\n set('data.contents.level.entities.1.info.nbSlides', 12),\n set('data.contents.chapter.entities.chapter2.isConditional', true)\n )(learnerProgressionStateFixture);\n\n const props = createPlayerProps(state);\n\n t.falsy(props.step);\n});\n\ntest('should not send an id prop in resources', t => {\n const props = createPlayerProps(learnerProgressionStateFixture);\n\n t.is(get('resources.0.id', props), undefined);\n});\n\nconst createLearnerProgression = (slide, contentRef) => ({\n engine: {\n ref: 'learner',\n version: '1'\n },\n content: {\n ref: contentRef,\n type: 'level'\n },\n state: {\n nextContent: {\n ref: slide._id,\n type: 'slide'\n },\n lives: 1,\n livesDisabled: false,\n step: {\n current: 1\n },\n viewedResources: []\n }\n});\n\nconst check = (slide, answer) => {\n const progressionId = 'progression';\n const levelId = 'level';\n const chapterId = 'chapter';\n return createPlayerProps({\n data: {\n contents: {\n slide: {\n entities: {\n [slide._id]: {...slide, chapter_id: chapterId}\n }\n },\n level: {\n entities: {\n [levelId]: {\n ref: levelId,\n chapterIds: [chapterId],\n isConditional: true\n }\n }\n },\n chapter: {\n entities: {\n [chapterId]: {\n _id: chapterId,\n isConditional: false\n }\n }\n }\n },\n progressions: {\n entities: {\n [progressionId]: createLearnerProgression(slide, levelId)\n }\n }\n },\n ui: {\n route: {[progressionId]: 'answer'},\n current: {progressionId},\n answers: {[progressionId]: {value: answer}}\n }\n }).cta.disabled;\n};\n\ntest('should allow multi answers on adaptive level if the current chapter is not adaptive', t => {\n t.true(check(basicSlide, []));\n t.true(check(qcmSlide, []));\n t.true(check(qcmGraphicSlide, []));\n t.true(check(qcmDragSlide, []));\n t.true(check(contextSlide, []));\n t.true(check(templateSlide, []));\n\n t.false(check(basicSlide, ['foo']));\n t.false(check(qcmSlide, ['foo']));\n t.false(check(qcmGraphicSlide, ['foo']));\n t.false(check(qcmDragSlide, ['foo']));\n t.false(check(contextSlide, ['foo']));\n t.false(check(templateSlide, ['foo']));\n\n t.false(check(basicSlide, ['foo', 'bar']));\n t.false(check(qcmSlide, ['foo', 'bar']));\n t.false(check(qcmGraphicSlide, ['foo', 'bar']));\n t.false(check(qcmDragSlide, ['foo', 'bar']));\n t.false(check(contextSlide, ['foo', 'bar']));\n t.false(check(templateSlide, ['foo', 'bar']));\n});\n"],"mappings":"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"}
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _isFunction2 = _interopRequireDefault(require("lodash/fp/isFunction"));
|
|
4
|
+
|
|
5
|
+
var _cloneDeep2 = _interopRequireDefault(require("lodash/fp/cloneDeep"));
|
|
6
|
+
|
|
7
|
+
var _identity2 = _interopRequireDefault(require("lodash/fp/identity"));
|
|
8
|
+
|
|
9
|
+
var _omit2 = _interopRequireDefault(require("lodash/fp/omit"));
|
|
10
|
+
|
|
11
|
+
var _find2 = _interopRequireDefault(require("lodash/fp/find"));
|
|
12
|
+
|
|
13
|
+
var _set2 = _interopRequireDefault(require("lodash/fp/set"));
|
|
14
|
+
|
|
15
|
+
var _map2 = _interopRequireDefault(require("lodash/fp/map"));
|
|
16
|
+
|
|
17
|
+
var _ava = _interopRequireDefault(require("ava"));
|
|
18
|
+
|
|
19
|
+
var _translate = require("@coorpacademy/translate");
|
|
20
|
+
|
|
21
|
+
var _playerStore = require("@coorpacademy/player-store");
|
|
22
|
+
|
|
23
|
+
var _popinCorrection = require("../popin-correction");
|
|
24
|
+
|
|
25
|
+
var _popinExtraLife = _interopRequireDefault(require("./fixtures/popin-correction/popin-extra-life"));
|
|
26
|
+
|
|
27
|
+
var _popinFailure = _interopRequireDefault(require("./fixtures/popin-correction/popin-failure"));
|
|
28
|
+
|
|
29
|
+
var _popinRevival = _interopRequireDefault(require("./fixtures/popin-correction/popin-revival"));
|
|
30
|
+
|
|
31
|
+
var _popinSuccess = _interopRequireDefault(require("./fixtures/popin-correction/popin-success"));
|
|
32
|
+
|
|
33
|
+
var _popinSuccessNode = _interopRequireDefault(require("./fixtures/popin-correction/popin-success-node"));
|
|
34
|
+
|
|
35
|
+
var _popinNextLevel = _interopRequireDefault(require("./fixtures/popin-correction/popin-next-level"));
|
|
36
|
+
|
|
37
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
38
|
+
|
|
39
|
+
const services = {
|
|
40
|
+
Answers: {
|
|
41
|
+
findById: _identity2.default
|
|
42
|
+
},
|
|
43
|
+
Analytics: {
|
|
44
|
+
sendProgressionAnalytics: _identity2.default
|
|
45
|
+
},
|
|
46
|
+
Progressions: {
|
|
47
|
+
findById: _identity2.default,
|
|
48
|
+
findBestOf: _identity2.default,
|
|
49
|
+
getEngineConfig: _identity2.default,
|
|
50
|
+
acceptExtraLife: _identity2.default,
|
|
51
|
+
refuseExtraLife: _identity2.default,
|
|
52
|
+
openAssistance: _identity2.default
|
|
53
|
+
},
|
|
54
|
+
Content: {
|
|
55
|
+
find: (type, ref) => {
|
|
56
|
+
if (type === 'slide') {
|
|
57
|
+
return Promise.resolve({
|
|
58
|
+
chapter_id: 'chapId',
|
|
59
|
+
_id: ref,
|
|
60
|
+
foo: 'bar'
|
|
61
|
+
});
|
|
62
|
+
} else if (type === 'chapter') {
|
|
63
|
+
return Promise.resolve({
|
|
64
|
+
_id: ref,
|
|
65
|
+
foo: 'baz'
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
getInfo: _identity2.default
|
|
70
|
+
},
|
|
71
|
+
Location: {
|
|
72
|
+
getRedirectURLAfterEnd: () => ''
|
|
73
|
+
},
|
|
74
|
+
LeaderBoard: {
|
|
75
|
+
getRank: _identity2.default
|
|
76
|
+
},
|
|
77
|
+
Recommendations: {
|
|
78
|
+
find: _identity2.default,
|
|
79
|
+
getNext: _identity2.default
|
|
80
|
+
},
|
|
81
|
+
ExitNodes: {
|
|
82
|
+
findById: _identity2.default
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const createDispatch = state => {
|
|
87
|
+
const getState = () => state;
|
|
88
|
+
|
|
89
|
+
return async action => {
|
|
90
|
+
const dispatched = [];
|
|
91
|
+
|
|
92
|
+
const dispatch = maybeAction => {
|
|
93
|
+
if (!(0, _isFunction2.default)(maybeAction)) {
|
|
94
|
+
dispatched.push(maybeAction);
|
|
95
|
+
return maybeAction;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return maybeAction(dispatch, getState, {
|
|
99
|
+
services
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
await dispatch(action);
|
|
104
|
+
return dispatched;
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
const actionTypes = actions => (0, _map2.default)(({
|
|
109
|
+
type
|
|
110
|
+
}) => type, actions);
|
|
111
|
+
|
|
112
|
+
const metaOf = (actionType, actions) => {
|
|
113
|
+
const action = (0, _find2.default)(({
|
|
114
|
+
type
|
|
115
|
+
}) => type === actionType, actions);
|
|
116
|
+
return action && action.meta;
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
(0, _ava.default)('should open Assistance', async t => {
|
|
120
|
+
const state = _popinSuccess.default;
|
|
121
|
+
const dispatch = createDispatch(state);
|
|
122
|
+
const linkAssistance = (0, _popinCorrection.openPopinAssistance)(dispatch, {});
|
|
123
|
+
const dispatched = await linkAssistance();
|
|
124
|
+
t.deepEqual(actionTypes(dispatched), [_playerStore.UI_PROGRESSION_ACTION_TYPES.OPEN_ASSISTANCE_REQUEST, _playerStore.UI_PROGRESSION_ACTION_TYPES.OPEN_ASSISTANCE_SUCCESS]);
|
|
125
|
+
});
|
|
126
|
+
(0, _ava.default)('should create a "Next" CTA when entering a success popin', async t => {
|
|
127
|
+
const state = _popinSuccess.default;
|
|
128
|
+
const progressionId = (0, _playerStore.getCurrentProgressionId)(state);
|
|
129
|
+
const dispatch = createDispatch(state);
|
|
130
|
+
const cta = (0, _popinCorrection.createHeaderCTA)({
|
|
131
|
+
translate: _translate.mockTranslate
|
|
132
|
+
}, {
|
|
133
|
+
dispatch
|
|
134
|
+
})(state);
|
|
135
|
+
t.deepEqual((0, _omit2.default)('onClick', cta), {
|
|
136
|
+
title: '__Next'
|
|
137
|
+
});
|
|
138
|
+
const dispatched = await cta.onClick();
|
|
139
|
+
t.deepEqual(actionTypes(dispatched), [_playerStore.UI_PROGRESSION_ACTION_TYPES.SELECT_PROGRESSION, _playerStore.PROGRESSION_FETCH_REQUEST, _playerStore.CONTENT_FETCH_REQUEST, _playerStore.RANK_FETCH_START_REQUEST, _playerStore.PROGRESSION_FETCH_BESTOF_REQUEST, _playerStore.ENGINE_CONFIG_FETCH_REQUEST, _playerStore.CONTENT_INFO_FETCH_REQUEST, _playerStore.CONTENT_FETCH_REQUEST, _playerStore.CONTENT_FETCH_REQUEST, _playerStore.RANK_FETCH_START_SUCCESS, _playerStore.PROGRESSION_FETCH_BESTOF_SUCCESS, _playerStore.CONTENT_INFO_FETCH_SUCCESS, _playerStore.CONTENT_FETCH_SUCCESS, _playerStore.UI_SELECT_ROUTE]);
|
|
140
|
+
t.deepEqual(metaOf(_playerStore.PROGRESSION_FETCH_REQUEST, dispatched), {
|
|
141
|
+
id: progressionId
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
(0, _ava.default)('should create a "Next" CTA when entering a success exit popin', async t => {
|
|
145
|
+
const state = _popinSuccessNode.default;
|
|
146
|
+
const progressionId = (0, _playerStore.getCurrentProgressionId)(state);
|
|
147
|
+
const dispatch = createDispatch(state);
|
|
148
|
+
const cta = (0, _popinCorrection.createHeaderCTA)({
|
|
149
|
+
translate: _translate.mockTranslate
|
|
150
|
+
}, {
|
|
151
|
+
dispatch
|
|
152
|
+
})(state);
|
|
153
|
+
t.deepEqual((0, _omit2.default)('onClick', cta), {
|
|
154
|
+
title: '__Next'
|
|
155
|
+
});
|
|
156
|
+
const dispatched = await cta.onClick();
|
|
157
|
+
t.deepEqual(actionTypes(dispatched), [_playerStore.UI_PROGRESSION_ACTION_TYPES.SELECT_PROGRESSION, _playerStore.PROGRESSION_FETCH_REQUEST, _playerStore.CONTENT_FETCH_REQUEST, _playerStore.CONTENT_FETCH_SUCCESS, _playerStore.RANK_FETCH_START_REQUEST, _playerStore.PROGRESSION_FETCH_BESTOF_REQUEST, _playerStore.ENGINE_CONFIG_FETCH_REQUEST, _playerStore.CONTENT_INFO_FETCH_REQUEST, _playerStore.RECO_FETCH_REQUEST, _playerStore.RANK_FETCH_END_REQUEST, _playerStore.NEXT_CONTENT_FETCH_REQUEST, _playerStore.EXIT_NODE_FETCH_REQUEST, _playerStore.RANK_FETCH_START_SUCCESS, _playerStore.PROGRESSION_FETCH_BESTOF_SUCCESS, _playerStore.CONTENT_INFO_FETCH_SUCCESS, _playerStore.RECO_FETCH_SUCCESS, _playerStore.RANK_FETCH_END_SUCCESS, _playerStore.NEXT_CONTENT_FETCH_SUCCESS, _playerStore.EXIT_NODE_FETCH_SUCCESS]);
|
|
158
|
+
t.deepEqual(metaOf(_playerStore.PROGRESSION_FETCH_REQUEST, dispatched), {
|
|
159
|
+
id: progressionId
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
(0, _ava.default)('should create a "Game over" CTA when entering a failure exit popin', async t => {
|
|
163
|
+
const state = _popinFailure.default;
|
|
164
|
+
const progressionId = (0, _playerStore.getCurrentProgressionId)(state);
|
|
165
|
+
const dispatch = createDispatch(state);
|
|
166
|
+
const cta = (0, _popinCorrection.createHeaderCTA)({
|
|
167
|
+
translate: _translate.mockTranslate
|
|
168
|
+
}, {
|
|
169
|
+
dispatch
|
|
170
|
+
})(state);
|
|
171
|
+
t.deepEqual((0, _omit2.default)('onClick', cta), {
|
|
172
|
+
title: '__Game over',
|
|
173
|
+
nextStepTitle: '__Click to continue'
|
|
174
|
+
});
|
|
175
|
+
const dispatched = await cta.onClick();
|
|
176
|
+
t.deepEqual(actionTypes(dispatched), [_playerStore.UI_PROGRESSION_ACTION_TYPES.SELECT_PROGRESSION, _playerStore.PROGRESSION_FETCH_REQUEST, _playerStore.CONTENT_FETCH_REQUEST, _playerStore.RANK_FETCH_START_REQUEST, _playerStore.PROGRESSION_FETCH_BESTOF_REQUEST, _playerStore.ENGINE_CONFIG_FETCH_REQUEST, _playerStore.CONTENT_INFO_FETCH_REQUEST, _playerStore.RECO_FETCH_REQUEST, _playerStore.RANK_FETCH_END_REQUEST, _playerStore.NEXT_CONTENT_FETCH_REQUEST, _playerStore.EXIT_NODE_FETCH_REQUEST, _playerStore.RANK_FETCH_START_SUCCESS, _playerStore.PROGRESSION_FETCH_BESTOF_SUCCESS, _playerStore.CONTENT_INFO_FETCH_SUCCESS, _playerStore.RECO_FETCH_SUCCESS, _playerStore.RANK_FETCH_END_SUCCESS, _playerStore.NEXT_CONTENT_FETCH_SUCCESS, _playerStore.EXIT_NODE_FETCH_SUCCESS]);
|
|
177
|
+
t.deepEqual(metaOf(_playerStore.PROGRESSION_FETCH_REQUEST, dispatched), {
|
|
178
|
+
id: progressionId
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
(0, _ava.default)('should create a "Quit" CTA when entering an extra-life popin', async t => {
|
|
182
|
+
const state = _popinExtraLife.default;
|
|
183
|
+
const progressionId = (0, _playerStore.getCurrentProgressionId)(state);
|
|
184
|
+
const dispatch = createDispatch(state);
|
|
185
|
+
const cta = (0, _popinCorrection.createHeaderCTA)({
|
|
186
|
+
translate: _translate.mockTranslate
|
|
187
|
+
}, {
|
|
188
|
+
dispatch
|
|
189
|
+
})(state);
|
|
190
|
+
t.deepEqual((0, _omit2.default)('onClick', cta), {
|
|
191
|
+
title: '__Quit'
|
|
192
|
+
});
|
|
193
|
+
const dispatched = await cta.onClick();
|
|
194
|
+
const actions = actionTypes(dispatched);
|
|
195
|
+
t.deepEqual(actions, [_playerStore.PROGRESSION_EXTRALIFEREFUSED_REQUEST, _playerStore.PROGRESSION_EXTRALIFEREFUSED_SUCCESS, _playerStore.PROGRESSION_UPDATED_ON_MOVE, _playerStore.UI_PROGRESSION_ACTION_TYPES.SELECT_PROGRESSION, _playerStore.PROGRESSION_FETCH_REQUEST, _playerStore.CONTENT_FETCH_REQUEST, _playerStore.RANK_FETCH_START_REQUEST, _playerStore.PROGRESSION_FETCH_BESTOF_REQUEST, _playerStore.ENGINE_CONFIG_FETCH_REQUEST, _playerStore.CONTENT_INFO_FETCH_REQUEST, _playerStore.CONTENT_FETCH_REQUEST, _playerStore.ANSWER_FETCH_REQUEST, _playerStore.RANK_FETCH_START_SUCCESS, _playerStore.PROGRESSION_FETCH_BESTOF_SUCCESS, _playerStore.CONTENT_INFO_FETCH_SUCCESS, _playerStore.ANSWER_FETCH_SUCCESS]);
|
|
196
|
+
t.deepEqual(metaOf(_playerStore.PROGRESSION_FETCH_REQUEST, dispatched), {
|
|
197
|
+
id: progressionId
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
(0, _ava.default)('should create an "Accept" CTA when entering a revival popin', async t => {
|
|
201
|
+
const state = _popinRevival.default;
|
|
202
|
+
const progressionId = (0, _playerStore.getCurrentProgressionId)(state);
|
|
203
|
+
const dispatch = createDispatch(state);
|
|
204
|
+
const cta = (0, _popinCorrection.createHeaderCTA)({
|
|
205
|
+
translate: _translate.mockTranslate
|
|
206
|
+
}, {
|
|
207
|
+
dispatch
|
|
208
|
+
})(state);
|
|
209
|
+
t.deepEqual((0, _omit2.default)('onClick', cta), {
|
|
210
|
+
title: '__Next'
|
|
211
|
+
});
|
|
212
|
+
const dispatched = await cta.onClick();
|
|
213
|
+
t.deepEqual(actionTypes(dispatched), [_playerStore.PROGRESSION_EXTRALIFEACCEPTED_REQUEST, _playerStore.PROGRESSION_EXTRALIFEACCEPTED_SUCCESS, _playerStore.PROGRESSION_UPDATED_ON_MOVE, _playerStore.UI_PROGRESSION_ACTION_TYPES.SELECT_PROGRESSION, _playerStore.PROGRESSION_FETCH_REQUEST, _playerStore.CONTENT_FETCH_REQUEST, _playerStore.RANK_FETCH_START_REQUEST, _playerStore.PROGRESSION_FETCH_BESTOF_REQUEST, _playerStore.ENGINE_CONFIG_FETCH_REQUEST, _playerStore.CONTENT_INFO_FETCH_REQUEST, _playerStore.CONTENT_FETCH_REQUEST, _playerStore.ANSWER_FETCH_REQUEST, _playerStore.RANK_FETCH_START_SUCCESS, _playerStore.PROGRESSION_FETCH_BESTOF_SUCCESS, _playerStore.CONTENT_INFO_FETCH_SUCCESS, _playerStore.ANSWER_FETCH_SUCCESS]);
|
|
214
|
+
t.deepEqual(metaOf(_playerStore.PROGRESSION_FETCH_REQUEST, dispatched), {
|
|
215
|
+
id: progressionId
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
(0, _ava.default)('should return null for the next content title if the progression content is not a level', t => {
|
|
219
|
+
const state = (0, _cloneDeep2.default)(_popinNextLevel.default);
|
|
220
|
+
state.data.progressions.entities[0].content.type = 'chapter';
|
|
221
|
+
const dispatch = createDispatch(state);
|
|
222
|
+
const cta = (0, _popinCorrection.createHeaderCTA)({
|
|
223
|
+
translate: _translate.mockTranslate
|
|
224
|
+
}, {
|
|
225
|
+
dispatch
|
|
226
|
+
})(state);
|
|
227
|
+
t.deepEqual((0, _omit2.default)('onClick', cta), {
|
|
228
|
+
title: '__Next'
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
(0, _ava.default)('should return null for the next content title if the previous and current slide are in the same chapter', t => {
|
|
232
|
+
const state = (0, _cloneDeep2.default)(_popinNextLevel.default);
|
|
233
|
+
const currentSlideRef = state.data.progressions.entities[0].state.nextContent.ref;
|
|
234
|
+
const prevSlideRef = state.data.progressions.entities[0].state.content.ref;
|
|
235
|
+
state.data.contents.slide.entities[currentSlideRef].chapter_id = state.data.contents.slide.entities[prevSlideRef].chapter_id;
|
|
236
|
+
const dispatch = createDispatch(state);
|
|
237
|
+
const cta = (0, _popinCorrection.createHeaderCTA)({
|
|
238
|
+
translate: _translate.mockTranslate
|
|
239
|
+
}, {
|
|
240
|
+
dispatch
|
|
241
|
+
})(state);
|
|
242
|
+
t.deepEqual((0, _omit2.default)('onClick', cta), {
|
|
243
|
+
title: '__Next'
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
(0, _ava.default)('should not set nextStepTitle for the next content title if slide, chapter or level content are not found', t => {
|
|
247
|
+
const state = (0, _cloneDeep2.default)(_popinNextLevel.default);
|
|
248
|
+
const dispatch = createDispatch(state);
|
|
249
|
+
const createHeader = (0, _popinCorrection.createHeaderCTA)({
|
|
250
|
+
translate: _translate.mockTranslate
|
|
251
|
+
}, {
|
|
252
|
+
dispatch
|
|
253
|
+
});
|
|
254
|
+
t.is(createHeader((0, _set2.default)('data.contents.slide', {}, state)).nextStepTitle, undefined);
|
|
255
|
+
t.is(createHeader((0, _set2.default)('data.contents.chapter', {}, state)).nextStepTitle, undefined);
|
|
256
|
+
t.is(createHeader((0, _set2.default)('data.contents.level', {}, state)).nextStepTitle, undefined);
|
|
257
|
+
});
|
|
258
|
+
(0, _ava.default)('should return the index of the next chapter out of the total number of chapters along with its title', t => {
|
|
259
|
+
const state = (0, _cloneDeep2.default)(_popinNextLevel.default);
|
|
260
|
+
const dispatch = createDispatch(state);
|
|
261
|
+
const cta = (0, _popinCorrection.createHeaderCTA)({
|
|
262
|
+
translate: _translate.mockTranslate
|
|
263
|
+
}, {
|
|
264
|
+
dispatch
|
|
265
|
+
})(state);
|
|
266
|
+
t.deepEqual((0, _omit2.default)('onClick', cta), {
|
|
267
|
+
title: '__Next chapter',
|
|
268
|
+
nextStepTitle: '2/4 Some chapter name'
|
|
269
|
+
});
|
|
270
|
+
});
|
|
271
|
+
(0, _ava.default)('should return null for the next content title if next content is an exitnode', t => {
|
|
272
|
+
const state = (0, _cloneDeep2.default)(_popinNextLevel.default);
|
|
273
|
+
const dispatch = createDispatch(state);
|
|
274
|
+
state.data.progressions.entities[0].state.nextContent = {
|
|
275
|
+
type: 'exitnode',
|
|
276
|
+
ref: 'successExitNode'
|
|
277
|
+
};
|
|
278
|
+
const ctaSuccess = (0, _popinCorrection.createHeaderCTA)({
|
|
279
|
+
translate: _translate.mockTranslate
|
|
280
|
+
}, {
|
|
281
|
+
dispatch
|
|
282
|
+
})(state);
|
|
283
|
+
t.deepEqual((0, _omit2.default)('onClick', ctaSuccess), {
|
|
284
|
+
title: '__Next chapter'
|
|
285
|
+
});
|
|
286
|
+
state.data.progressions.entities[0].state.nextContent = {
|
|
287
|
+
type: 'exitnode',
|
|
288
|
+
ref: 'failureExitNode'
|
|
289
|
+
};
|
|
290
|
+
const ctaFailure = (0, _popinCorrection.createHeaderCTA)({
|
|
291
|
+
translate: _translate.mockTranslate
|
|
292
|
+
}, {
|
|
293
|
+
dispatch
|
|
294
|
+
})(state);
|
|
295
|
+
t.deepEqual((0, _omit2.default)('onClick', ctaFailure), {
|
|
296
|
+
title: '__Next chapter'
|
|
297
|
+
});
|
|
298
|
+
});
|
|
299
|
+
(0, _ava.default)('should return null for the next content title if next content is an extralife', t => {
|
|
300
|
+
const state = (0, _cloneDeep2.default)(_popinNextLevel.default);
|
|
301
|
+
const dispatch = createDispatch(state);
|
|
302
|
+
state.data.progressions.entities[0].state.nextContent = {
|
|
303
|
+
type: 'node',
|
|
304
|
+
ref: 'extralife'
|
|
305
|
+
};
|
|
306
|
+
const cta = (0, _popinCorrection.createHeaderCTA)({
|
|
307
|
+
translate: _translate.mockTranslate
|
|
308
|
+
}, {
|
|
309
|
+
dispatch
|
|
310
|
+
})(state);
|
|
311
|
+
t.deepEqual((0, _omit2.default)('onClick', cta), {
|
|
312
|
+
title: '__Next chapter'
|
|
313
|
+
});
|
|
314
|
+
});
|
|
315
|
+
//# sourceMappingURL=popin-correction.create-header-cta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popin-correction.create-header-cta.js","names":["services","Answers","findById","Analytics","sendProgressionAnalytics","Progressions","findBestOf","getEngineConfig","acceptExtraLife","refuseExtraLife","openAssistance","Content","find","type","ref","Promise","resolve","chapter_id","_id","foo","getInfo","Location","getRedirectURLAfterEnd","LeaderBoard","getRank","Recommendations","getNext","ExitNodes","createDispatch","state","getState","action","dispatched","dispatch","maybeAction","push","actionTypes","actions","metaOf","actionType","meta","test","t","popinSuccess","linkAssistance","openPopinAssistance","deepEqual","UI_PROGRESSION_ACTION_TYPES","OPEN_ASSISTANCE_REQUEST","OPEN_ASSISTANCE_SUCCESS","progressionId","getCurrentProgressionId","cta","createHeaderCTA","translate","mockTranslate","title","onClick","SELECT_PROGRESSION","PROGRESSION_FETCH_REQUEST","CONTENT_FETCH_REQUEST","RANK_FETCH_START_REQUEST","PROGRESSION_FETCH_BESTOF_REQUEST","ENGINE_CONFIG_FETCH_REQUEST","CONTENT_INFO_FETCH_REQUEST","RANK_FETCH_START_SUCCESS","PROGRESSION_FETCH_BESTOF_SUCCESS","CONTENT_INFO_FETCH_SUCCESS","CONTENT_FETCH_SUCCESS","UI_SELECT_ROUTE","id","popinSuccessNode","RECO_FETCH_REQUEST","RANK_FETCH_END_REQUEST","NEXT_CONTENT_FETCH_REQUEST","EXIT_NODE_FETCH_REQUEST","RECO_FETCH_SUCCESS","RANK_FETCH_END_SUCCESS","NEXT_CONTENT_FETCH_SUCCESS","EXIT_NODE_FETCH_SUCCESS","popinFailure","nextStepTitle","popinExtraLife","PROGRESSION_EXTRALIFEREFUSED_REQUEST","PROGRESSION_EXTRALIFEREFUSED_SUCCESS","PROGRESSION_UPDATED_ON_MOVE","ANSWER_FETCH_REQUEST","ANSWER_FETCH_SUCCESS","popinRevival","PROGRESSION_EXTRALIFEACCEPTED_REQUEST","PROGRESSION_EXTRALIFEACCEPTED_SUCCESS","popinNextLevel","data","progressions","entities","content","currentSlideRef","nextContent","prevSlideRef","contents","slide","createHeader","is","undefined","ctaSuccess","ctaFailure"],"sources":["../../../src/map-state-to-props/test/popin-correction.create-header-cta.js"],"sourcesContent":["import test from 'ava';\nimport {map, set, find, omit, identity, cloneDeep, isFunction} from 'lodash/fp';\n\nimport {mockTranslate} from '@coorpacademy/translate';\n\nimport {\n ANSWER_FETCH_REQUEST,\n ANSWER_FETCH_SUCCESS,\n CONTENT_FETCH_REQUEST,\n CONTENT_FETCH_SUCCESS,\n CONTENT_INFO_FETCH_REQUEST,\n CONTENT_INFO_FETCH_SUCCESS,\n ENGINE_CONFIG_FETCH_REQUEST,\n EXIT_NODE_FETCH_REQUEST,\n EXIT_NODE_FETCH_SUCCESS,\n getCurrentProgressionId,\n NEXT_CONTENT_FETCH_REQUEST,\n NEXT_CONTENT_FETCH_SUCCESS,\n PROGRESSION_EXTRALIFEACCEPTED_REQUEST,\n PROGRESSION_EXTRALIFEACCEPTED_SUCCESS,\n PROGRESSION_EXTRALIFEREFUSED_REQUEST,\n PROGRESSION_EXTRALIFEREFUSED_SUCCESS,\n PROGRESSION_FETCH_BESTOF_REQUEST,\n PROGRESSION_FETCH_BESTOF_SUCCESS,\n PROGRESSION_FETCH_REQUEST,\n RANK_FETCH_END_REQUEST,\n RANK_FETCH_END_SUCCESS,\n RANK_FETCH_START_REQUEST,\n RANK_FETCH_START_SUCCESS,\n RECO_FETCH_REQUEST,\n RECO_FETCH_SUCCESS,\n UI_PROGRESSION_ACTION_TYPES,\n PROGRESSION_UPDATED_ON_MOVE,\n UI_SELECT_ROUTE\n} from '@coorpacademy/player-store';\nimport {createHeaderCTA, openPopinAssistance} from '../popin-correction';\nimport popinExtraLife from './fixtures/popin-correction/popin-extra-life';\nimport popinFailure from './fixtures/popin-correction/popin-failure';\nimport popinRevival from './fixtures/popin-correction/popin-revival';\nimport popinSuccess from './fixtures/popin-correction/popin-success';\nimport popinSuccessNode from './fixtures/popin-correction/popin-success-node';\nimport popinNextLevel from './fixtures/popin-correction/popin-next-level';\n\nconst services = {\n Answers: {\n findById: identity\n },\n Analytics: {\n sendProgressionAnalytics: identity\n },\n Progressions: {\n findById: identity,\n findBestOf: identity,\n getEngineConfig: identity,\n acceptExtraLife: identity,\n refuseExtraLife: identity,\n openAssistance: identity\n },\n Content: {\n find: (type, ref) => {\n if (type === 'slide') {\n return Promise.resolve({chapter_id: 'chapId', _id: ref, foo: 'bar'});\n } else if (type === 'chapter') {\n return Promise.resolve({_id: ref, foo: 'baz'});\n }\n },\n getInfo: identity\n },\n Location: {\n getRedirectURLAfterEnd: () => ''\n },\n LeaderBoard: {\n getRank: identity\n },\n Recommendations: {\n find: identity,\n getNext: identity\n },\n ExitNodes: {\n findById: identity\n }\n};\n\nconst createDispatch = state => {\n const getState = () => state;\n\n return async action => {\n const dispatched = [];\n const dispatch = maybeAction => {\n if (!isFunction(maybeAction)) {\n dispatched.push(maybeAction);\n return maybeAction;\n }\n return maybeAction(dispatch, getState, {services});\n };\n\n await dispatch(action);\n\n return dispatched;\n };\n};\n\nconst actionTypes = actions => map(({type}) => type, actions);\n\nconst metaOf = (actionType, actions) => {\n const action = find(({type}) => type === actionType, actions);\n\n return action && action.meta;\n};\n\ntest('should open Assistance', async t => {\n const state = popinSuccess;\n const dispatch = createDispatch(state);\n const linkAssistance = openPopinAssistance(dispatch, {});\n\n const dispatched = await linkAssistance();\n t.deepEqual(actionTypes(dispatched), [\n UI_PROGRESSION_ACTION_TYPES.OPEN_ASSISTANCE_REQUEST,\n UI_PROGRESSION_ACTION_TYPES.OPEN_ASSISTANCE_SUCCESS\n ]);\n});\n\ntest('should create a \"Next\" CTA when entering a success popin', async t => {\n const state = popinSuccess;\n const progressionId = getCurrentProgressionId(state);\n const dispatch = createDispatch(state);\n const cta = createHeaderCTA({translate: mockTranslate}, {dispatch})(state);\n\n t.deepEqual(omit('onClick', cta), {\n title: '__Next'\n });\n const dispatched = await cta.onClick();\n t.deepEqual(actionTypes(dispatched), [\n UI_PROGRESSION_ACTION_TYPES.SELECT_PROGRESSION,\n PROGRESSION_FETCH_REQUEST,\n CONTENT_FETCH_REQUEST,\n RANK_FETCH_START_REQUEST,\n PROGRESSION_FETCH_BESTOF_REQUEST,\n ENGINE_CONFIG_FETCH_REQUEST,\n CONTENT_INFO_FETCH_REQUEST,\n CONTENT_FETCH_REQUEST,\n CONTENT_FETCH_REQUEST,\n RANK_FETCH_START_SUCCESS,\n PROGRESSION_FETCH_BESTOF_SUCCESS,\n CONTENT_INFO_FETCH_SUCCESS,\n CONTENT_FETCH_SUCCESS,\n UI_SELECT_ROUTE\n ]);\n\n t.deepEqual(metaOf(PROGRESSION_FETCH_REQUEST, dispatched), {id: progressionId});\n});\n\ntest('should create a \"Next\" CTA when entering a success exit popin', async t => {\n const state = popinSuccessNode;\n const progressionId = getCurrentProgressionId(state);\n const dispatch = createDispatch(state);\n const cta = createHeaderCTA({translate: mockTranslate}, {dispatch})(state);\n\n t.deepEqual(omit('onClick', cta), {\n title: '__Next'\n });\n const dispatched = await cta.onClick();\n t.deepEqual(actionTypes(dispatched), [\n UI_PROGRESSION_ACTION_TYPES.SELECT_PROGRESSION,\n PROGRESSION_FETCH_REQUEST,\n CONTENT_FETCH_REQUEST,\n CONTENT_FETCH_SUCCESS,\n RANK_FETCH_START_REQUEST,\n PROGRESSION_FETCH_BESTOF_REQUEST,\n ENGINE_CONFIG_FETCH_REQUEST,\n CONTENT_INFO_FETCH_REQUEST,\n RECO_FETCH_REQUEST,\n RANK_FETCH_END_REQUEST,\n NEXT_CONTENT_FETCH_REQUEST,\n EXIT_NODE_FETCH_REQUEST,\n RANK_FETCH_START_SUCCESS,\n PROGRESSION_FETCH_BESTOF_SUCCESS,\n CONTENT_INFO_FETCH_SUCCESS,\n RECO_FETCH_SUCCESS,\n RANK_FETCH_END_SUCCESS,\n NEXT_CONTENT_FETCH_SUCCESS,\n EXIT_NODE_FETCH_SUCCESS\n ]);\n\n t.deepEqual(metaOf(PROGRESSION_FETCH_REQUEST, dispatched), {id: progressionId});\n});\n\ntest('should create a \"Game over\" CTA when entering a failure exit popin', async t => {\n const state = popinFailure;\n const progressionId = getCurrentProgressionId(state);\n const dispatch = createDispatch(state);\n const cta = createHeaderCTA({translate: mockTranslate}, {dispatch})(state);\n\n t.deepEqual(omit('onClick', cta), {\n title: '__Game over',\n nextStepTitle: '__Click to continue'\n });\n const dispatched = await cta.onClick();\n t.deepEqual(actionTypes(dispatched), [\n UI_PROGRESSION_ACTION_TYPES.SELECT_PROGRESSION,\n PROGRESSION_FETCH_REQUEST,\n CONTENT_FETCH_REQUEST,\n RANK_FETCH_START_REQUEST,\n PROGRESSION_FETCH_BESTOF_REQUEST,\n ENGINE_CONFIG_FETCH_REQUEST,\n CONTENT_INFO_FETCH_REQUEST,\n RECO_FETCH_REQUEST,\n RANK_FETCH_END_REQUEST,\n NEXT_CONTENT_FETCH_REQUEST,\n EXIT_NODE_FETCH_REQUEST,\n RANK_FETCH_START_SUCCESS,\n PROGRESSION_FETCH_BESTOF_SUCCESS,\n CONTENT_INFO_FETCH_SUCCESS,\n RECO_FETCH_SUCCESS,\n RANK_FETCH_END_SUCCESS,\n NEXT_CONTENT_FETCH_SUCCESS,\n EXIT_NODE_FETCH_SUCCESS\n ]);\n\n t.deepEqual(metaOf(PROGRESSION_FETCH_REQUEST, dispatched), {id: progressionId});\n});\n\ntest('should create a \"Quit\" CTA when entering an extra-life popin', async t => {\n const state = popinExtraLife;\n const progressionId = getCurrentProgressionId(state);\n const dispatch = createDispatch(state);\n const cta = createHeaderCTA({translate: mockTranslate}, {dispatch})(state);\n\n t.deepEqual(omit('onClick', cta), {\n title: '__Quit'\n });\n const dispatched = await cta.onClick();\n const actions = actionTypes(dispatched);\n\n t.deepEqual(actions, [\n PROGRESSION_EXTRALIFEREFUSED_REQUEST,\n PROGRESSION_EXTRALIFEREFUSED_SUCCESS,\n PROGRESSION_UPDATED_ON_MOVE,\n UI_PROGRESSION_ACTION_TYPES.SELECT_PROGRESSION,\n PROGRESSION_FETCH_REQUEST,\n CONTENT_FETCH_REQUEST,\n RANK_FETCH_START_REQUEST,\n PROGRESSION_FETCH_BESTOF_REQUEST,\n ENGINE_CONFIG_FETCH_REQUEST,\n CONTENT_INFO_FETCH_REQUEST,\n CONTENT_FETCH_REQUEST,\n ANSWER_FETCH_REQUEST,\n RANK_FETCH_START_SUCCESS,\n PROGRESSION_FETCH_BESTOF_SUCCESS,\n CONTENT_INFO_FETCH_SUCCESS,\n ANSWER_FETCH_SUCCESS\n ]);\n\n t.deepEqual(metaOf(PROGRESSION_FETCH_REQUEST, dispatched), {id: progressionId});\n});\n\ntest('should create an \"Accept\" CTA when entering a revival popin', async t => {\n const state = popinRevival;\n const progressionId = getCurrentProgressionId(state);\n const dispatch = createDispatch(state);\n const cta = createHeaderCTA({translate: mockTranslate}, {dispatch})(state);\n\n t.deepEqual(omit('onClick', cta), {\n title: '__Next'\n });\n const dispatched = await cta.onClick();\n t.deepEqual(actionTypes(dispatched), [\n PROGRESSION_EXTRALIFEACCEPTED_REQUEST,\n PROGRESSION_EXTRALIFEACCEPTED_SUCCESS,\n PROGRESSION_UPDATED_ON_MOVE,\n UI_PROGRESSION_ACTION_TYPES.SELECT_PROGRESSION,\n PROGRESSION_FETCH_REQUEST,\n CONTENT_FETCH_REQUEST,\n RANK_FETCH_START_REQUEST,\n PROGRESSION_FETCH_BESTOF_REQUEST,\n ENGINE_CONFIG_FETCH_REQUEST,\n CONTENT_INFO_FETCH_REQUEST,\n CONTENT_FETCH_REQUEST,\n ANSWER_FETCH_REQUEST,\n RANK_FETCH_START_SUCCESS,\n PROGRESSION_FETCH_BESTOF_SUCCESS,\n CONTENT_INFO_FETCH_SUCCESS,\n ANSWER_FETCH_SUCCESS\n ]);\n\n t.deepEqual(metaOf(PROGRESSION_FETCH_REQUEST, dispatched), {id: progressionId});\n});\n\ntest('should return null for the next content title if the progression content is not a level', t => {\n const state = cloneDeep(popinNextLevel);\n state.data.progressions.entities[0].content.type = 'chapter';\n const dispatch = createDispatch(state);\n const cta = createHeaderCTA({translate: mockTranslate}, {dispatch})(state);\n\n t.deepEqual(omit('onClick', cta), {\n title: '__Next'\n });\n});\n\ntest('should return null for the next content title if the previous and current slide are in the same chapter', t => {\n const state = cloneDeep(popinNextLevel);\n const currentSlideRef = state.data.progressions.entities[0].state.nextContent.ref;\n const prevSlideRef = state.data.progressions.entities[0].state.content.ref;\n state.data.contents.slide.entities[currentSlideRef].chapter_id =\n state.data.contents.slide.entities[prevSlideRef].chapter_id;\n const dispatch = createDispatch(state);\n const cta = createHeaderCTA({translate: mockTranslate}, {dispatch})(state);\n\n t.deepEqual(omit('onClick', cta), {\n title: '__Next'\n });\n});\n\ntest('should not set nextStepTitle for the next content title if slide, chapter or level content are not found', t => {\n const state = cloneDeep(popinNextLevel);\n const dispatch = createDispatch(state);\n const createHeader = createHeaderCTA({translate: mockTranslate}, {dispatch});\n\n t.is(createHeader(set('data.contents.slide', {}, state)).nextStepTitle, undefined);\n t.is(createHeader(set('data.contents.chapter', {}, state)).nextStepTitle, undefined);\n t.is(createHeader(set('data.contents.level', {}, state)).nextStepTitle, undefined);\n});\n\ntest('should return the index of the next chapter out of the total number of chapters along with its title', t => {\n const state = cloneDeep(popinNextLevel);\n const dispatch = createDispatch(state);\n const cta = createHeaderCTA({translate: mockTranslate}, {dispatch})(state);\n\n t.deepEqual(omit('onClick', cta), {\n title: '__Next chapter',\n nextStepTitle: '2/4 Some chapter name'\n });\n});\n\ntest('should return null for the next content title if next content is an exitnode', t => {\n const state = cloneDeep(popinNextLevel);\n const dispatch = createDispatch(state);\n state.data.progressions.entities[0].state.nextContent = {\n type: 'exitnode',\n ref: 'successExitNode'\n };\n\n const ctaSuccess = createHeaderCTA({translate: mockTranslate}, {dispatch})(state);\n t.deepEqual(omit('onClick', ctaSuccess), {\n title: '__Next chapter'\n });\n\n state.data.progressions.entities[0].state.nextContent = {\n type: 'exitnode',\n ref: 'failureExitNode'\n };\n const ctaFailure = createHeaderCTA({translate: mockTranslate}, {dispatch})(state);\n t.deepEqual(omit('onClick', ctaFailure), {\n title: '__Next chapter'\n });\n});\n\ntest('should return null for the next content title if next content is an extralife', t => {\n const state = cloneDeep(popinNextLevel);\n const dispatch = createDispatch(state);\n state.data.progressions.entities[0].state.nextContent = {\n type: 'node',\n ref: 'extralife'\n };\n\n const cta = createHeaderCTA({translate: mockTranslate}, {dispatch})(state);\n t.deepEqual(omit('onClick', cta), {\n title: '__Next chapter'\n });\n});\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;;AAGA;;AAEA;;AA8BA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,MAAMA,QAAQ,GAAG;EACfC,OAAO,EAAE;IACPC,QAAQ;EADD,CADM;EAIfC,SAAS,EAAE;IACTC,wBAAwB;EADf,CAJI;EAOfC,YAAY,EAAE;IACZH,QAAQ,oBADI;IAEZI,UAAU,oBAFE;IAGZC,eAAe,oBAHH;IAIZC,eAAe,oBAJH;IAKZC,eAAe,oBALH;IAMZC,cAAc;EANF,CAPC;EAefC,OAAO,EAAE;IACPC,IAAI,EAAE,CAACC,IAAD,EAAOC,GAAP,KAAe;MACnB,IAAID,IAAI,KAAK,OAAb,EAAsB;QACpB,OAAOE,OAAO,CAACC,OAAR,CAAgB;UAACC,UAAU,EAAE,QAAb;UAAuBC,GAAG,EAAEJ,GAA5B;UAAiCK,GAAG,EAAE;QAAtC,CAAhB,CAAP;MACD,CAFD,MAEO,IAAIN,IAAI,KAAK,SAAb,EAAwB;QAC7B,OAAOE,OAAO,CAACC,OAAR,CAAgB;UAACE,GAAG,EAAEJ,GAAN;UAAWK,GAAG,EAAE;QAAhB,CAAhB,CAAP;MACD;IACF,CAPM;IAQPC,OAAO;EARA,CAfM;EAyBfC,QAAQ,EAAE;IACRC,sBAAsB,EAAE,MAAM;EADtB,CAzBK;EA4BfC,WAAW,EAAE;IACXC,OAAO;EADI,CA5BE;EA+BfC,eAAe,EAAE;IACfb,IAAI,oBADW;IAEfc,OAAO;EAFQ,CA/BF;EAmCfC,SAAS,EAAE;IACTzB,QAAQ;EADC;AAnCI,CAAjB;;AAwCA,MAAM0B,cAAc,GAAGC,KAAK,IAAI;EAC9B,MAAMC,QAAQ,GAAG,MAAMD,KAAvB;;EAEA,OAAO,MAAME,MAAN,IAAgB;IACrB,MAAMC,UAAU,GAAG,EAAnB;;IACA,MAAMC,QAAQ,GAAGC,WAAW,IAAI;MAC9B,IAAI,CAAC,0BAAWA,WAAX,CAAL,EAA8B;QAC5BF,UAAU,CAACG,IAAX,CAAgBD,WAAhB;QACA,OAAOA,WAAP;MACD;;MACD,OAAOA,WAAW,CAACD,QAAD,EAAWH,QAAX,EAAqB;QAAC9B;MAAD,CAArB,CAAlB;IACD,CAND;;IAQA,MAAMiC,QAAQ,CAACF,MAAD,CAAd;IAEA,OAAOC,UAAP;EACD,CAbD;AAcD,CAjBD;;AAmBA,MAAMI,WAAW,GAAGC,OAAO,IAAI,mBAAI,CAAC;EAACxB;AAAD,CAAD,KAAYA,IAAhB,EAAsBwB,OAAtB,CAA/B;;AAEA,MAAMC,MAAM,GAAG,CAACC,UAAD,EAAaF,OAAb,KAAyB;EACtC,MAAMN,MAAM,GAAG,oBAAK,CAAC;IAAClB;EAAD,CAAD,KAAYA,IAAI,KAAK0B,UAA1B,EAAsCF,OAAtC,CAAf;EAEA,OAAON,MAAM,IAAIA,MAAM,CAACS,IAAxB;AACD,CAJD;;AAMA,IAAAC,YAAA,EAAK,wBAAL,EAA+B,MAAMC,CAAN,IAAW;EACxC,MAAMb,KAAK,GAAGc,qBAAd;EACA,MAAMV,QAAQ,GAAGL,cAAc,CAACC,KAAD,CAA/B;EACA,MAAMe,cAAc,GAAG,IAAAC,oCAAA,EAAoBZ,QAApB,EAA8B,EAA9B,CAAvB;EAEA,MAAMD,UAAU,GAAG,MAAMY,cAAc,EAAvC;EACAF,CAAC,CAACI,SAAF,CAAYV,WAAW,CAACJ,UAAD,CAAvB,EAAqC,CACnCe,wCAAA,CAA4BC,uBADO,EAEnCD,wCAAA,CAA4BE,uBAFO,CAArC;AAID,CAVD;AAYA,IAAAR,YAAA,EAAK,0DAAL,EAAiE,MAAMC,CAAN,IAAW;EAC1E,MAAMb,KAAK,GAAGc,qBAAd;EACA,MAAMO,aAAa,GAAG,IAAAC,oCAAA,EAAwBtB,KAAxB,CAAtB;EACA,MAAMI,QAAQ,GAAGL,cAAc,CAACC,KAAD,CAA/B;EACA,MAAMuB,GAAG,GAAG,IAAAC,gCAAA,EAAgB;IAACC,SAAS,EAAEC;EAAZ,CAAhB,EAA4C;IAACtB;EAAD,CAA5C,EAAwDJ,KAAxD,CAAZ;EAEAa,CAAC,CAACI,SAAF,CAAY,oBAAK,SAAL,EAAgBM,GAAhB,CAAZ,EAAkC;IAChCI,KAAK,EAAE;EADyB,CAAlC;EAGA,MAAMxB,UAAU,GAAG,MAAMoB,GAAG,CAACK,OAAJ,EAAzB;EACAf,CAAC,CAACI,SAAF,CAAYV,WAAW,CAACJ,UAAD,CAAvB,EAAqC,CACnCe,wCAAA,CAA4BW,kBADO,EAEnCC,sCAFmC,EAGnCC,kCAHmC,EAInCC,qCAJmC,EAKnCC,6CALmC,EAMnCC,wCANmC,EAOnCC,uCAPmC,EAQnCJ,kCARmC,EASnCA,kCATmC,EAUnCK,qCAVmC,EAWnCC,6CAXmC,EAYnCC,uCAZmC,EAanCC,kCAbmC,EAcnCC,4BAdmC,CAArC;EAiBA3B,CAAC,CAACI,SAAF,CAAYR,MAAM,CAACqB,sCAAD,EAA4B3B,UAA5B,CAAlB,EAA2D;IAACsC,EAAE,EAAEpB;EAAL,CAA3D;AACD,CA5BD;AA8BA,IAAAT,YAAA,EAAK,+DAAL,EAAsE,MAAMC,CAAN,IAAW;EAC/E,MAAMb,KAAK,GAAG0C,yBAAd;EACA,MAAMrB,aAAa,GAAG,IAAAC,oCAAA,EAAwBtB,KAAxB,CAAtB;EACA,MAAMI,QAAQ,GAAGL,cAAc,CAACC,KAAD,CAA/B;EACA,MAAMuB,GAAG,GAAG,IAAAC,gCAAA,EAAgB;IAACC,SAAS,EAAEC;EAAZ,CAAhB,EAA4C;IAACtB;EAAD,CAA5C,EAAwDJ,KAAxD,CAAZ;EAEAa,CAAC,CAACI,SAAF,CAAY,oBAAK,SAAL,EAAgBM,GAAhB,CAAZ,EAAkC;IAChCI,KAAK,EAAE;EADyB,CAAlC;EAGA,MAAMxB,UAAU,GAAG,MAAMoB,GAAG,CAACK,OAAJ,EAAzB;EACAf,CAAC,CAACI,SAAF,CAAYV,WAAW,CAACJ,UAAD,CAAvB,EAAqC,CACnCe,wCAAA,CAA4BW,kBADO,EAEnCC,sCAFmC,EAGnCC,kCAHmC,EAInCQ,kCAJmC,EAKnCP,qCALmC,EAMnCC,6CANmC,EAOnCC,wCAPmC,EAQnCC,uCARmC,EASnCQ,+BATmC,EAUnCC,mCAVmC,EAWnCC,uCAXmC,EAYnCC,oCAZmC,EAanCV,qCAbmC,EAcnCC,6CAdmC,EAenCC,uCAfmC,EAgBnCS,+BAhBmC,EAiBnCC,mCAjBmC,EAkBnCC,uCAlBmC,EAmBnCC,oCAnBmC,CAArC;EAsBArC,CAAC,CAACI,SAAF,CAAYR,MAAM,CAACqB,sCAAD,EAA4B3B,UAA5B,CAAlB,EAA2D;IAACsC,EAAE,EAAEpB;EAAL,CAA3D;AACD,CAjCD;AAmCA,IAAAT,YAAA,EAAK,oEAAL,EAA2E,MAAMC,CAAN,IAAW;EACpF,MAAMb,KAAK,GAAGmD,qBAAd;EACA,MAAM9B,aAAa,GAAG,IAAAC,oCAAA,EAAwBtB,KAAxB,CAAtB;EACA,MAAMI,QAAQ,GAAGL,cAAc,CAACC,KAAD,CAA/B;EACA,MAAMuB,GAAG,GAAG,IAAAC,gCAAA,EAAgB;IAACC,SAAS,EAAEC;EAAZ,CAAhB,EAA4C;IAACtB;EAAD,CAA5C,EAAwDJ,KAAxD,CAAZ;EAEAa,CAAC,CAACI,SAAF,CAAY,oBAAK,SAAL,EAAgBM,GAAhB,CAAZ,EAAkC;IAChCI,KAAK,EAAE,aADyB;IAEhCyB,aAAa,EAAE;EAFiB,CAAlC;EAIA,MAAMjD,UAAU,GAAG,MAAMoB,GAAG,CAACK,OAAJ,EAAzB;EACAf,CAAC,CAACI,SAAF,CAAYV,WAAW,CAACJ,UAAD,CAAvB,EAAqC,CACnCe,wCAAA,CAA4BW,kBADO,EAEnCC,sCAFmC,EAGnCC,kCAHmC,EAInCC,qCAJmC,EAKnCC,6CALmC,EAMnCC,wCANmC,EAOnCC,uCAPmC,EAQnCQ,+BARmC,EASnCC,mCATmC,EAUnCC,uCAVmC,EAWnCC,oCAXmC,EAYnCV,qCAZmC,EAanCC,6CAbmC,EAcnCC,uCAdmC,EAenCS,+BAfmC,EAgBnCC,mCAhBmC,EAiBnCC,uCAjBmC,EAkBnCC,oCAlBmC,CAArC;EAqBArC,CAAC,CAACI,SAAF,CAAYR,MAAM,CAACqB,sCAAD,EAA4B3B,UAA5B,CAAlB,EAA2D;IAACsC,EAAE,EAAEpB;EAAL,CAA3D;AACD,CAjCD;AAmCA,IAAAT,YAAA,EAAK,8DAAL,EAAqE,MAAMC,CAAN,IAAW;EAC9E,MAAMb,KAAK,GAAGqD,uBAAd;EACA,MAAMhC,aAAa,GAAG,IAAAC,oCAAA,EAAwBtB,KAAxB,CAAtB;EACA,MAAMI,QAAQ,GAAGL,cAAc,CAACC,KAAD,CAA/B;EACA,MAAMuB,GAAG,GAAG,IAAAC,gCAAA,EAAgB;IAACC,SAAS,EAAEC;EAAZ,CAAhB,EAA4C;IAACtB;EAAD,CAA5C,EAAwDJ,KAAxD,CAAZ;EAEAa,CAAC,CAACI,SAAF,CAAY,oBAAK,SAAL,EAAgBM,GAAhB,CAAZ,EAAkC;IAChCI,KAAK,EAAE;EADyB,CAAlC;EAGA,MAAMxB,UAAU,GAAG,MAAMoB,GAAG,CAACK,OAAJ,EAAzB;EACA,MAAMpB,OAAO,GAAGD,WAAW,CAACJ,UAAD,CAA3B;EAEAU,CAAC,CAACI,SAAF,CAAYT,OAAZ,EAAqB,CACnB8C,iDADmB,EAEnBC,iDAFmB,EAGnBC,wCAHmB,EAInBtC,wCAAA,CAA4BW,kBAJT,EAKnBC,sCALmB,EAMnBC,kCANmB,EAOnBC,qCAPmB,EAQnBC,6CARmB,EASnBC,wCATmB,EAUnBC,uCAVmB,EAWnBJ,kCAXmB,EAYnB0B,iCAZmB,EAanBrB,qCAbmB,EAcnBC,6CAdmB,EAenBC,uCAfmB,EAgBnBoB,iCAhBmB,CAArB;EAmBA7C,CAAC,CAACI,SAAF,CAAYR,MAAM,CAACqB,sCAAD,EAA4B3B,UAA5B,CAAlB,EAA2D;IAACsC,EAAE,EAAEpB;EAAL,CAA3D;AACD,CAhCD;AAkCA,IAAAT,YAAA,EAAK,6DAAL,EAAoE,MAAMC,CAAN,IAAW;EAC7E,MAAMb,KAAK,GAAG2D,qBAAd;EACA,MAAMtC,aAAa,GAAG,IAAAC,oCAAA,EAAwBtB,KAAxB,CAAtB;EACA,MAAMI,QAAQ,GAAGL,cAAc,CAACC,KAAD,CAA/B;EACA,MAAMuB,GAAG,GAAG,IAAAC,gCAAA,EAAgB;IAACC,SAAS,EAAEC;EAAZ,CAAhB,EAA4C;IAACtB;EAAD,CAA5C,EAAwDJ,KAAxD,CAAZ;EAEAa,CAAC,CAACI,SAAF,CAAY,oBAAK,SAAL,EAAgBM,GAAhB,CAAZ,EAAkC;IAChCI,KAAK,EAAE;EADyB,CAAlC;EAGA,MAAMxB,UAAU,GAAG,MAAMoB,GAAG,CAACK,OAAJ,EAAzB;EACAf,CAAC,CAACI,SAAF,CAAYV,WAAW,CAACJ,UAAD,CAAvB,EAAqC,CACnCyD,kDADmC,EAEnCC,kDAFmC,EAGnCL,wCAHmC,EAInCtC,wCAAA,CAA4BW,kBAJO,EAKnCC,sCALmC,EAMnCC,kCANmC,EAOnCC,qCAPmC,EAQnCC,6CARmC,EASnCC,wCATmC,EAUnCC,uCAVmC,EAWnCJ,kCAXmC,EAYnC0B,iCAZmC,EAanCrB,qCAbmC,EAcnCC,6CAdmC,EAenCC,uCAfmC,EAgBnCoB,iCAhBmC,CAArC;EAmBA7C,CAAC,CAACI,SAAF,CAAYR,MAAM,CAACqB,sCAAD,EAA4B3B,UAA5B,CAAlB,EAA2D;IAACsC,EAAE,EAAEpB;EAAL,CAA3D;AACD,CA9BD;AAgCA,IAAAT,YAAA,EAAK,yFAAL,EAAgGC,CAAC,IAAI;EACnG,MAAMb,KAAK,GAAG,yBAAU8D,uBAAV,CAAd;EACA9D,KAAK,CAAC+D,IAAN,CAAWC,YAAX,CAAwBC,QAAxB,CAAiC,CAAjC,EAAoCC,OAApC,CAA4ClF,IAA5C,GAAmD,SAAnD;EACA,MAAMoB,QAAQ,GAAGL,cAAc,CAACC,KAAD,CAA/B;EACA,MAAMuB,GAAG,GAAG,IAAAC,gCAAA,EAAgB;IAACC,SAAS,EAAEC;EAAZ,CAAhB,EAA4C;IAACtB;EAAD,CAA5C,EAAwDJ,KAAxD,CAAZ;EAEAa,CAAC,CAACI,SAAF,CAAY,oBAAK,SAAL,EAAgBM,GAAhB,CAAZ,EAAkC;IAChCI,KAAK,EAAE;EADyB,CAAlC;AAGD,CATD;AAWA,IAAAf,YAAA,EAAK,yGAAL,EAAgHC,CAAC,IAAI;EACnH,MAAMb,KAAK,GAAG,yBAAU8D,uBAAV,CAAd;EACA,MAAMK,eAAe,GAAGnE,KAAK,CAAC+D,IAAN,CAAWC,YAAX,CAAwBC,QAAxB,CAAiC,CAAjC,EAAoCjE,KAApC,CAA0CoE,WAA1C,CAAsDnF,GAA9E;EACA,MAAMoF,YAAY,GAAGrE,KAAK,CAAC+D,IAAN,CAAWC,YAAX,CAAwBC,QAAxB,CAAiC,CAAjC,EAAoCjE,KAApC,CAA0CkE,OAA1C,CAAkDjF,GAAvE;EACAe,KAAK,CAAC+D,IAAN,CAAWO,QAAX,CAAoBC,KAApB,CAA0BN,QAA1B,CAAmCE,eAAnC,EAAoD/E,UAApD,GACEY,KAAK,CAAC+D,IAAN,CAAWO,QAAX,CAAoBC,KAApB,CAA0BN,QAA1B,CAAmCI,YAAnC,EAAiDjF,UADnD;EAEA,MAAMgB,QAAQ,GAAGL,cAAc,CAACC,KAAD,CAA/B;EACA,MAAMuB,GAAG,GAAG,IAAAC,gCAAA,EAAgB;IAACC,SAAS,EAAEC;EAAZ,CAAhB,EAA4C;IAACtB;EAAD,CAA5C,EAAwDJ,KAAxD,CAAZ;EAEAa,CAAC,CAACI,SAAF,CAAY,oBAAK,SAAL,EAAgBM,GAAhB,CAAZ,EAAkC;IAChCI,KAAK,EAAE;EADyB,CAAlC;AAGD,CAZD;AAcA,IAAAf,YAAA,EAAK,0GAAL,EAAiHC,CAAC,IAAI;EACpH,MAAMb,KAAK,GAAG,yBAAU8D,uBAAV,CAAd;EACA,MAAM1D,QAAQ,GAAGL,cAAc,CAACC,KAAD,CAA/B;EACA,MAAMwE,YAAY,GAAG,IAAAhD,gCAAA,EAAgB;IAACC,SAAS,EAAEC;EAAZ,CAAhB,EAA4C;IAACtB;EAAD,CAA5C,CAArB;EAEAS,CAAC,CAAC4D,EAAF,CAAKD,YAAY,CAAC,mBAAI,qBAAJ,EAA2B,EAA3B,EAA+BxE,KAA/B,CAAD,CAAZ,CAAoDoD,aAAzD,EAAwEsB,SAAxE;EACA7D,CAAC,CAAC4D,EAAF,CAAKD,YAAY,CAAC,mBAAI,uBAAJ,EAA6B,EAA7B,EAAiCxE,KAAjC,CAAD,CAAZ,CAAsDoD,aAA3D,EAA0EsB,SAA1E;EACA7D,CAAC,CAAC4D,EAAF,CAAKD,YAAY,CAAC,mBAAI,qBAAJ,EAA2B,EAA3B,EAA+BxE,KAA/B,CAAD,CAAZ,CAAoDoD,aAAzD,EAAwEsB,SAAxE;AACD,CARD;AAUA,IAAA9D,YAAA,EAAK,sGAAL,EAA6GC,CAAC,IAAI;EAChH,MAAMb,KAAK,GAAG,yBAAU8D,uBAAV,CAAd;EACA,MAAM1D,QAAQ,GAAGL,cAAc,CAACC,KAAD,CAA/B;EACA,MAAMuB,GAAG,GAAG,IAAAC,gCAAA,EAAgB;IAACC,SAAS,EAAEC;EAAZ,CAAhB,EAA4C;IAACtB;EAAD,CAA5C,EAAwDJ,KAAxD,CAAZ;EAEAa,CAAC,CAACI,SAAF,CAAY,oBAAK,SAAL,EAAgBM,GAAhB,CAAZ,EAAkC;IAChCI,KAAK,EAAE,gBADyB;IAEhCyB,aAAa,EAAE;EAFiB,CAAlC;AAID,CATD;AAWA,IAAAxC,YAAA,EAAK,8EAAL,EAAqFC,CAAC,IAAI;EACxF,MAAMb,KAAK,GAAG,yBAAU8D,uBAAV,CAAd;EACA,MAAM1D,QAAQ,GAAGL,cAAc,CAACC,KAAD,CAA/B;EACAA,KAAK,CAAC+D,IAAN,CAAWC,YAAX,CAAwBC,QAAxB,CAAiC,CAAjC,EAAoCjE,KAApC,CAA0CoE,WAA1C,GAAwD;IACtDpF,IAAI,EAAE,UADgD;IAEtDC,GAAG,EAAE;EAFiD,CAAxD;EAKA,MAAM0F,UAAU,GAAG,IAAAnD,gCAAA,EAAgB;IAACC,SAAS,EAAEC;EAAZ,CAAhB,EAA4C;IAACtB;EAAD,CAA5C,EAAwDJ,KAAxD,CAAnB;EACAa,CAAC,CAACI,SAAF,CAAY,oBAAK,SAAL,EAAgB0D,UAAhB,CAAZ,EAAyC;IACvChD,KAAK,EAAE;EADgC,CAAzC;EAIA3B,KAAK,CAAC+D,IAAN,CAAWC,YAAX,CAAwBC,QAAxB,CAAiC,CAAjC,EAAoCjE,KAApC,CAA0CoE,WAA1C,GAAwD;IACtDpF,IAAI,EAAE,UADgD;IAEtDC,GAAG,EAAE;EAFiD,CAAxD;EAIA,MAAM2F,UAAU,GAAG,IAAApD,gCAAA,EAAgB;IAACC,SAAS,EAAEC;EAAZ,CAAhB,EAA4C;IAACtB;EAAD,CAA5C,EAAwDJ,KAAxD,CAAnB;EACAa,CAAC,CAACI,SAAF,CAAY,oBAAK,SAAL,EAAgB2D,UAAhB,CAAZ,EAAyC;IACvCjD,KAAK,EAAE;EADgC,CAAzC;AAGD,CArBD;AAuBA,IAAAf,YAAA,EAAK,+EAAL,EAAsFC,CAAC,IAAI;EACzF,MAAMb,KAAK,GAAG,yBAAU8D,uBAAV,CAAd;EACA,MAAM1D,QAAQ,GAAGL,cAAc,CAACC,KAAD,CAA/B;EACAA,KAAK,CAAC+D,IAAN,CAAWC,YAAX,CAAwBC,QAAxB,CAAiC,CAAjC,EAAoCjE,KAApC,CAA0CoE,WAA1C,GAAwD;IACtDpF,IAAI,EAAE,MADgD;IAEtDC,GAAG,EAAE;EAFiD,CAAxD;EAKA,MAAMsC,GAAG,GAAG,IAAAC,gCAAA,EAAgB;IAACC,SAAS,EAAEC;EAAZ,CAAhB,EAA4C;IAACtB;EAAD,CAA5C,EAAwDJ,KAAxD,CAAZ;EACAa,CAAC,CAACI,SAAF,CAAY,oBAAK,SAAL,EAAgBM,GAAhB,CAAZ,EAAkC;IAChCI,KAAK,EAAE;EADyB,CAAlC;AAGD,CAZD"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _identity2 = _interopRequireDefault(require("lodash/fp/identity"));
|
|
4
|
+
|
|
5
|
+
var _set2 = _interopRequireDefault(require("lodash/fp/set"));
|
|
6
|
+
|
|
7
|
+
var _get2 = _interopRequireDefault(require("lodash/fp/get"));
|
|
8
|
+
|
|
9
|
+
var _ava = _interopRequireDefault(require("ava"));
|
|
10
|
+
|
|
11
|
+
var _translate = require("@coorpacademy/translate");
|
|
12
|
+
|
|
13
|
+
var _playerStore = require("@coorpacademy/player-store");
|
|
14
|
+
|
|
15
|
+
var _popinCorrection = require("../popin-correction");
|
|
16
|
+
|
|
17
|
+
var _popinExtraLife = _interopRequireDefault(require("./fixtures/popin-correction/popin-extra-life"));
|
|
18
|
+
|
|
19
|
+
var _popinFailure = _interopRequireDefault(require("./fixtures/popin-correction/popin-failure"));
|
|
20
|
+
|
|
21
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
22
|
+
|
|
23
|
+
(0, _ava.default)('should put revival to true if current step is extra life and a lesson has been viewed', t => {
|
|
24
|
+
const progressionId = (0, _playerStore.getCurrentProgressionId)(_popinExtraLife.default);
|
|
25
|
+
const state = (0, _set2.default)(['data', 'progressions', 'entities', progressionId, 'state', 'hasViewedAResourceAtThisStep'], true, _popinExtraLife.default);
|
|
26
|
+
const props = (0, _popinCorrection.popinCorrectionStateToProps)({
|
|
27
|
+
translate: _translate.mockTranslate
|
|
28
|
+
}, {
|
|
29
|
+
dispatch: _identity2.default
|
|
30
|
+
})(state);
|
|
31
|
+
t.true((0, _get2.default)('extraLifeGranted', props));
|
|
32
|
+
t.is(props.quit, undefined);
|
|
33
|
+
});
|
|
34
|
+
(0, _ava.default)('should put revival to false if current step is extra life and a lesson has not been viewed', t => {
|
|
35
|
+
const state = Object.freeze(_popinExtraLife.default);
|
|
36
|
+
const props = (0, _popinCorrection.popinCorrectionStateToProps)({
|
|
37
|
+
translate: _translate.mockTranslate
|
|
38
|
+
}, {
|
|
39
|
+
dispatch: _identity2.default
|
|
40
|
+
})(state);
|
|
41
|
+
t.false((0, _get2.default)('extraLifeGranted', props));
|
|
42
|
+
t.is((0, _get2.default)('quit.cta.title', props), '__Quit');
|
|
43
|
+
t.is(props.header.type, 'popinCorrection');
|
|
44
|
+
t.deepEqual((0, _get2.default)('overlay', props), {
|
|
45
|
+
title: '__Bonus!',
|
|
46
|
+
text: '__Get an extra life by viewing the lesson',
|
|
47
|
+
lifeAmount: 1
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
(0, _ava.default)('should put revival to false if current step is not extra life, even if lesson has been viewed', t => {
|
|
51
|
+
const progressionId = (0, _playerStore.getCurrentProgressionId)(_popinFailure.default);
|
|
52
|
+
const state = (0, _set2.default)(['data', 'progressions', 'entities', progressionId, 'state', 'hasViewedAResourceAtThisStep'], true, _popinFailure.default);
|
|
53
|
+
const props = (0, _popinCorrection.popinCorrectionStateToProps)({
|
|
54
|
+
translate: _translate.mockTranslate
|
|
55
|
+
}, {
|
|
56
|
+
dispatch: _identity2.default
|
|
57
|
+
})(state);
|
|
58
|
+
t.false((0, _get2.default)('extraLifeGranted', props));
|
|
59
|
+
t.is(props.header.type, 'popinCorrection');
|
|
60
|
+
t.is(props.gameOver, true);
|
|
61
|
+
t.is(props.quit, undefined);
|
|
62
|
+
t.is(props.overlay, undefined);
|
|
63
|
+
});
|
|
64
|
+
(0, _ava.default)('should return lives', t => {
|
|
65
|
+
const progressionId = (0, _playerStore.getCurrentProgressionId)(_popinFailure.default);
|
|
66
|
+
let state = (0, _set2.default)(['data', 'progressions', 'entities', progressionId, 'state', 'livesDisabled'], false, _popinExtraLife.default);
|
|
67
|
+
state = (0, _set2.default)(['data', 'progressions', 'entities', progressionId, 'state', 'lives'], 42, _popinExtraLife.default);
|
|
68
|
+
const props = (0, _popinCorrection.popinCorrectionStateToProps)({
|
|
69
|
+
translate: _translate.mockTranslate
|
|
70
|
+
}, {
|
|
71
|
+
dispatch: _identity2.default
|
|
72
|
+
})(state);
|
|
73
|
+
t.is(props.header.lives, 42);
|
|
74
|
+
});
|
|
75
|
+
(0, _ava.default)('should return empty lives if disabled', t => {
|
|
76
|
+
const progressionId = (0, _playerStore.getCurrentProgressionId)(_popinFailure.default);
|
|
77
|
+
const state = (0, _set2.default)(['data', 'progressions', 'entities', progressionId, 'state', 'livesDisabled'], true, _popinExtraLife.default);
|
|
78
|
+
const props = (0, _popinCorrection.popinCorrectionStateToProps)({
|
|
79
|
+
translate: _translate.mockTranslate
|
|
80
|
+
}, {
|
|
81
|
+
dispatch: _identity2.default
|
|
82
|
+
})(state);
|
|
83
|
+
t.is(props.header.lives, null);
|
|
84
|
+
});
|
|
85
|
+
//# sourceMappingURL=popin-correction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popin-correction.js","names":["test","t","progressionId","getCurrentProgressionId","popinExtraLife","state","props","popinCorrectionStateToProps","translate","mockTranslate","dispatch","true","is","quit","undefined","Object","freeze","false","header","type","deepEqual","title","text","lifeAmount","popinFailure","gameOver","overlay","lives"],"sources":["../../../src/map-state-to-props/test/popin-correction.js"],"sourcesContent":["import test from 'ava';\nimport {get, set, identity} from 'lodash/fp';\n\nimport {mockTranslate} from '@coorpacademy/translate';\nimport {getCurrentProgressionId} from '@coorpacademy/player-store';\nimport {popinCorrectionStateToProps} from '../popin-correction';\nimport popinExtraLife from './fixtures/popin-correction/popin-extra-life';\nimport popinFailure from './fixtures/popin-correction/popin-failure';\n\ntest('should put revival to true if current step is extra life and a lesson has been viewed', t => {\n const progressionId = getCurrentProgressionId(popinExtraLife);\n const state = set(\n ['data', 'progressions', 'entities', progressionId, 'state', 'hasViewedAResourceAtThisStep'],\n true,\n popinExtraLife\n );\n const props = popinCorrectionStateToProps(\n {translate: mockTranslate},\n {dispatch: identity}\n )(state);\n\n t.true(get('extraLifeGranted', props));\n t.is(props.quit, undefined);\n});\n\ntest('should put revival to false if current step is extra life and a lesson has not been viewed', t => {\n const state = Object.freeze(popinExtraLife);\n const props = popinCorrectionStateToProps(\n {translate: mockTranslate},\n {dispatch: identity}\n )(state);\n\n t.false(get('extraLifeGranted', props));\n t.is(get('quit.cta.title', props), '__Quit');\n t.is(props.header.type, 'popinCorrection');\n t.deepEqual(get('overlay', props), {\n title: '__Bonus!',\n text: '__Get an extra life by viewing the lesson',\n lifeAmount: 1\n });\n});\n\ntest('should put revival to false if current step is not extra life, even if lesson has been viewed', t => {\n const progressionId = getCurrentProgressionId(popinFailure);\n const state = set(\n ['data', 'progressions', 'entities', progressionId, 'state', 'hasViewedAResourceAtThisStep'],\n true,\n popinFailure\n );\n const props = popinCorrectionStateToProps(\n {translate: mockTranslate},\n {dispatch: identity}\n )(state);\n\n t.false(get('extraLifeGranted', props));\n t.is(props.header.type, 'popinCorrection');\n t.is(props.gameOver, true);\n t.is(props.quit, undefined);\n t.is(props.overlay, undefined);\n});\n\ntest('should return lives', t => {\n const progressionId = getCurrentProgressionId(popinFailure);\n let state = set(\n ['data', 'progressions', 'entities', progressionId, 'state', 'livesDisabled'],\n false,\n popinExtraLife\n );\n state = set(\n ['data', 'progressions', 'entities', progressionId, 'state', 'lives'],\n 42,\n popinExtraLife\n );\n const props = popinCorrectionStateToProps(\n {translate: mockTranslate},\n {dispatch: identity}\n )(state);\n\n t.is(props.header.lives, 42);\n});\n\ntest('should return empty lives if disabled', t => {\n const progressionId = getCurrentProgressionId(popinFailure);\n const state = set(\n ['data', 'progressions', 'entities', progressionId, 'state', 'livesDisabled'],\n true,\n popinExtraLife\n );\n const props = popinCorrectionStateToProps(\n {translate: mockTranslate},\n {dispatch: identity}\n )(state);\n\n t.is(props.header.lives, null);\n});\n"],"mappings":"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"}
|