@coorpacademy/progression-engine
Version:
105 lines (102 loc) • 4.32 kB
JavaScript
;
var _ava = _interopRequireDefault(require("ava"));
var _config = require("../config");
var _checkAnswer = _interopRequireDefault(require("../check-answer"));
var _checkAnswerCorrectness = _interopRequireDefault(require("../check-answer-correctness"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const config = (0, _config.getConfig)({
ref: 'microlearning',
version: 'latest'
});
// eslint-disable-next-line flowtype/no-weak-types
function checkBothMethods(t, expected, question, givenAnswer) {
t.is((0, _checkAnswerCorrectness.default)(config, question, givenAnswer).isCorrect, expected);
t.is((0, _checkAnswer.default)(config, question, givenAnswer), expected);
}
(0, _ava.default)("should return the value of `isCorrect` in checkAnswerCorrectness's result (basic)", t => {
const question = {
type: 'basic',
content: {
answers: [['guillaume tell'], ['tell'], ['guillaume'], ['tel']],
maxTypos: undefined
}
};
checkBothMethods(t, true, question, ['guillaume tell']);
checkBothMethods(t, true, question, ['guillaume']);
checkBothMethods(t, true, question, ['tell']);
checkBothMethods(t, true, question, ['GUILLaume']);
checkBothMethods(t, true, question, ['guillaume']);
checkBothMethods(t, false, question, ['guilluaem']);
checkBothMethods(t, true, question, ['XXXXguillaumeXXXX']);
checkBothMethods(t, true, question, ['XXXXguILLAumeXXXX']);
checkBothMethods(t, false, question, ['XXXXXXguillaume']);
checkBothMethods(t, false, question, ['guillaumeXXXXXX']);
});
(0, _ava.default)("should return the value of `isCorrect` in checkAnswerCorrectness's result (qcm)", t => {
const question = {
type: 'qcm',
content: {
choices: [],
answers: [['answer1', 'answer3'], ['answer2', 'answer4'], ['answer1', 'answer4']]
}
};
checkBothMethods(t, true, question, ['answer1', 'answer3']);
checkBothMethods(t, true, question, ['answer2', 'answer4']);
checkBothMethods(t, true, question, ['answer1', 'answer4']);
checkBothMethods(t, true, question, ['answer4', 'answer1']);
checkBothMethods(t, false, question, ['answer1', 'answer2']);
});
(0, _ava.default)("should return the value of `isCorrect` in checkAnswerCorrectness's result (qcmDrag, matchOrder=true)", t => {
const question = {
type: 'qcmDrag',
content: {
matchOrder: true,
answers: [['answer1', 'answer3'], ['answer2', 'answer4'], ['answer1', 'answer4']]
}
};
checkBothMethods(t, true, question, ['answer1', 'answer3']);
checkBothMethods(t, true, question, ['answer2', 'answer4']);
checkBothMethods(t, true, question, ['answer1', 'answer4']);
checkBothMethods(t, false, question, ['answer4', 'answer1']);
checkBothMethods(t, false, question, ['answer1', 'answer2']);
});
(0, _ava.default)("should return the value of `isCorrect` in checkAnswerCorrectness's result (qcmDrag, matchOrder=false)", t => {
const question = {
type: 'qcmDrag',
content: {
matchOrder: false,
answers: [['answer1', 'answer3'], ['answer2', 'answer4'], ['answer1', 'answer4']]
}
};
checkBothMethods(t, true, question, ['answer1', 'answer3']);
checkBothMethods(t, true, question, ['answer2', 'answer4']);
checkBothMethods(t, true, question, ['answer1', 'answer4']);
checkBothMethods(t, true, question, ['answer4', 'answer1']);
checkBothMethods(t, false, question, ['answer1', 'answer2']);
});
(0, _ava.default)("should return the value of `isCorrect` in checkAnswerCorrectness's result (slider)", t => {
const question = {
type: 'slider',
content: {
matchOrder: false,
answers: [['100'], ['200'], ['300']]
}
};
checkBothMethods(t, true, question, ['100']);
checkBothMethods(t, true, question, ['200']);
checkBothMethods(t, true, question, ['300']);
checkBothMethods(t, false, question, ['400']);
checkBothMethods(t, false, question, ['101']);
checkBothMethods(t, false, question, ['foo']);
});
(0, _ava.default)('should return true when the question has an unknown type', t => {
const question = {
type: 'unknown',
content: {
answers: []
}
};
// $FlowFixMe Test when type is unknown, which is prohibited by the type checker
checkBothMethods(t, true, question, []);
});
//# sourceMappingURL=check-answer.js.map