Calcoli di badge, obiettivi e percentuali spostati da route e componenti a src/lib
squadra: mediaPresenzeRosa, obiettiviCompletati, mediaProgressoObiettivi, quantiAlGrado; scout: percentualePiu; utils: percentuale (usata da profilo, RosaPresenze, CollezioneBadge). Test unitari per ciascuna. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
06c91149e7
commit
99265f6a1e
13 files changed
+106
-30
No files matched your search
@@ -6,7 +6,10 @@ import type { VotoPagella } from "@/lib/pagelle";
|
||||
import type { MappaPresenze } from "@/lib/presenze";
|
||||
import {
|
||||
contestoVuoto,
|
||||
mediaPresenzeRosa,
|
||||
mediaProgressoObiettivi,
|
||||
microcopyObiettivo,
|
||||
obiettiviCompletati,
|
||||
obiettiviOrdinati,
|
||||
obiettiviSquadra,
|
||||
progressoObiettivo,
|
||||
@@ -735,4 +738,22 @@ for (const ob of obiettiviSquadra(giocatori, contestoVuoto)) {
|
||||
}
|
||||
}
|
||||
|
||||
// --- riepiloghi usati dalla pagina Squadra -----------------------------------------
|
||||
{
|
||||
const ob = (valore: number): ObiettivoSquadra =>
|
||||
({ ...obiettiviSquadra(giocatori, contestoVuoto)[0]!, valore, target: 10 }) as ObiettivoSquadra;
|
||||
assert.equal(obiettiviCompletati([]), 0);
|
||||
assert.equal(mediaProgressoObiettivi([]), 0);
|
||||
assert.equal(obiettiviCompletati([ob(10), ob(15), ob(3)]), 2);
|
||||
assert.equal(mediaProgressoObiettivi([ob(10), ob(0)]), 50);
|
||||
assert.equal(mediaPresenzeRosa([]), 0);
|
||||
const p = (presenze: number, totaliEventi: number) => ({
|
||||
...giocatori[0]!,
|
||||
presenze,
|
||||
totaliEventi,
|
||||
});
|
||||
assert.equal(mediaPresenzeRosa([p(5, 10), p(10, 10)]), 75);
|
||||
assert.equal(mediaPresenzeRosa([p(0, 0)]), 0, "nessun evento: niente divisione per zero");
|
||||
}
|
||||
|
||||
console.log("obiettivi: ok");
|
||||
Reference in new issue
Block a user