Completa la copertura test di tutti i badge e corregge due bug trovati in audit

Audit dedicato su tutti i 16 badge: s-tiebreak non applicava la soglia minima di
voti pagella di Pagellone sullo stesso campo mediaVoto (corretto), s-cacche
prometteva "partite di campionato" senza che il codice lo verificasse mai
(corretta la descrizione, comportamento invariato). Aggiunti test unit e
integration end-to-end mancanti su badge segreti e social, con dati scritti a
database anche per i cinque segreti che prima ne erano privi.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-08 15:36:33 +02:00
co-authored by Claude Sonnet 5
parent a451d4187f
commit 3b305b0f8e
15 changed files with 1230 additions and 41 deletions
+12
View File
@@ -121,6 +121,18 @@ assert.deepEqual(
"nessun turno assegnato: conteggio vuoto",
);
// A differenza di `eventiPalloni()` (che scarta i compleanni), `conteggioTurni()` non filtra
// per tipo: guarda solo `turni` ed `e.data < oggi`. Un turno registrato per errore su un
// evento che il resto del modulo tratterebbe come "non richiede palloni" conterebbe comunque
// per il badge. Comportamento attuale documentato (non l'UI non offre questa combinazione),
// non una correzione: se cambia, questo test deve fallire e ricordarlo.
const conCompleanno: Evento[] = [evento("cb1", "2026-09-01", "compleanno")];
assert.deepEqual(
conteggioTurni({ cb1: "g1" }, conCompleanno, OGGI_CONTEGGIO),
{ g1: 1 },
"conteggioTurni() non esclude i compleanni come fa eventiPalloni(): nessun filtro per tipo",
);
// --- oggiISO -------------------------------------------------------------------
assert.match(oggiISO(), /^\d{4}-\d{2}-\d{2}$/);
// Stesso controllo di dataOggi() in scout-live.test.ts: oggiISO() ne è un alias, il fuso