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:
davideandClaude Sonnet 5.5 committed 2026-11-15 19:36:00 +01:00
1 parent 06c91149e7
commit 99265f6a1e
13 files changed
+106 -30

No files matched your search

+14
View File
@@ -13,6 +13,7 @@ import {
mancanoPer,
microcopyBadge,
prossimoTraguardo,
quantiAlGrado,
segretiNascosti,
statoBadge,
tuttiBadge,
@@ -247,4 +248,17 @@ assert.equal(
"gli id dei badge sono unici",
);
// --- quantiAlGrado: chi ha raggiunto almeno quel grado -----------------------------
{
const def = badgeDefs[0]!;
const rosa = [g(), g(), g()];
assert.equal(quantiAlGrado(def, [], "bronzo"), 0);
const n = (grado: (typeof gradiOrdine)[number]) => quantiAlGrado(def, rosa, grado);
assert.ok(
n("bronzo") >= n("argento") && n("argento") >= n("oro"),
"i gradi alti non superano i bassi",
);
assert.equal(n("bronzo"), rosa.filter((x) => gradoRaggiunto(def, def.valore(x)) !== null).length);
}
console.log("badges: ok");