Aggiorna i test per le nuove firme con rosa esplicita
completaTurni() e csvScoutMatch() prendono ora la rosa come parametro invece di leggerla dalla lista statica di crapp-data.ts.
This commit is contained in:
@@ -14,6 +14,8 @@ import {
|
|||||||
oggiISO,
|
oggiISO,
|
||||||
} from "@/lib/palloni-core";
|
} from "@/lib/palloni-core";
|
||||||
|
|
||||||
|
const rosa = giocatori.map((g) => ({ id: g.id, nome: g.nome }));
|
||||||
|
|
||||||
const evento = (id: string, data: string, tipo: Evento["tipo"] = "allenamento"): Evento => ({
|
const evento = (id: string, data: string, tipo: Evento["tipo"] = "allenamento"): Evento => ({
|
||||||
id,
|
id,
|
||||||
tipo,
|
tipo,
|
||||||
@@ -59,7 +61,7 @@ assert.deepEqual(
|
|||||||
);
|
);
|
||||||
|
|
||||||
// --- completaTurni: assegna i mancanti, rispetta quelli già decisi -----------
|
// --- completaTurni: assegna i mancanti, rispetta quelli già decisi -----------
|
||||||
const turni = completaTurni({ e2: "g5" }, eventi);
|
const turni = completaTurni({ e2: "g5" }, eventi, rosa);
|
||||||
assert.equal(turni["e2"], "g5", "il turno già assegnato non viene toccato");
|
assert.equal(turni["e2"], "g5", "il turno già assegnato non viene toccato");
|
||||||
assert.equal(Object.keys(turni).length, 3, "tutti gli eventi hanno un incaricato");
|
assert.equal(Object.keys(turni).length, 3, "tutti gli eventi hanno un incaricato");
|
||||||
assert.ok(
|
assert.ok(
|
||||||
@@ -71,7 +73,7 @@ assert.notEqual(turni["e1"], turni["e3"], "non tocca due volte di fila alla stes
|
|||||||
const molti = Array.from({ length: giocatori.length + 2 }, (_, i) =>
|
const molti = Array.from({ length: giocatori.length + 2 }, (_, i) =>
|
||||||
evento(`x${i}`, `2026-10-${String(i + 1).padStart(2, "0")}`),
|
evento(`x${i}`, `2026-10-${String(i + 1).padStart(2, "0")}`),
|
||||||
);
|
);
|
||||||
const rotazione = conteggioTurni(completaTurni({}, molti));
|
const rotazione = conteggioTurni(completaTurni({}, molti, rosa));
|
||||||
const carichi = Object.values(rotazione);
|
const carichi = Object.values(rotazione);
|
||||||
assert.equal(
|
assert.equal(
|
||||||
Math.max(...carichi) - Math.min(...carichi),
|
Math.max(...carichi) - Math.min(...carichi),
|
||||||
@@ -85,7 +87,7 @@ assert.equal(
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Un turno salvato per un giocatore non più in rosa non deve rompere il conteggio.
|
// Un turno salvato per un giocatore non più in rosa non deve rompere il conteggio.
|
||||||
const conFantasma = completaTurni({ e1: "gXX" }, eventi);
|
const conFantasma = completaTurni({ e1: "gXX" }, eventi, rosa);
|
||||||
assert.equal(conFantasma["e1"], "gXX", "il turno storico resta com'è");
|
assert.equal(conFantasma["e1"], "gXX", "il turno storico resta com'è");
|
||||||
assert.equal(Object.keys(conFantasma).length, 3);
|
assert.equal(Object.keys(conFantasma).length, 3);
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ const match: ScoutMatch = {
|
|||||||
azioni: [a("attacco", g1.id), a("ace", g1.id, 2), a("errore", g2.id, 2), a("punto_avv")],
|
azioni: [a("attacco", g1.id), a("ace", g1.id, 2), a("errore", g2.id, 2), a("punto_avv")],
|
||||||
};
|
};
|
||||||
|
|
||||||
const csv = csvScoutMatch(match);
|
const csv = csvScoutMatch(match, giocatori);
|
||||||
const righe = csv.split("\n");
|
const righe = csv.split("\n");
|
||||||
|
|
||||||
// --- intestazione ------------------------------------------------------------
|
// --- intestazione ------------------------------------------------------------
|
||||||
@@ -66,15 +66,15 @@ assert.ok(
|
|||||||
);
|
);
|
||||||
|
|
||||||
// --- trasferta e match vuoto -------------------------------------------------
|
// --- trasferta e match vuoto -------------------------------------------------
|
||||||
const fuori = csvScoutMatch({ ...match, casa: false, avversario: "Ospiti" });
|
const fuori = csvScoutMatch({ ...match, casa: false, avversario: "Ospiti" }, giocatori);
|
||||||
assert.equal(fuori.split("\n")[0], "Partita;Ospiti;vs;CRAP Volley", "in trasferta si invertono");
|
assert.equal(fuori.split("\n")[0], "Partita;Ospiti;vs;CRAP Volley", "in trasferta si invertono");
|
||||||
|
|
||||||
const vuoto = csvScoutMatch({ ...match, azioni: [], parziali: [] });
|
const vuoto = csvScoutMatch({ ...match, azioni: [], parziali: [] }, giocatori);
|
||||||
assert.ok(vuoto.includes("Data;2026-09-01"), "un match senza azioni resta esportabile");
|
assert.ok(vuoto.includes("Data;2026-09-01"), "un match senza azioni resta esportabile");
|
||||||
assert.ok(!vuoto.includes(`;${g1.nome};`), "nessun totale senza azioni");
|
assert.ok(!vuoto.includes(`;${g1.nome};`), "nessun totale senza azioni");
|
||||||
|
|
||||||
// Le virgolette nel testo vanno raddoppiate (regola CSV).
|
// Le virgolette nel testo vanno raddoppiate (regola CSV).
|
||||||
const conVirgolette = csvScoutMatch({ ...match, avversario: 'Team "X"' });
|
const conVirgolette = csvScoutMatch({ ...match, avversario: 'Team "X"' }, giocatori);
|
||||||
assert.ok(conVirgolette.includes('"Team ""X"""'));
|
assert.ok(conVirgolette.includes('"Team ""X"""'));
|
||||||
|
|
||||||
console.log("scout-export: ok");
|
console.log("scout-export: ok");
|
||||||
|
|||||||
Reference in New Issue
Block a user