test functions implemented

This commit is contained in:
jadeddelta 2022-09-22 13:42:08 -04:00
parent c17572b5ff
commit 890c9bd563
3 changed files with 64 additions and 12 deletions

View File

@ -25,7 +25,7 @@
// another example with checking if all the blanks are filled in // another example with checking if all the blanks are filled in
timeline.push({ timeline.push({
type: jsPsychCloze, type: jsPsychCloze,
text: 'The %% is the largest terrestrial mammal. It lives in both %% and %%.', text: 'Science notebooks have a %%-colored front cover. Math notebooks have a %%-colored front cover.',
check_blanks: true, check_blanks: true,
mistake_fn: function () { alert("You have not filled in all the blanks!"); } mistake_fn: function () { alert("You have not filled in all the blanks!"); }
}); });

View File

@ -73,6 +73,20 @@ describe("cloze", () => {
await expectFinished(); await expectFinished();
}); });
test("ends trial on button click when all answers are checked for completion and are complete", async () => {
const { expectFinished } = await startTimeline([
{
type: cloze,
text: "This is a %cloze% text.",
check_blanks: true,
},
]);
getInputElementById("input0").value = "filler";
clickTarget(document.querySelector("#finish_cloze_button"));
await expectFinished();
});
test("does not end trial on button click when answers are checked and not correct", async () => { test("does not end trial on button click when answers are checked and not correct", async () => {
const { expectRunning } = await startTimeline([ const { expectRunning } = await startTimeline([
{ {
@ -87,6 +101,20 @@ describe("cloze", () => {
await expectRunning(); await expectRunning();
}); });
test("does not end trial on button click when answers are checked for completion and some are missing", async () => {
const { expectRunning } = await startTimeline([
{
type: cloze,
text: "This is a %cloze% text.",
check_answers: true,
},
]);
getInputElementById("input0").value = "";
clickTarget(document.querySelector("#finish_cloze_button"));
await expectRunning();
});
test("does not call mistake function on button click when answers are checked and correct", async () => { test("does not call mistake function on button click when answers are checked and correct", async () => {
const mistakeFn = jest.fn(); const mistakeFn = jest.fn();
@ -104,6 +132,23 @@ describe("cloze", () => {
expect(mistakeFn).not.toHaveBeenCalled(); expect(mistakeFn).not.toHaveBeenCalled();
}); });
test("does not call mistake function on button click when answers are checked for completion and are complete", async () => {
const mistakeFn = jest.fn();
await startTimeline([
{
type: cloze,
text: "This is a %cloze% text.",
check_blanks: true,
mistake_fn: mistakeFn,
},
]);
getInputElementById("input0").value = "cloze";
clickTarget(document.querySelector("#finish_cloze_button"));
expect(mistakeFn).not.toHaveBeenCalled();
});
test("calls mistake function on button click when answers are checked and not correct", async () => { test("calls mistake function on button click when answers are checked and not correct", async () => {
const mistakeFn = jest.fn(); const mistakeFn = jest.fn();
@ -121,6 +166,23 @@ describe("cloze", () => {
expect(mistakeFn).toHaveBeenCalled(); expect(mistakeFn).toHaveBeenCalled();
}); });
test("calls mistake function on button click when answers are checked for completion and are not complete", async () => {
const mistakeFn = jest.fn();
await startTimeline([
{
type: cloze,
text: "This is a %cloze% text.",
check_answers: true,
mistake_fn: mistakeFn,
},
]);
getInputElementById("input0").value = "";
clickTarget(document.querySelector("#finish_cloze_button"));
expect(mistakeFn).toHaveBeenCalled();
});
test("response data is stored as an array", async () => { test("response data is stored as an array", async () => {
const { getData, getHTML } = await startTimeline([ const { getData, getHTML } = await startTimeline([
{ {

View File

@ -89,7 +89,7 @@ class ClozePlugin implements JsPsychPlugin<Info> {
} }
} }
if (trial.check_blanks) { if (trial.check_blanks) {
if (answers[i].trim() === "") { if (answers[i] === "") {
answers_filled = false; answers_filled = false;
} }
} }
@ -105,16 +105,6 @@ class ClozePlugin implements JsPsychPlugin<Info> {
display_element.innerHTML = ""; display_element.innerHTML = "";
this.jsPsych.finishTrial(trial_data); this.jsPsych.finishTrial(trial_data);
} }
// if (!trial.check_answers || (trial.check_answers && answers_correct)) {
// var trial_data = {
// response: answers,
// };
// display_element.innerHTML = "";
// this.jsPsych.finishTrial(trial_data);
// } else {
// trial.mistake_fn();
// }
}; };
display_element.innerHTML += display_element.innerHTML +=