Aggiunge unit test per i moduli lib rimasti scoperti

Copre la logica pura isolabile di avatar-store, error-capture, error-page,
lovable-error-reporting, profili (validazione upload), push-client (guardie
senza DOM), scout-stato e webpush.server (firma JWT VAPID con chiavi P-256
generate al volo, fetch intercettato). Alza i file di src/lib coperti da 19
a 28 su 37, senza introdurre nuove dipendenze.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-02 11:34:09 +02:00
co-authored by Claude Sonnet 5
parent d3b117e470
commit ff45b2379c
10 changed files with 332 additions and 6 deletions
+25
View File
@@ -0,0 +1,25 @@
/** Check dello stato condiviso dello Scout Live: `bun test/unit/scout-stato.test.ts`. */
import assert from "node:assert/strict";
import { SCOUT_STATO_KEY, statoIniziale } from "@/lib/scout-stato";
// --- statoIniziale: parte vuoto, con avversario e campo memorizzati -----------
const stato = statoIniziale("Avversari", true);
assert.deepEqual(stato, { azioni: [], setChiusi: [], avversario: "Avversari", casa: true });
const trasferta = statoIniziale("Altra Squadra", false);
assert.equal(trasferta.casa, false);
assert.deepEqual(trasferta.azioni, [], "ogni chiamata parte da una lista vuota indipendente");
// Le liste non devono essere condivise tra due stati distinti.
stato.azioni.push({ id: "a1", tipo: "attacco", set: 1, ts: 0 });
assert.deepEqual(trasferta.azioni, [], "modificare uno stato non tocca l'altro");
// --- SCOUT_STATO_KEY: chiave stabile per React Query --------------------------
assert.deepEqual(SCOUT_STATO_KEY("evt-1"), ["scout-stato", "evt-1"]);
assert.notDeepEqual(
SCOUT_STATO_KEY("evt-1"),
SCOUT_STATO_KEY("evt-2"),
"chiavi diverse per eventi diversi",
);
console.log("scout-stato: ok");