@coorpacademy/progression-engine
Version:
80 lines (79 loc) • 5.52 kB
JavaScript
"use strict";
var _ava = _interopRequireDefault(require("ava"));
var _config = require("../config");
var _assertCheckAnswerCorrectness = require("./helpers/assert-check-answer-correctness");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const config = (0, _config.getConfig)({
ref: 'microlearning',
version: 'latest'
});
function createQuestion(matchOrder, answers) {
return {
type: 'qcmDrag',
content: {
matchOrder,
answers
}
};
}
[].forEach(bool => {
(0, _ava.default)(`should return true when the given answer is in the accepted answers (matchOrder=${bool.toString()})`, t => {
const question = createQuestion(bool, [['answer1', 'answer3'], ['answer2', 'answer4'], ['answer1', 'answer4']]);
(0, _assertCheckAnswerCorrectness.assertCorrect)(t, config, question, ['answer1', 'answer3']);
(0, _assertCheckAnswerCorrectness.assertCorrect)(t, config, question, ['answer2', 'answer4']);
(0, _assertCheckAnswerCorrectness.assertCorrect)(t, config, question, ['answer1', 'answer4']);
});
(0, _ava.default)(`should return false when the given answer does not have the same case as the accepted answers (matchOrder=${bool.toString()})`, t => {
const question = createQuestion(bool, [['answer2']]);
(0, _assertCheckAnswerCorrectness.assertIncorrect)(t, config, question, ['ANSWER2'], [false]);
});
(0, _ava.default)(`should return false when the given answer is not in the accepted answers (matchOrder=${bool.toString()})`, t => {
const question = createQuestion(bool, [['answer1', 'answer3'], ['answer2', 'answer4'], ['answer1', 'answer4']]);
(0, _assertCheckAnswerCorrectness.assertIncorrect)(t, config, question, ['answer1', 'answer2'], [true, false]);
if (bool) {
(0, _assertCheckAnswerCorrectness.assertIncorrect)(t, config, question, ['answer2', 'answer1'], [true, false]);
(0, _assertCheckAnswerCorrectness.assertIncorrect)(t, config, question, ['answer3', 'answer4'], [false, true]);
} else {
(0, _assertCheckAnswerCorrectness.assertIncorrect)(t, config, question, ['answer2', 'answer1'], [false, true]);
(0, _assertCheckAnswerCorrectness.assertIncorrect)(t, config, question, ['answer3', 'answer4'], [true, false]);
}
});
(0, _ava.default)(`should return false when the given answer has more elements that the accepted answers (matchOrder=${bool.toString()})`, t => {
const question = createQuestion(bool, [['answer1', 'answer3'], ['answer2', 'answer4'], ['answer1', 'answer4']]);
(0, _assertCheckAnswerCorrectness.assertIncorrect)(t, config, question, ['answer1', 'answer3', 'answer2'], [true, true, false]);
if (bool) {
(0, _assertCheckAnswerCorrectness.assertIncorrect)(t, config, question, ['answer1', 'answer5', 'answer3'], [true, false, false]);
} else {
(0, _assertCheckAnswerCorrectness.assertIncorrect)(t, config, question, ['answer1', 'answer5', 'answer3'], [true, false, true]);
}
});
(0, _ava.default)(`should return false when the given answer has less elements that the accepted answers (matchOrder=${bool.toString()})`, t => {
const question = createQuestion(bool, [['answer1', 'answer3'], ['answer2', 'answer4'], ['answer1', 'answer4']]);
(0, _assertCheckAnswerCorrectness.assertIncorrect)(t, config, question, ['answer1'], [true]);
(0, _assertCheckAnswerCorrectness.assertIncorrect)(t, config, question, ['answer2'], [true]);
(0, _assertCheckAnswerCorrectness.assertIncorrect)(t, config, question, ['answer5'], [false]);
(0, _assertCheckAnswerCorrectness.assertIncorrect)(t, config, question, [], []);
});
(0, _ava.default)(`should return false when the given answer is different but looks like the accepted answers (matchOrder=${bool.toString()})`, t => {
const question = createQuestion(bool, [['answer2']]);
(0, _assertCheckAnswerCorrectness.assertIncorrect)(t, config, question, ['answe2r'], [false]);
});
});
(0, _ava.default)('should return false when the given answer is in the accepted answers but values but in a different order (matchOrder=true)', t => {
const question = createQuestion(true, [['answer1', 'answer3'], ['answer2', 'answer4'], ['answer1', 'answer4']]);
(0, _assertCheckAnswerCorrectness.assertIncorrect)(t, config, question, ['answer3', 'answer1'], [false, false]);
(0, _assertCheckAnswerCorrectness.assertIncorrect)(t, config, question, ['answer4', 'answer2'], [false, false]);
(0, _assertCheckAnswerCorrectness.assertIncorrect)(t, config, question, ['answer4', 'answer1'], [false, false]);
});
(0, _ava.default)('should return true when the given answer is in the accepted answers but values but in a different order (matchOrder=false)', t => {
const question = createQuestion(false, [['answer1', 'answer3'], ['answer2', 'answer4'], ['answer1', 'answer4']]);
(0, _assertCheckAnswerCorrectness.assertCorrect)(t, config, question, ['answer3', 'answer1']);
(0, _assertCheckAnswerCorrectness.assertCorrect)(t, config, question, ['answer4', 'answer2']);
(0, _assertCheckAnswerCorrectness.assertCorrect)(t, config, question, ['answer4', 'answer1']);
});
(0, _ava.default)('should return false when there are no correct answers', t => {
const question = createQuestion(false, []);
(0, _assertCheckAnswerCorrectness.assertIncorrectEmptyAnswer)(t, config, question, []);
(0, _assertCheckAnswerCorrectness.assertIncorrectEmptyAnswer)(t, config, question, ['foo']);
});
//# sourceMappingURL=check-answer-correctness.qcm-drag.js.map