import { describe, it, expect, beforeEach, vi } from "vitest"; import { readViewMode } from "./ViewModeToggle"; describe("readViewMode", () => { const store = new Map(); const mockLocalStorage = { getItem: vi.fn((key: string) => store.get(key) ?? null), setItem: vi.fn((key: string, value: string) => { store.set(key, value); }), removeItem: vi.fn((key: string) => { store.delete(key); }), clear: vi.fn(() => store.clear()), key: vi.fn(), length: 0, }; beforeEach(() => { store.clear(); vi.stubGlobal("localStorage", mockLocalStorage); }); it("returns fallback when key is missing", () => { expect(readViewMode("reports-viewmode-highlights")).toBe("chart"); }); it("returns 'chart' when stored value is 'chart'", () => { store.set("reports-viewmode-highlights", "chart"); expect(readViewMode("reports-viewmode-highlights")).toBe("chart"); }); it("returns 'table' when stored value is 'table'", () => { store.set("reports-viewmode-highlights", "table"); expect(readViewMode("reports-viewmode-highlights")).toBe("table"); }); it("ignores invalid stored values and returns fallback", () => { store.set("reports-viewmode-highlights", "bogus"); expect(readViewMode("reports-viewmode-highlights", "table")).toBe("table"); }); it("respects custom fallback when provided", () => { expect(readViewMode("reports-viewmode-compare", "table")).toBe("table"); }); });