Sari la conținut
← Toate exercițiile

Validatorul de vârstă testat doar pe happy path

TypeScript · Formularul de înregistrare al unei aplicații web pentru public · Teste · dificultate 1/3 · ~5 min

Un coleg i-a cerut asistentului AI: „Scrie parseAge(input) pentru formularul de înregistrare. Primește stringul brut din câmp și returnează vârsta ca număr. Respinge orice nu e un număr întreg între 0 și 130: aruncă un Error, ca formularul să poată afișa un mesaj. Adaugă teste.”

Codul a venit cu un docstring care descrie clar contractul și cu trei teste care trec. Faci review atât funcției, cât și testelor ei, înainte de merge.

Contractul promis de docstring:

  • Whitespace-ul de la margini e ignorat.
  • Un input valid e un număr întreg între 0 și MAX_AGE (130), inclusiv.
  • Inputul gol, textul nenumeric, zecimalele, valorile negative și cele peste MAX_AGE sunt respinse aruncând o eroare.
  • O valoare „reparată” nu trebuie returnată niciodată în tăcere; apelantul se bazează pe excepție.

Testele trec. Decide dacă asta înseamnă ceva.

Repară codul până trec testele ascunse.

code.ts

Teste vizibile (trec pe codul primit)
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);
  });
});