diff --git a/ui/package.json b/ui/package.json index 1b3442bb2..a31d89c90 100644 --- a/ui/package.json +++ b/ui/package.json @@ -69,8 +69,8 @@ }, "jest": { "collectCoverageFrom": [ - "src/**/*.{js,jsx}", - "!src/**/*.stories.{js,jsx}" + "src/**/*.{js,jsx,tsx}", + "!src/**/*.stories.{js,jsx,tsx}" ] }, "devDependencies": { diff --git a/ui/src/AppBoot.js b/ui/src/AppBoot.js index bf60eb3ab..c43f94869 100644 --- a/ui/src/AppBoot.js +++ b/ui/src/AppBoot.js @@ -51,12 +51,17 @@ const ParseDefaultFilters = settingsElement => { return defaultFilters; }; -const ParseUIDefaults = b64data => { - const decoded = Buffer.from(b64data, "base64").toString("ascii"); +const ParseUIDefaults = defaultsElement => { + if (defaultsElement === null) { + return null; + } + const decoded = Buffer.from(defaultsElement.innerHTML, "base64").toString( + "ascii" + ); try { return JSON.parse(decoded); } catch { - return undefined; + return null; } }; diff --git a/ui/src/AppBoot.test.js b/ui/src/AppBoot.test.js index e42a84cc3..51d95a70b 100644 --- a/ui/src/AppBoot.test.js +++ b/ui/src/AppBoot.test.js @@ -138,12 +138,17 @@ describe("ParseDefaultFilters()", () => { describe("ParseUIDefaults()", () => { it("parses base64 encoded JSON with defaults", () => { - const uiDefaults = ParseUIDefaults(DefaultsBase64); + const uiDefaults = ParseUIDefaults({ innerHTML: DefaultsBase64 }); expect(uiDefaults).toStrictEqual(DefaultsObject); }); - it("returns undefined on invalid JSON", () => { - const uiDefaults = ParseUIDefaults("e3h4eC9mZgo="); - expect(uiDefaults).toBeUndefined(); + it("returns null on null element", () => { + const uiDefaults = ParseUIDefaults(null); + expect(uiDefaults).toBeNull(); + }); + + it("returns null on invalid JSON", () => { + const uiDefaults = ParseUIDefaults({ innerHTML: "e3h4eC9mZgo=" }); + expect(uiDefaults).toBeNull(); }); }); diff --git a/ui/src/index.test.js b/ui/src/index.test.js index 330f8c64c..a836de339 100644 --- a/ui/src/index.test.js +++ b/ui/src/index.test.js @@ -1,11 +1,45 @@ import { EmptyAPIResponse } from "__mocks__/Fetch"; import { DefaultsBase64 } from "__mocks__/Defaults"; -it("renders without crashing", () => { - jest.spyOn(document, "getElementById").mockImplementationOnce(() => { - return { - innerHTML: `