Paginarea care pierde ultimul element
TypeScript · Un endpoint de listare într-un API REST · Logică · dificultate 1/3 · ~5 min
Un coleg i-a cerut asistentului AI: „Scrie o funcție paginate(items, page, pageSize) pentru endpoint-ul nostru de listare. Paginile încep de la 1. Returnează elementele paginii cerute plus informațiile de paginare.”
Codul a venit în treizeci de secunde, cu teste care trec. Contractul promis de docstring:
pageîncepe de la 1;pageSizee numărul maxim de elemente pe pagină.itemsconține elementele paginii cerute, în ordinea lor inițială.totalPagese numărul de pagini necesare pentru toate elementele.hasNextetruecând există o pagină după cea cerută.
Fă-i review înainte de merge.
Repară codul până trec testele ascunse.
code.ts
Teste vizibile (trec pe codul primit)
import { describe, it, expect } from "@debunk/harness";
import { paginate } from "./code";
describe("paginate", () => {
it("returns the first page", () => {
const r = paginate([1, 2, 3, 4, 5, 6], 1, 2);
expect(r.items).toEqual([1, 2]);
expect(r.page).toBe(1);
});
it("computes totalPages for evenly divisible lists", () => {
expect(paginate([1, 2, 3, 4, 5, 6], 1, 3).totalPages).toBe(2);
});
it("hasNext is false on the last page of an evenly divisible list", () => {
expect(paginate([1, 2, 3, 4], 2, 2).hasNext).toBe(false);
});
});