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 d434c24e04d56ebbcd5fc62d433310cf4eb19449
parent 16717447a40ffc6ba0701f224f0d233b0b3e8b39
Author: AsherMorgan <59518073+AsherMorgan@users.noreply.github.com>
Date:   Wed, 18 Nov 2020 08:42:03 -0800

Implement type subject filter.

Diffstat:
Mjs/settings.js | 27++++++++++++++++++++++++---
Mtests/test.settings.js | 34+++++++++++++++++++++++-----------
2 files changed, 47 insertions(+), 14 deletions(-)

diff --git a/js/settings.js b/js/settings.js @@ -95,7 +95,7 @@ let settings = Vue.component("settings", { */ getTenseSubjects: function(index) { // Set default filters - let filters = {"All Subjects":true, "Yo":true, "Tú":true, "Él":true, "Nosotros":true, "Ellos":true} + let filters = {"All Subjects":true, "Type":true, "Yo":true, "Tú":true, "Él":true, "Nosotros":true, "Ellos":true} if (this.verbFilters[index].tense === "Present Participles") { // Override filters @@ -104,8 +104,10 @@ let settings = Vue.component("settings", { filters["Él"] = false; filters["Nosotros"] = false; filters["Ellos"] = false; + } - // Reset subject + // Reset subject + if (this.verbFilters[index].tense === "Present Participles" && this.verbFilters[index].subject !== "Type") { this.verbFilters[index].subject = "All Subjects"; } @@ -618,11 +620,21 @@ function GetVerbFilters(rawFilters) { switch (filter.tense) { case "present participles": filterIndex = 2; - inputIndex = 3; + switch (filter.subject) { + case "type": + inputIndex = filterIndex; + break; + default: + inputIndex = 3; + break; + } break; case "present tense": filterIndex = 4; switch (filter.subject) { + case "type": + inputIndex = filterIndex; + break; case "yo": inputIndex = 5; break; @@ -645,6 +657,9 @@ function GetVerbFilters(rawFilters) { case "preterite tense": filterIndex = 10; switch (filter.subject) { + case "type": + inputIndex = filterIndex; + break; case "yo": inputIndex = 11; break; @@ -667,6 +682,9 @@ function GetVerbFilters(rawFilters) { case "imperfect tense": filterIndex = 16; switch (filter.subject) { + case "type": + inputIndex = filterIndex; + break; case "yo": inputIndex = 17; break; @@ -689,6 +707,9 @@ function GetVerbFilters(rawFilters) { case "simple future tense": filterIndex = 22; switch (filter.subject) { + case "type": + inputIndex = filterIndex; + break; case "yo": inputIndex = 23; break; diff --git a/tests/test.settings.js b/tests/test.settings.js @@ -316,22 +316,17 @@ describe("Settings", function() { it("Should not change selection if available", function() { // Initialize filters Settings.verbFilters = [ - {"tense":"Preterite Tense", "subject":"Yo", "type":"All Types"} + {"tense":"Present Participles", "subject":"Type", "type":"All Types"}, + {"tense":"Preterite Tense", "subject":"Yo", "type":"All Types"}, ] // Get filters - let filters = Settings.getTenseSubjects(0); - - // Assert filters are correct - expect(filters["All Subjects"]).to.equal(true); - expect(filters["Yo"]).to.equal(true); - expect(filters["Tú"]).to.equal(true); - expect(filters["Él"]).to.equal(true); - expect(filters["Nosotros"]).to.equal(true); - expect(filters["Ellos"]).to.equal(true); + Settings.getTenseSubjects(0); + Settings.getTenseSubjects(1); // Assert selection not changed - expect(Settings.verbFilters[0]["subject"]).to.equal("Yo"); + expect(Settings.verbFilters[0].subject).to.equal("Type"); + expect(Settings.verbFilters[1].subject).to.equal("Yo"); }); }); @@ -905,6 +900,23 @@ describe("Settings", function() { }); describe("Subject filters", function() { + it("Should correctly filter type subjects", function() { + // Initialize expected + let expected = [ + {set:"Verbs", outputIndex:0, inputIndex:02, filterIndex:02, filterValue:".*"}, + {set:"Verbs", outputIndex:0, inputIndex:04, filterIndex:04, filterValue:".*"}, + {set:"Verbs", outputIndex:0, inputIndex:10, filterIndex:10, filterValue:".*"}, + {set:"Verbs", outputIndex:0, inputIndex:16, filterIndex:16, filterValue:".*"}, + {set:"Verbs", outputIndex:0, inputIndex:22, filterIndex:22, filterValue:".*"}, + ]; + + // Filter verbs + let actual = GetVerbFilters([{tense:"all tenses", subject:"type", type:"all types", direction:"Eng. => Conj."}]); + + // Assert filtered verbs are correct + expect(actual).to.have.deep.members(expected); + }); + it("Should correctly filter yo subjects", function() { // Initialize expected let expected = [