Files
q-edit/tests/hash.unit.test.mjs
2025-09-02 21:04:17 -04:00

29 lines
849 B
JavaScript

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);
});
});