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
+6 -1
View File
@@ -37,7 +37,7 @@ compaiono.
in `rosa.ts`) — non è uno storico in tabella dedicata, ma non include le proposte
automatiche di `completaTurni()` (quelle restano solo per la UI di rotazione,
`TurnoPalloni.tsx`/`PromemoriaPalloni.tsx`). Conta solo gli eventi già passati (`e.data <
oggi`, stesso criterio delle presenze): un turno assegnato in anticipo per un allenamento
oggi`, stesso criterio delle presenze): un turno assegnato in anticipo per un allenamento
futuro non è ancora "portato", quindi non sale finché quel giorno non arriva.
- `TurnoPalloni.tsx` mostra/assegna il turno sulla card di un evento; `PromemoriaPalloni.tsx`
è il banner in Home per il giocatore di turno.
@@ -65,6 +65,11 @@ nessuna chiamata di rete. Stesso meccanismo di `apri-sondaggio` (vedi
turno oggi" — resta in `palloni-core.ts` ma non la chiama più nessuno.
- La rotazione non considera le assenze dichiarate: può proporre il turno a chi ha risposto
"assente" o "infortunato" per quell'evento.
- **`conteggioTurni()` non filtra per tipo evento** (a differenza di `eventiPalloni()`, che
scarta i compleanni): guarda solo `e.data < oggi`. Un turno registrato per errore su un
evento fuori dal dominio "richiede i palloni" conterebbe comunque per il badge Sherpa dei
palloni (`badge.md` § Problemi noti). Rischio basso — l'UI non offre questa combinazione — ma
il comportamento attuale è pinnato da un test dedicato in `palloni-core.test.ts`.
---