29 lines
849 B
JavaScript
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);
|
|
});
|
|
});
|