import { afterEach, expect, it, vi } from "vitest"; import { readPreference, writePreference } from "../src/preferences"; afterEach(() => vi.unstubAllGlobals()); it("accepts only known presentation preferences", () => { const values = new Map([["hub-density", "arbitrary"]]); vi.stubGlobal("localStorage", { getItem: (key: string) => values.get(key) ?? null, setItem: (key: string, value: string) => values.set(key, value) }); expect(readPreference("hub-density", ["compact", "comfortable"], "comfortable")).toBe("comfortable"); writePreference("hub-density", "compact"); expect(readPreference("hub-density", ["compact", "comfortable"], "comfortable")).toBe("compact"); }); it("continues with safe defaults when storage is denied", () => { vi.stubGlobal("localStorage", { getItem: () => { throw new Error("storage denied"); }, setItem: () => { throw new Error("storage denied"); } }); expect(readPreference("hub-theme", ["dark", "light"], "dark")).toBe("dark"); expect(() => writePreference("hub-theme", "light")).not.toThrow(); });