Something went wrong. Try again.
Monorepo for Tangled tangled.org
Something went wrong. Try again.
TypeScript
at sl/gitmirror
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556import { describe, expect, it } from "vitest";import { discoveredPageCount, offsetFor, pageCount, pageParam } from "$lib/pagination";
describe("pagination helpers", () => { describe("pageParam", () => { it("defaults to 1 when missing", () => { expect(pageParam(new URL("https://tangled.org/repo"))).toBe(1); });
it("parses valid positive page numbers", () => { expect(pageParam(new URL("https://tangled.org/repo?page=3"))).toBe(3); });
it("falls back to 1 for invalid or zero pages", () => { expect(pageParam(new URL("https://tangled.org/repo?page=0"))).toBe(1); expect(pageParam(new URL("https://tangled.org/repo?page=-5"))).toBe(1); expect(pageParam(new URL("https://tangled.org/repo?page=abc"))).toBe(1); }); });
describe("offsetFor", () => { it("returns undefined for page 1", () => { expect(offsetFor(1, 30)).toBeUndefined(); });
it("returns correct offset for pages > 1", () => { expect(offsetFor(2, 30)).toBe(30); expect(offsetFor(3, 30)).toBe(60); }); });
describe("pageCount", () => { it("returns 1 for 0 items", () => { expect(pageCount(0, 30)).toBe(1); });
it("calculates ceiling pages correctly", () => { expect(pageCount(30, 30)).toBe(1); expect(pageCount(31, 30)).toBe(2); expect(pageCount(90, 30)).toBe(3); }); });
describe("discoveredPageCount", () => { it("increments page when hasNext is true", () => { expect(discoveredPageCount(1, true)).toBe(2); expect(discoveredPageCount(5, true)).toBe(6); });
it("stays on current page when hasNext is false", () => { expect(discoveredPageCount(1, false)).toBe(1); expect(discoveredPageCount(5, false)).toBe(5); }); });});