Completa la copertura test del badge Presenza fissa e ne documenta il comportamento

Nessun bug trovato: contaPresenzeGiocatore() filtra correttamente per convocati,
tipo evento e stato (presente/ritardo contano, assente/forse no), gli eventi
futuri restano esclusi. Confermato che, a differenza di MVP/pagelle/badge social,
questo badge non ha bisogno dell'estensione RLS di M13: il filtro sui convocati è
già nella funzione pura, non solo in UI.

Aggiunti test unit sulle soglie (badges.test.ts) e un nuovo end-to-end
(presenze-badge.test.ts) che scrive eventi e risposte reali sul database locale e
verifica l'intera pipeline fetchPresenze()/daRiga() -> contaPresenzeGiocatore() ->
statoBadge() attraverso le tre soglie, incluso il caso "non convocato, la riga
esiste ma non conta". docs/modules/badge.md aggiornato con la pipeline, la
copertura test e la correzione della dicitura "in stagione" (il conteggio è
sull'intero storico, coerente con gli altri badge).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-08 14:33:51 +02:00
co-authored by Claude Sonnet 5
parent e6a222f196
commit 10d1455eff
3 changed files with 238 additions and 9 deletions
+10
View File
@@ -105,6 +105,16 @@ assert.equal(
"5 turni su 6 per l'argento: 83%",
);
// --- presenze: soglie 5 / 15 / 30 ---------------------------------------------
const presenzeDef = badgeDefs.find((b) => b.id === "presenze")!;
assert.equal(gradoRaggiunto(presenzeDef, 4), null, "sotto la prima soglia nessun grado");
assert.equal(gradoRaggiunto(presenzeDef, 5), "bronzo", "la soglia è inclusiva");
assert.equal(gradoRaggiunto(presenzeDef, 14), "bronzo");
assert.equal(gradoRaggiunto(presenzeDef, 15), "argento");
assert.equal(gradoRaggiunto(presenzeDef, 29), "argento");
assert.equal(gradoRaggiunto(presenzeDef, 30), "oro");
assert.equal(gradoRaggiunto(presenzeDef, 999), "oro", "oltre l'oro resta oro");
// --- badgeGiocatore ----------------------------------------------------------
assert.equal(badgeGiocatore(g()).length, badgeDefs.length, "i badge normali sono sempre tutti");
assert.ok(