Files
davideandClaude Sonnet 5 8353761b6e Corregge il dettaglio MVP in classifica: solo partite, non tutti gli eventi
Il sottotitolo "N partite giocate" per il criterio MVP usava totaliEventiGiocatore(),
che conta anche gli allenamenti: un numero fuorviante perché l'MVP si vota solo alle
partite del calendario interno (eventi_app), non a quelle del sito CSI. Aggiunge
contaPartiteGiocate() (presenze.ts) e Giocatore.partiteGiocate.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 11:02:38 +02:00

60 lines
1.7 KiB
TypeScript

/** Check della classifica della rosa: `bun test/unit/rosa.test.ts`. */
import assert from "node:assert/strict";
import { classificaRank, dettaglioClassifica } from "@/lib/rosa";
// --- classificaRank: dense rank, a parità di valore stessa posizione -----------
assert.deepEqual(
classificaRank([4, 4, 3]),
[1, 1, 2],
"due giocatori a pari merito condividono la posizione, il numero successivo non salta",
);
assert.deepEqual(
classificaRank([5, 4, 3, 2]),
[1, 2, 3, 4],
"nessun pareggio: posizione progressiva normale",
);
assert.deepEqual(
classificaRank([3, 3, 3, 1]),
[1, 1, 1, 2],
"tre giocatori a pari merito in testa condividono tutti la posizione #1",
);
assert.deepEqual(classificaRank([]), [], "rosa vuota: nessuna posizione");
assert.deepEqual(classificaRank([0, 0]), [1, 1], "parità anche a valore zero");
// --- dettaglioClassifica: il sottotitolo segue il criterio selezionato -------
const g = { streak: 12, votiPagella: 18, partiteGiocate: 15, cacche: 3, seriePalloni: 4 };
assert.equal(
dettaglioClassifica(g, "presenze"),
"12 presenze consecutive",
"presenze: mostra la serie di presenze consecutive",
);
assert.equal(
dettaglioClassifica(g, "palloni"),
"4 volte consecutive",
"palloni: mostra le volte consecutive in cui ha portato i palloni, non le presenze",
);
assert.equal(
dettaglioClassifica(g, "mediaVoto"),
"18 voti pagella",
"media voto: mostra quanti voti compongono la media",
);
assert.equal(
dettaglioClassifica(g, "mvp"),
"15 partite giocate",
"mvp: mostra le partite giocate (non gli eventi totali, che includerebbero gli allenamenti)",
);
assert.equal(
dettaglioClassifica(g, "cacchePartita"),
"3 giornate top",
"cacche: mostra le giornate da primo classificato",
);
console.log("rosa: ok");