import { describe, expect, it } from "vitest";
import { themeAttribute, themeFromCookies } from "#lib/theme.ts";
describe("themeFromCookies", () => {
it("reads the theme cookie among others", () => {
expect(themeFromCookies("a=1; theme=dark; b=2")).toBe("dark");
expect(themeFromCookies("theme=light")).toBe("light");
expect(themeFromCookies("theme=ash")).toBe("ash");
});
it("falls back to auto for missing or unknown values", () => {
expect(themeFromCookies(null)).toBe("auto");
expect(themeFromCookies("a=1")).toBe("auto");
expect(themeFromCookies("theme=sepia")).toBe("auto");
expect(themeFromCookies("theme=constructor")).toBe("auto");
});
});
describe("themeAttribute", () => {
it("only stamps explicit themes", () => {
expect(themeAttribute("dark")).toBe(' data-theme="dark"');
expect(themeAttribute("auto")).toBe("");
});
it("stamps a preset on its base mode", () => {
expect(themeAttribute("ash")).toBe(' data-theme="dark" data-palette="ash"');
expect(themeAttribute("snow")).toBe(' data-theme="light" data-palette="snow"');
expect(themeAttribute("classic-dark")).toBe(
' data-theme="dark" data-palette="classic-dark"'
);
});
});