import { describe, it, expect, beforeEach } from "vitest"; import { parseHash, toHash, setState, getState } from "../src/state/hash.js"; describe("state/hash", () => { beforeEach(() => { // Reset hash between tests window.location.hash = ""; }); it("parses page and per from hash", () => { const s = "page=3&per=50"; expect(parseHash(s)).toEqual({ page: 3, per: 50 }); }); it("serializes state to query string", () => { expect(toHash({ page: 2, per: 25 })).toBe("page=2&per=25"); expect(toHash({ page: 2 })).toBe("page=2"); expect(toHash({ per: 10 })).toBe("per=10"); expect(toHash({})).toBe(""); }); it("setState writes to location.hash and clamps values", () => { setState({ page: 0, per: 50000 }); const s = getState(); expect(s.page).toBe(1); expect(s.per).toBe(1000); }); });