35 lines
1.4 KiB
TypeScript
35 lines
1.4 KiB
TypeScript
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();
|
|
});
|
|
});
|