test.global.js (4750B)
1 describe("Global.js", function() { 2 describe("GetSettings method", function() { 3 it("Settings should be loaded", async function() { 4 // Save original setting from localStorage 5 let originalValue = localStorage.getItem("settings"); 6 7 // Set localStorage settings 8 let expected = { 9 darkTheme: true, 10 conjugationColors: true, 11 12 promptType: "Audio", 13 inputType: "Voice", 14 multiplePrompts: "Show one", 15 removeDuplicates: true, 16 17 onMissedPrompt: "Tell me", 18 repeatPrompts: "5 prompts later", 19 multipleAnswers: "Require any", 20 showDiff: "Never", 21 22 defaultFilters: { 23 verbs: {tense:"Present Tense", type:"Regular", subject:"Yo", direction:"Esp. → Conj."}, 24 vocab: {category:"Childhood", type:"Adjectives", direction:"Eng. → Esp."}, 25 }, 26 }; 27 localStorage.setItem("settings", JSON.stringify(expected)); 28 29 // Call getSettings 30 let settings = getSettings(); 31 32 // Assert settings loaded 33 expect(settings).to.deep.equal(expected); 34 35 // Restore original setting to localStorage 36 localStorage.setItem("settings", originalValue); 37 }); 38 39 it("Invalid individual settings should not be loaded", async function() { 40 // Save original setting from localStorage 41 let originalValue = localStorage.getItem("settings"); 42 43 // Set localStorage settings 44 localStorage.setItem("settings", "{\"promptType\":\"Audio\",\"inputType\":\"test\",\"onMissedPrompt\":null}") 45 46 // Call getSettings 47 let settings = getSettings(); 48 49 // Assert default settings loaded 50 expect(settings.promptType).to.equal("Audio"); // promptType wasn't invalid, so it should still be loaded 51 expect(settings.inputType).to.equal("Text"); 52 expect(settings.onMissedPrompt).to.equal("Correct me"); 53 expect(settings.repeatPrompts).to.equal("Never"); 54 55 // Restore original setting to localStorage 56 localStorage.setItem("settings", originalValue); 57 }); 58 59 it("Invalid JSON settings should not be loaded", async function() { 60 // Save original setting from localStorage 61 let originalValue = localStorage.getItem("settings"); 62 63 // Set localStorage settings 64 localStorage.setItem("settings", "asdf") 65 66 // Call getSettings 67 let settings = getSettings(); 68 69 // Assert default settings loaded 70 expect(settings).to.deep.equal({ 71 darkTheme: settings.darkTheme = (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches), 72 conjugationColors: true, 73 74 promptType: "Text", 75 inputType: "Text", 76 multiplePrompts: "Show together", 77 removeDuplicates: false, 78 79 onMissedPrompt: "Correct me", 80 repeatPrompts: "Never", 81 multipleAnswers: "Require all", 82 showDiff: "For single answers", 83 84 defaultFilters: { 85 verbs: {tense:"All Tenses", type:"All Types", subject:"All Subjects", direction:"Eng. → Conj."}, 86 vocab: {category:"All Categories", type:"All Types", direction:"Eng. ↔ Esp."}, 87 }, 88 }); 89 90 // Restore original setting to localStorage 91 localStorage.setItem("settings", originalValue); 92 }); 93 }); 94 95 describe("SetSettings method", function() { 96 it("Should update setting in localStorage", async function() { 97 // Save original setting from localStorage 98 let originalValue = localStorage.getItem("settings"); 99 100 // Set settings 101 let settings = { 102 darkTheme : "A", 103 conjugationColors: "B", 104 105 promptType : "C", 106 inputType : "D", 107 multiplePrompts : "E", 108 removeDuplicates : "F", 109 110 onMissedPrompt : "G", 111 repeatPrompts : "H", 112 multipleAnswers : "I", 113 showDiff: "J", 114 } 115 116 // Call setSettings 117 setSettings(settings); 118 119 // Assert localStorage setting updated 120 expect(localStorage.getItem("settings")).to.equal(JSON.stringify(settings)); 121 122 // Restore original setting to localStorage 123 localStorage.setItem("settings", originalValue); 124 }); 125 }); 126 });