Saltar al contenido
← Todos los ejercicios

La paginación que pierde el último elemento

TypeScript · Un endpoint de listado en una API REST · Lógica · dificultad 1/3 · ~5 min

Un compañero le pidió al asistente de IA: "Escribe una función paginate(items, page, pageSize) para nuestro endpoint de listado. Las páginas empiezan en 1. Devuelve los elementos de la página pedida más la información de paginación."

El código llegó en treinta segundos, con tests que pasan. El contrato que promete el docstring:

  • page empieza en 1; pageSize es el número máximo de elementos por página.
  • items contiene los elementos de la página pedida, en su orden original.
  • totalPages es el número de páginas necesarias para todos los elementos.
  • hasNext es true cuando hay una página después de la pedida.

Revísalo antes de que se integre.

Repara el código hasta que pasen las pruebas ocultas.

code.ts

Pruebas visibles (pasan con el código tal como está)
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);
  });
});