Sari la conținut
← Toate exercițiile

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; pageSize e numărul maxim de elemente pe pagină.
  • items conține elementele paginii cerute, în ordinea lor inițială.
  • totalPages e numărul de pagini necesare pentru toate elementele.
  • hasNext e true câ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);
  });
});