test.filtersPage.js (17014B)
1 // filter-input component 2 describe("FilterInput", function() { 3 let FilterInput; 4 beforeEach(function() { 5 // Create filtersInput component 6 FilterInput = new filterInput(); 7 }); 8 9 describe("Created lifecycle hook", function() { 10 it("Category should be 'verbs'", function() { 11 expect(FilterInput.category).to.equal("verbs"); 12 }); 13 14 it("VerbFilters should be empty", function() { 15 expect(FilterInput.verbFilters).to.deep.equal([]); 16 }); 17 18 it("VocabFilters should be empty", function() { 19 expect(FilterInput.vocabFilters).to.deep.equal([]); 20 }); 21 }); 22 23 describe("Value computed property", function() { 24 it("Should return verb filters if category is 'verbs'", function() { 25 // Initialize variables 26 FilterInput.category = "verbs"; 27 FilterInput.verbFilters = "verb-filters"; 28 FilterInput.vocabFilters = "vocab-filters"; 29 30 // Assert value returns verb filters 31 expect(FilterInput.value, "verb-filters"); 32 }); 33 34 it("Should return vocab filters if category is 'vocab'", function() { 35 // Initialize variables 36 FilterInput.category = "vocab"; 37 FilterInput.verbFilters = "verb-filters"; 38 FilterInput.vocabFilters = "vocab-filters"; 39 40 // Assert value returns vocab filters 41 expect(FilterInput.value, "vocab-filters"); 42 }); 43 }); 44 45 describe("Value watch", function() { 46 it("Should emit input event", async function() { 47 // Initialize variables 48 FilterInput.category = "verbs"; 49 FilterInput.verbFilters = ["filter1"]; 50 51 // Override $emit method 52 let event = ""; 53 let event_args; 54 FilterInput.$emit = function(name, value) { 55 event = name; 56 event_args = value; 57 }; 58 59 // Edit verb filters 60 FilterInput.verbFilters.push("filter2"); 61 await FilterInput.$nextTick(); 62 63 // Assert event emited 64 expect(event).to.equal("input"); 65 expect(event_args).to.have.deep.members(["filter1", "filter2"]); 66 }); 67 }); 68 69 describe("AddFilter method", function() { 70 it("Should add a verb filter if category is 'verbs'", function() { 71 // Initialize variables 72 FilterInput.category = "verbs"; 73 FilterInput.verbFilters = [] 74 FilterInput.vocabFilters = [] 75 expect(FilterInput.verbFilters.length).to.equal(0); 76 expect(FilterInput.vocabFilters.length).to.equal(0); 77 78 // Override getSettings method 79 let old_getSettings = getSettings 80 getSettings = function() { 81 let settings = old_getSettings(); 82 settings.defaultFilters.verbs = {tense:"Present Tense", type:"Regular", subject:"Yo", direction:"Esp. → Conj."}; 83 return settings; 84 }; 85 86 // Add filter 87 FilterInput.AddFilter(); 88 89 // Restore getSettings method 90 getSettings = old_getSettings; 91 92 // Assert filter added 93 expect(FilterInput.verbFilters).to.have.deep.members([ 94 {tense:"Present Tense", type:"Regular", subject:"Yo", direction:"Esp. → Conj."}, 95 ]); 96 expect(FilterInput.vocabFilters).to.have.deep.members([]); 97 }); 98 99 it("Should add a vocab filter if category is 'vocab'", function() { 100 // Initialize variables 101 FilterInput.category = "vocab"; 102 FilterInput.verbFilters = [] 103 FilterInput.vocabFilters = [] 104 expect(FilterInput.verbFilters.length).to.equal(0); 105 expect(FilterInput.vocabFilters.length).to.equal(0); 106 107 // Override getSettings method 108 let old_getSettings = getSettings 109 getSettings = function() { 110 let settings = old_getSettings(); 111 settings.defaultFilters.vocab = {category:"Childhood", type:"Adjectives", direction:"Eng. → Esp."}; 112 return settings; 113 }; 114 115 // Add filter 116 FilterInput.AddFilter(); 117 118 // Restore getSettings method 119 getSettings = old_getSettings; 120 121 // Assert filter added 122 expect(FilterInput.vocabFilters).to.have.deep.members([ 123 {category:"Childhood", type:"Adjectives", direction:"Eng. → Esp."}, 124 ]); 125 expect(FilterInput.verbFilters).to.have.deep.members([]); 126 }); 127 }); 128 129 describe("RemoveFilter method", function() { 130 it("Should remove the specified verb filter", function() { 131 // Initialize filters 132 FilterInput.category = "verbs"; 133 FilterInput.verbFilters = [ 134 "verb1", 135 "verb2", 136 "verb3", 137 ]; 138 FilterInput.vocabFilters = [ 139 "vocab1", 140 "vocab2", 141 "vocab3", 142 ]; 143 144 // Remove filter 145 FilterInput.RemoveFilter(1); 146 147 // Assert filter removed 148 expect(FilterInput.verbFilters.length).to.equal(2); 149 expect(FilterInput.verbFilters[0]).to.equal("verb1"); 150 expect(FilterInput.verbFilters[1]).to.equal("verb3"); 151 expect(FilterInput.vocabFilters.length).to.equal(3); 152 }); 153 154 it("Should remove the specified vocab filter", function() { 155 // Initialize filters 156 FilterInput.category = "vocab"; 157 FilterInput.verbFilters = [ 158 "verb1", 159 "verb2", 160 "verb3", 161 ]; 162 FilterInput.vocabFilters = [ 163 "vocab1", 164 "vocab2", 165 "vocab3", 166 ]; 167 168 // Remove filter 169 FilterInput.RemoveFilter(1); 170 171 // Assert filter removed 172 expect(FilterInput.verbFilters.length).to.equal(3); 173 expect(FilterInput.vocabFilters.length).to.equal(2); 174 expect(FilterInput.vocabFilters[0]).to.equal("vocab1"); 175 expect(FilterInput.vocabFilters[1]).to.equal("vocab3"); 176 }); 177 }); 178 179 describe("GetTenseTypes method", function() { 180 it("Should be correct for All Tenses", function() { 181 // Initialize filters 182 FilterInput.verbFilters = [ 183 {tense:"All Types", type:"All Types"} 184 ] 185 186 // Get filters 187 let filters = FilterInput.getTenseTypes(0); 188 189 // Assert filters are correct 190 expect(filters["All Types"]).to.equal(true); 191 expect(filters["Reflexive"]).to.equal(true); 192 expect(filters["Regular"]).to.equal(true); 193 expect(filters["Nonregular"]).to.equal(true); 194 expect(filters["Stem Changing"]).to.equal(true); 195 expect(filters["Orthographic"]).to.equal(true); 196 expect(filters["Irregular"]).to.equal(true); 197 }); 198 199 it("Should be correct for Present Tense", function() { 200 // Initialize filters 201 FilterInput.verbFilters = [ 202 {tense:"Present Tense", type:"All Types"} 203 ] 204 205 // Get filters 206 let filters = FilterInput.getTenseTypes(0); 207 208 // Assert filters are correct 209 expect(filters["All Types"]).to.equal(true); 210 expect(filters["Reflexive"]).to.equal(true); 211 expect(filters["Regular"]).to.equal(true); 212 expect(filters["Nonregular"]).to.equal(true); 213 expect(filters["Stem Changing"]).to.equal(true); 214 expect(filters["Orthographic"]).to.equal(false); 215 expect(filters["Irregular"]).to.equal(true); 216 }); 217 218 it("Should change selection if not available", function() { 219 // Initialize filters 220 FilterInput.verbFilters = [ 221 {tense:"Present Tense", type:"Orthographic"} 222 ] 223 224 // Get filters 225 let filters = FilterInput.getTenseTypes(0); 226 227 // Assert filters are correct 228 expect(filters["All Types"]).to.equal(true); 229 expect(filters["Reflexive"]).to.equal(true); 230 expect(filters["Regular"]).to.equal(true); 231 expect(filters["Nonregular"]).to.equal(true); 232 expect(filters["Stem Changing"]).to.equal(true); 233 expect(filters["Orthographic"]).to.equal(false); 234 expect(filters["Irregular"]).to.equal(true); 235 236 // Assert selection changed 237 expect(FilterInput.verbFilters[0]["type"]).to.equal("All Types"); 238 }); 239 240 it("Should not change selection if available", function() { 241 // Initialize filters 242 FilterInput.verbFilters = [ 243 {tense:"Preterite Tense", type:"Orthographic"} 244 ] 245 246 // Get filters 247 let filters = FilterInput.getTenseTypes(0); 248 249 // Assert filters are correct 250 expect(filters["All Types"]).to.equal(true); 251 expect(filters["Reflexive"]).to.equal(true); 252 expect(filters["Regular"]).to.equal(true); 253 expect(filters["Nonregular"]).to.equal(true); 254 expect(filters["Stem Changing"]).to.equal(true); 255 expect(filters["Orthographic"]).to.equal(true); 256 expect(filters["Irregular"]).to.equal(true); 257 258 // Assert selection not changed 259 expect(FilterInput.verbFilters[0]["type"]).to.equal("Orthographic"); 260 }); 261 }); 262 263 describe("GetTenseSubjects method", function() { 264 it("Should be correct for All Tenses", function() { 265 // Initialize filters 266 FilterInput.verbFilters = [ 267 {tense:"All Types", type:"All Types"} 268 ] 269 270 // Get filters 271 let filters = FilterInput.getTenseSubjects(0); 272 273 // Assert filters are correct 274 expect(filters["All Subjects"]).to.equal(true); 275 expect(filters["Yo"]).to.equal(true); 276 expect(filters["Tú"]).to.equal(true); 277 expect(filters["Él"]).to.equal(true); 278 expect(filters["Nosotros"]).to.equal(true); 279 expect(filters["Ellos"]).to.equal(true); 280 }); 281 282 it("Should be correct for Present Participles", function() { 283 // Initialize filters 284 FilterInput.verbFilters = [ 285 {tense:"Present Participles", subject:"All Subjects", type:"All Types"} 286 ] 287 288 // Get filters 289 let filters = FilterInput.getTenseSubjects(0); 290 291 // Assert filters are correct 292 expect(filters["All Subjects"]).to.equal(true); 293 expect(filters["Yo"]).to.equal(false); 294 expect(filters["Tú"]).to.equal(false); 295 expect(filters["Él"]).to.equal(false); 296 expect(filters["Nosotros"]).to.equal(false); 297 expect(filters["Ellos"]).to.equal(false); 298 }); 299 300 it("Should change selection if not available", function() { 301 // Initialize filters 302 FilterInput.verbFilters = [ 303 {tense:"Present Participles", subject:"Yo", type:"All Types"} 304 ] 305 306 // Get filters 307 let filters = FilterInput.getTenseSubjects(0); 308 309 // Assert filters are correct 310 expect(filters["All Subjects"]).to.equal(true); 311 expect(filters["Yo"]).to.equal(false); 312 expect(filters["Tú"]).to.equal(false); 313 expect(filters["Él"]).to.equal(false); 314 expect(filters["Nosotros"]).to.equal(false); 315 expect(filters["Ellos"]).to.equal(false); 316 317 // Assert selection changed 318 expect(FilterInput.verbFilters[0]["subject"]).to.equal("All Subjects"); 319 }); 320 321 it("Should not change selection if available", function() { 322 // Initialize filters 323 FilterInput.verbFilters = [ 324 {tense:"Present Participles", subject:"Type", type:"All Types"}, 325 {tense:"Preterite Tense", subject:"Yo", type:"All Types"}, 326 ] 327 328 // Get filters 329 FilterInput.getTenseSubjects(0); 330 FilterInput.getTenseSubjects(1); 331 332 // Assert selection not changed 333 expect(FilterInput.verbFilters[0].subject).to.equal("Type"); 334 expect(FilterInput.verbFilters[1].subject).to.equal("Yo"); 335 }); 336 }); 337 338 describe("GetCategoryFilters method", function() { 339 it("Should be correct for Verbs", function() { 340 // Initialize filters 341 FilterInput.vocabFilters = [ 342 {category:"Verbs", type:"All Definitions"} 343 ] 344 345 // Get filters 346 let filters = FilterInput.getCategoryFilters(0); 347 348 // Assert filters are correct 349 expect(filters["All Types"]).to.equal(true); 350 expect(filters["Adjectives"]).to.equal(false); 351 expect(filters["Nouns"]).to.equal(false); 352 expect(filters["Verbs"]).to.equal(false); 353 }); 354 355 it("Should be correct for sets with 1 type", function() { 356 // Initialize filters 357 FilterInput.vocabFilters = [ 358 {category:"Colors", type:"All Definitions"} 359 ] 360 361 // Get filters 362 let filters = FilterInput.getCategoryFilters(0); 363 364 // Assert filters are correct 365 expect(filters["All Types"]).to.equal(true); 366 expect(filters["Adjectives"]).to.equal(true); 367 expect(filters["Nouns"]).to.equal(false); 368 expect(filters["Verbs"]).to.equal(false); 369 }); 370 371 it("Should change selection if not available", function() { 372 // Initialize filters 373 FilterInput.vocabFilters = [ 374 {category:"Colors", type:"Verbs"} 375 ] 376 377 // Get filters 378 let filters = FilterInput.getCategoryFilters(0); 379 380 // Assert selection changed 381 expect(filters["All Types"]).to.equal(true); 382 expect(filters["Adjectives"]).to.equal(true); 383 expect(filters["Nouns"]).to.equal(false); 384 expect(filters["Verbs"]).to.equal(false); 385 expect(FilterInput.vocabFilters[0]["type"]).to.equal("All Types"); 386 }); 387 388 it("Should not change selection if available", function() { 389 // Initialize filters 390 FilterInput.vocabFilters = [ 391 {category:"Professions", type:"Verbs"} 392 ] 393 394 // Get filters 395 let filters = FilterInput.getCategoryFilters(0); 396 397 // Assert selection not changed 398 expect(filters["All Types"]).to.equal(true); 399 expect(filters["Adjectives"]).to.equal(false); 400 expect(filters["Nouns"]).to.equal(true); 401 expect(filters["Verbs"]).to.equal(true); 402 expect(FilterInput.vocabFilters[0]["type"]).to.equal("Verbs"); 403 }); 404 }); 405 }); 406 407 408 409 // filters-page component 410 describe("FiltersPage", function() { 411 let FiltersPage; 412 beforeEach(function() { 413 // Create filtersPage component 414 FiltersPage = new filtersPage(); 415 }); 416 417 describe("StartSession method", function() { 418 it("Should push quizzer page", function() { 419 // Override $router.push method 420 let push_args; 421 FiltersPage.$router = {push: function(args) { 422 push_args = args; 423 }}; 424 425 // Override $root.$data.data property 426 FiltersPage.$root = {$data: {data: {vocab: [ 427 ["English","Spanish","Type","Category"], 428 ["Hello","Hola","Type","Category"], 429 ]}}}; 430 431 // Initialize variables 432 FiltersPage.category = "vocab"; 433 FiltersPage.settings = { 434 promptType: "Text", // Required to prevent browser validation alerts 435 inputType: "Text", // Required to prevent browser validation alerts 436 testSetting: "testValue", 437 }; 438 FiltersPage.filters = [ 439 {category:"All Categories", type:"All Types", direction:"Eng. → Esp."} 440 ]; 441 442 // Call StartSession 443 FiltersPage.StartSession([1, 2, 3], 0); 444 445 // Assert event emited 446 expect(push_args).to.deep.equal({ 447 name: "quizzer", 448 params: { 449 startingPrompts: [["English", "Hello", "Spanish", "Hola"]], 450 startingIndex: 0, 451 settings: { 452 promptType: "Text", // Required to prevent browser validation alerts 453 inputType: "Text", // Required to prevent browser validation alerts 454 testSetting: "testValue", 455 }, 456 referer: FiltersPage.category, 457 } 458 }); 459 }); 460 }); 461 });