UNPKG

@coorpacademy/progression-engine

Version:

100 lines (99 loc) 3.02 kB
"use strict"; var _filter2 = _interopRequireDefault(require("lodash/fp/filter")); var _omit2 = _interopRequireDefault(require("lodash/fp/omit")); var _ava = _interopRequireDefault(require("ava")); var _config = require("../../config"); var _ = require(".."); var _slides = _interopRequireDefault(require("./fixtures/slides")); var _getSlide = _interopRequireDefault(require("./helpers/get-slide")); var _states = require("./fixtures/states"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const config = (0, _config.getConfig)({ ref: 'learner', version: '1' }); const availableContent = [{ ref: '1.A1', slides: (0, _filter2.default)({ chapter_id: '1.A1' }, _slides.default), rules: null }, { ref: '2.A1', slides: (0, _filter2.default)({ chapter_id: '2.A1' }, _slides.default), rules: null }]; (0, _ava.default)('should switch chapters when user has answered `config.slidesToComplete` number of slides of a chapter', t => { const state = Object.freeze({ ..._states.stateBeforeGettingNextContent, nextContent: { type: 'slide', ref: '1.A1.4' }, slides: ['1.A1.1', '1.A1.2', '1.A1.3'] }); const currentSlide = (0, _getSlide.default)(_slides.default, state.nextContent); const partialAction = { type: 'answer', payload: { answer: [], content: state.nextContent, godMode: true } }; const result = (0, _.computeNextStepAfterAnswer)(config, state, availableContent, currentSlide, partialAction); if (!result) { throw new Error('action should not be falsy'); } t.deepEqual((0, _omit2.default)(['payload.nextContent.ref'], result), { type: 'answer', payload: { answer: [], content: state.nextContent, godMode: true, nextContent: { type: 'slide' }, instructions: null, isCorrect: true } }); t.regex(result.payload.nextContent.ref, /^2\.A1\.\d+$/); }); (0, _ava.default)('should return the success endpoint when user has answered `config.slidesToComplete` number of slides of every chapter', t => { const state = Object.freeze({ ..._states.stateBeforeGettingNextContent, nextContent: { type: 'slide', ref: '2.A1.4' }, slides: ['1.A1.1', '1.A1.2', '1.A1.3', '1.A1.4', '2.A1.1', '2.A1.2', '2.A1.3'] }); const currentSlide = (0, _getSlide.default)(_slides.default, state.nextContent); const partialAction = { type: 'answer', payload: { answer: [], content: state.nextContent, godMode: true } }; const result = (0, _.computeNextStepAfterAnswer)(config, state, availableContent, currentSlide, partialAction); t.deepEqual(result, { type: 'answer', payload: { answer: [], content: state.nextContent, godMode: true, nextContent: { ref: 'successExitNode', type: 'success' }, instructions: null, isCorrect: true } }); }); //# sourceMappingURL=compute-next-step-after-answer.learner.js.map