/** * @jest-environment jsdom */ import { getPagePathFromHash, parseNativeMenu } from "./parseNativeMenu"; describe("parseNativeMenu", () => { it("parses top-level items and nested folders", () => { document.body.innerHTML = `
`; const menu = document.getElementById("menu")!; const items = parseNativeMenu(menu); expect(items.map((i) => i.key)).toEqual(["home", "assessments"]); expect(items[0].betterseqta).toBe(true); expect(items[1].hasChildren).toBe(true); expect(items[1].children.map((c) => c.key)).toEqual([ "assessments-overview", "upcoming", ]); expect(items[1].children[0].label).toBe("Overview"); }); it("reads page path from hash", () => { expect(getPagePathFromHash("#?page=/timetable")).toBe("/timetable"); expect(getPagePathFromHash("#?page=/assessments/upcoming&x=1")).toBe( "/assessments/upcoming", ); }); it("ignores the custom Svelte sidebar list when parsing", () => { document.body.innerHTML = ` `; const menu = document.getElementById("menu")!; const items = parseNativeMenu(menu); expect(items.map((i) => i.key)).toEqual(["home"]); }); });