Files
HiveGrid-Wireframes/hivegrid-cloud/apps/web/app/utils/helpers/RowPaginationHelper.test.ts
T

43 lines
1.4 KiB
TypeScript

import { describe, expect, it } from "vitest";
import Constants from "~/application/Constants";
import { getPaginationFromCurrentUrl } from "./RowPaginationHelper";
function paginationFor(query: string) {
return getPaginationFromCurrentUrl(new URLSearchParams(query));
}
describe("RowPaginationHelper", () => {
it("defaults invalid pagination params before they reach database queries", () => {
expect(paginationFor("page=abc&pageSize=abc")).toMatchObject({
page: 1,
pageSize: Constants.DEFAULT_PAGE_SIZE,
});
expect(paginationFor("page=NaN&pageSize=Infinity")).toMatchObject({
page: 1,
pageSize: Constants.DEFAULT_PAGE_SIZE,
});
});
it("rejects decimal, zero, and negative pagination params", () => {
expect(paginationFor("page=1.5&pageSize=25.5")).toMatchObject({
page: 1,
pageSize: Constants.DEFAULT_PAGE_SIZE,
});
expect(paginationFor("page=0&pageSize=0")).toMatchObject({
page: 1,
pageSize: Constants.DEFAULT_PAGE_SIZE,
});
expect(paginationFor("page=-3&pageSize=-20")).toMatchObject({
page: 1,
pageSize: Constants.DEFAULT_PAGE_SIZE,
});
});
it("caps oversized page sizes while preserving valid page numbers", () => {
expect(paginationFor(`page=3&pageSize=${Constants.MAX_PAGE_SIZE + 1}`)).toMatchObject({
page: 3,
pageSize: Constants.MAX_PAGE_SIZE,
});
});
});