From 53b22529973fc21c7d5468c9c59e8cd880f254d5 Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Sun, 30 Aug 2026 18:15:16 +0200 Subject: [PATCH] Test sulla validazione dei dati squadra MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Copre i controlli che evitano un errore Postgres di ritorno: nome, cognome e ruolo non vuoti, numero di maglia intero e positivo (il CHECK della tabella), e il rilevamento di un numero già assegnato a un altro giocatore attivo. Co-Authored-By: Claude Opus 5 --- test/unit/profili-core.test.ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/test/unit/profili-core.test.ts b/test/unit/profili-core.test.ts index 6f4e26e..d18f209 100644 --- a/test/unit/profili-core.test.ts +++ b/test/unit/profili-core.test.ts @@ -11,9 +11,11 @@ import { } from "@/lib/profili-core"; import { dividiNome, + numeroGiaUsato, rosaFallback, slotDi, slotLiberi, + validaDatiSquadra, type GiocatoreSquadra, } from "@/lib/giocatori-squadra"; @@ -155,6 +157,29 @@ assert.deepEqual( "i giocatori non attivi restano fuori", ); +// --- dati squadra modificabili dall'admin (DD-017) --------------------------- +const datiOk = { nome: "Ivan", cognome: "Cacciari", numero: 23, ruolo: "Banda" }; +assert.equal(validaDatiSquadra(datiOk), null); +assert.match(validaDatiSquadra({ ...datiOk, nome: " " }) ?? "", /nome/i); +assert.match(validaDatiSquadra({ ...datiOk, cognome: "" }) ?? "", /cognome/i); +assert.match(validaDatiSquadra({ ...datiOk, ruolo: " " }) ?? "", /ruolo/i); +assert.match( + validaDatiSquadra({ ...datiOk, numero: 0 }) ?? "", + /numero/i, + "il database rifiuta numero <= 0: meglio dirlo prima", +); +assert.match(validaDatiSquadra({ ...datiOk, numero: -3 }) ?? "", /numero/i); +assert.match(validaDatiSquadra({ ...datiOk, numero: 1.5 }) ?? "", /numero/i); + +assert.equal(numeroGiaUsato(squadra, "g1", 7), true, "il 7 è di g2"); +assert.equal(numeroGiaUsato(squadra, "g2", 7), false, "il proprio numero non è un conflitto"); +assert.equal(numeroGiaUsato(squadra, "g1", 99), false); +assert.equal( + numeroGiaUsato([{ ...squadra[1]!, attivo: false }], "g1", 7), + false, + "chi non è più in rosa non blocca il numero", +); + const fallback = rosaFallback(); assert.ok(fallback.length > 0, "il fallback da crapp-data non è mai vuoto"); assert.ok(