spanish-quizzer

An app to quiz you on Spanish vocabulary and verb conjugations
git clone https://git.ashermorgan.net/spanish-quizzer/
Log | Files | Refs | README

commit d1e19fde6862f147cdbd3daf9dcd14c8feb601b9
parent 2785faf23ab90025b16162afb0ef968f8b435b89
Author: AsherMorgan <59518073+AsherMorgan@users.noreply.github.com>
Date:   Thu, 17 Dec 2020 10:40:43 -0800

Add option to repeat prompts 5 & 10 prompts later.

Diffstat:
Mjs/global.js | 2+-
Mjs/quizzer.js | 11+++++++----
Mjs/settingsInput.js | 1+
Mtests/test.quizzer.js | 46++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 55 insertions(+), 5 deletions(-)

diff --git a/js/global.js b/js/global.js @@ -110,7 +110,7 @@ function getSettings() { if (["Correct me", "Tell me", "Ignore it"].includes(parsedSettings.onMissedPrompt)) { settings.onMissedPrompt = parsedSettings.onMissedPrompt; } - if (["Never", "Immediately", "5 prompts later", "At the end"].includes(parsedSettings.repeatPrompts)) { + if (["Never", "Immediately", "5 prompts later", "5 & 10 prompts later", "At the end"].includes(parsedSettings.repeatPrompts)) { settings.repeatPrompts = parsedSettings.repeatPrompts; } if (["Show together", "Show separately", "Show one"].includes(parsedSettings.multiplePrompts)) { diff --git a/js/quizzer.js b/js/quizzer.js @@ -184,21 +184,24 @@ let quizzer = Vue.component("quizzer", { switch (this.settings.repeatPrompts) { case "Never": - // Don't repeat break; case "Immediately": - // Repeat imitiately this.index--; break; case "5 prompts later": - // Repeat 5 prompts later var temp = this.prompt; this.prompts.splice(this.index, 1); this.prompts.splice(this.index + 5, 0, temp); this.index--; break; + case "5 & 10 prompts later": + var temp = this.prompt; + this.prompts.splice(this.index, 1); + this.prompts.splice(this.index + 10, 0, temp); + this.prompts.splice(this.index + 5, 0, temp); + this.index--; + break; case "At the end": - // Repeat at end of Terms var temp = this.prompt; this.prompts.splice(this.index, 1); this.prompts.push(temp); diff --git a/js/settingsInput.js b/js/settingsInput.js @@ -54,6 +54,7 @@ let settingsInput = Vue.component("settingsInput", { <option>Never</option> <option>Immediately</option> <option>5 prompts later</option> + <option>5 & 10 prompts later</option> <option>At the end</option> </select> </div> diff --git a/tests/test.quizzer.js b/tests/test.quizzer.js @@ -339,6 +339,7 @@ describe("Quizzer", function() { // Assert prompts not changed expect(Quizzer.prompts[0]).to.have.members(["A1", "A2", "A3", "A4"]); expect(Quizzer.prompts[1]).to.have.members(["B1", "B2", "B3", "B4"]); + expect(Quizzer.prompts.length).to.equal(2); expect(Quizzer.index).to.equal(1); }); @@ -354,6 +355,7 @@ describe("Quizzer", function() { // Assert prompts not changed expect(Quizzer.prompts[0]).to.have.members(["A1", "A2", "A3", "A4"]); expect(Quizzer.prompts[1]).to.have.members(["B1", "B2", "B3", "B4"]); + expect(Quizzer.prompts.length).to.equal(2); expect(Quizzer.index).to.equal(1); }); @@ -369,6 +371,7 @@ describe("Quizzer", function() { // Assert prompts not changed expect(Quizzer.prompts[0]).to.have.members(["A1", "A2", "A3", "A4"]); expect(Quizzer.prompts[1]).to.have.members(["B1", "B2", "B3", "B4"]); + expect(Quizzer.prompts.length).to.equal(2); expect(Quizzer.index).to.equal(0); }); @@ -397,6 +400,48 @@ describe("Quizzer", function() { expect(Quizzer.prompts[4]).to.have.members(["F1", "F2", "F3", "F4"]); expect(Quizzer.prompts[5]).to.have.members(["A1", "A2", "A3", "A4"]); expect(Quizzer.prompts[6]).to.have.members(["G1", "G2", "G3", "G4"]); + expect(Quizzer.prompts.length).to.equal(7); + expect(Quizzer.index).to.equal(0); + }); + + it("Should only update prompts if repeatPrompts is 5 & 10 prompts later", function() { + // Initialize variables + Quizzer.prompts = [ + ["A1", "A2", "A3", "A4"], + ["B1", "B2", "B3", "B4"], + ["C1", "C2", "C3", "C4"], + ["D1", "D2", "D3", "D4"], + ["E1", "E2", "E3", "E4"], + ["F1", "F2", "F3", "F4"], + ["G1", "G2", "G3", "G4"], + ["H1", "H2", "H3", "H4"], + ["I1", "I2", "I3", "I4"], + ["J1", "J2", "J3", "J4"], + ["K1", "K2", "K3", "K4"], + ["L1", "L2", "L3", "L4"], + ]; + Quizzer.index = 0; + Quizzer.settings.repeatPrompts = "5 & 10 prompts later"; + + // Run Continue + Quizzer.Continue(); + + // Assert prompts not changed + console.info(Quizzer.prompts); + expect(Quizzer.prompts[00]).to.have.members(["B1", "B2", "B3", "B4"]); + expect(Quizzer.prompts[01]).to.have.members(["C1", "C2", "C3", "C4"]); + expect(Quizzer.prompts[02]).to.have.members(["D1", "D2", "D3", "D4"]); + expect(Quizzer.prompts[03]).to.have.members(["E1", "E2", "E3", "E4"]); + expect(Quizzer.prompts[04]).to.have.members(["F1", "F2", "F3", "F4"]); + expect(Quizzer.prompts[05]).to.have.members(["A1", "A2", "A3", "A4"]); + expect(Quizzer.prompts[06]).to.have.members(["G1", "G2", "G3", "G4"]); + expect(Quizzer.prompts[07]).to.have.members(["H1", "H2", "H3", "H4"]); + expect(Quizzer.prompts[08]).to.have.members(["I1", "I2", "I3", "I4"]); + expect(Quizzer.prompts[09]).to.have.members(["J1", "J2", "J3", "J4"]); + expect(Quizzer.prompts[10]).to.have.members(["K1", "K2", "K3", "K4"]); + expect(Quizzer.prompts[11]).to.have.members(["A1", "A2", "A3", "A4"]); + expect(Quizzer.prompts[12]).to.have.members(["L1", "L2", "L3", "L4"]); + expect(Quizzer.prompts.length).to.equal(13); expect(Quizzer.index).to.equal(0); }); @@ -425,6 +470,7 @@ describe("Quizzer", function() { expect(Quizzer.prompts[4]).to.have.members(["F1", "F2", "F3", "F4"]); expect(Quizzer.prompts[5]).to.have.members(["G1", "G2", "G3", "G4"]); expect(Quizzer.prompts[6]).to.have.members(["A1", "A2", "A3", "A4"]); + expect(Quizzer.prompts.length).to.equal(7); expect(Quizzer.index).to.equal(0); }); });