import { describe, expect, test } from "bun:test"; import { parseThemeQuery, resolveIncomingThemeMode, resolveStoredTheme, } from "./theme-sync"; describe("theme sync helpers", () => { test("resolves stored analytics theme values", () => { expect(resolveStoredTheme("light", true)).toBe("light"); expect(resolveStoredTheme("dark", false)).toBe("dark"); expect(resolveStoredTheme("system", true)).toBe("dark"); expect(resolveStoredTheme("system", false)).toBe("light"); }); test("maps new-api theme messages to analytics themes", () => { expect(resolveIncomingThemeMode("light", true)).toBe("light"); expect(resolveIncomingThemeMode("dark", false)).toBe("dark"); expect(resolveIncomingThemeMode("auto", true)).toBe("dark"); expect(resolveIncomingThemeMode("auto", false)).toBe("light"); expect(resolveIncomingThemeMode("system", true)).toBe("dark"); expect(resolveIncomingThemeMode("unknown", true)).toBeNull(); }); test("parses theme override from query params", () => { expect(parseThemeQuery("light")).toBe("light"); expect(parseThemeQuery("dark")).toBe("dark"); expect(parseThemeQuery("auto")).toBe("system"); expect(parseThemeQuery("system")).toBe("system"); expect(parseThemeQuery("LIGHT")).toBe("light"); expect(parseThemeQuery("unknown")).toBeNull(); expect(parseThemeQuery(null)).toBeNull(); }); });