// @vitest-environment jsdom import { act, renderHook } from "@testing-library/react"; import { afterEach, describe, expect, it } from "vitest"; import { useRulesEdition } from "../use-rules-edition.js"; const STORAGE_KEY = "initiative:rules-edition"; describe("useRulesEdition", () => { afterEach(() => { // Reset to default const { result } = renderHook(() => useRulesEdition()); act(() => result.current.setEdition("5.5e")); localStorage.removeItem(STORAGE_KEY); }); it("defaults to 5.5e", () => { const { result } = renderHook(() => useRulesEdition()); expect(result.current.edition).toBe("5.5e"); }); it("setEdition updates value", () => { const { result } = renderHook(() => useRulesEdition()); act(() => result.current.setEdition("5e")); expect(result.current.edition).toBe("5e"); }); it("setEdition persists to localStorage", () => { const { result } = renderHook(() => useRulesEdition()); act(() => result.current.setEdition("5e")); expect(localStorage.getItem(STORAGE_KEY)).toBe("5e"); }); it("multiple hooks stay in sync", () => { const { result: r1 } = renderHook(() => useRulesEdition()); const { result: r2 } = renderHook(() => useRulesEdition()); act(() => r1.current.setEdition("5e")); expect(r2.current.edition).toBe("5e"); }); });