@coorpacademy/progression-engine
Version:
100 lines (99 loc) • 3.02 kB
JavaScript
"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