Saltar al contenido
← Todos los ejercicios

El validador de edad probado solo en el happy path

TypeScript · El formulario de registro de una app web para consumidores · Tests · dificultad 1/3 · ~5 min

Un compañero de equipo le pidió al asistente de IA: "Escribe parseAge(input) para el formulario de registro. Recibe el string tal cual viene del campo y devuelve la edad como número. Rechaza todo lo que no sea un número entero entre 0 y 130: lanza un Error para que el formulario pueda mostrar un mensaje. Añade tests."

El código llegó con un docstring que detalla el contrato y con tres tests que pasan. Estás revisando tanto la función como sus tests antes de hacer merge.

El contrato que promete el docstring:

  • Los espacios en blanco alrededor se ignoran.
  • Una entrada válida es un número entero entre 0 y MAX_AGE (130), ambos incluidos.
  • La entrada vacía, el texto no numérico, los decimales, los valores negativos y los valores por encima de MAX_AGE se rechazan lanzando una excepción.
  • Nunca se debe devolver en silencio un valor "arreglado"; quien llama depende de la excepción.

Los tests pasan. Decide si eso significa algo.

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 { parseAge, validateAge } from "./code";

describe("parseAge", () => {
  it("parses a plain age", () => {
    expect(parseAge("42")).toBe(42);
  });

  it("ignores surrounding whitespace", () => {
    expect(parseAge("  27 ")).toBe(27);
  });

  it("validateAge reports non-numeric input as an error", () => {
    const r = validateAge("abc");
    expect(r.ok).toBe(false);
  });
});