Files
Pien-Studio/apps/web/store/ui-store.test.ts
T

32 lines
1.1 KiB
TypeScript
Raw Normal View History

2026-05-10 03:06:54 +07:00
import { beforeEach, describe, expect, it } from "vitest";
import { useUiStore } from "./ui-store";
describe("ui store", () => {
beforeEach(() => {
window.localStorage.clear();
document.documentElement.setAttribute("data-theme", "dark");
useUiStore.setState({ theme: "dark", locale: "en" });
});
it("hydrates from local storage", () => {
window.localStorage.setItem("pien.ui.theme", "light");
window.localStorage.setItem("pien.ui.locale", "ja");
useUiStore.getState().hydrate();
expect(useUiStore.getState().theme).toBe("light");
expect(useUiStore.getState().locale).toBe("ja");
});
it("updates and persists theme", () => {
useUiStore.getState().setTheme("light");
expect(useUiStore.getState().theme).toBe("light");
expect(window.localStorage.getItem("pien.ui.theme")).toBe("light");
expect(document.documentElement.getAttribute("data-theme")).toBe("light");
});
it("updates and persists locale", () => {
useUiStore.getState().setLocale("th");
expect(useUiStore.getState().locale).toBe("th");
expect(window.localStorage.getItem("pien.ui.locale")).toBe("th");
});
});