Allinea l'app ai nuovi testi e ai destinatari dei pulsanti (DD-040)
I pulsanti «Avvisa chi è di turno» e «Sollecita» usano gli stessi testi dei job del database. Il sollecito manuale segue i convocati e dice la risposta attuale e chi lo ha chiesto. L'ordine degli eventi dei palloni diventa data, ora, id. Le righe del corpo di una notifica vanno a capo nel centro notifiche. Test unitari dei testi, dei destinatari e delle date; il test delle route verifica testi, convocati e assenza di email per i palloni. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
563142a30a
commit
9b4e3e4b45
12 files changed
+363
-48
No files matched your search
@@ -1,10 +1,12 @@
|
||||
/** Check delle notifiche in-app (M17): `bun test/unit/notifiche-utente.test.ts`. */
|
||||
import assert from "node:assert/strict";
|
||||
import { readFileSync } from "node:fs";
|
||||
import {
|
||||
contatoreBadge,
|
||||
daRiga,
|
||||
pallinoNotifiche,
|
||||
type RigaNotifica,
|
||||
type TipoNotifica,
|
||||
} from "@/lib/notifiche-utente";
|
||||
|
||||
// --- daRiga: conversione database -> modello applicativo ---------------------
|
||||
@@ -48,4 +50,33 @@ assert.deepEqual(pallinoNotifiche(30, 12), { testo: "9+", daLeggere: true });
|
||||
// Tutte lette: il pallino resta per poterle ancora aprire ed eliminare.
|
||||
assert.deepEqual(pallinoNotifiche(3, 0), { testo: "3", daLeggere: false });
|
||||
|
||||
// --- i tipi automatici di DD-040 attraversano daRiga senza perdere le righe del testo -----
|
||||
const tipiNuovi: TipoNotifica[] = [
|
||||
"turno_palloni_12h",
|
||||
"turno_palloni_6h",
|
||||
"turno_palloni_3h",
|
||||
"turno_palloni_revocato",
|
||||
"sollecita_presenze_24h",
|
||||
"sollecita_presenze_12h",
|
||||
"sollecita_presenze_6h",
|
||||
];
|
||||
const corpoMultiriga = "Data: 01/10/2026\nOra: 21:00\nLuogo: PalaCRAP";
|
||||
for (const tipo of tipiNuovi) {
|
||||
const n = daRiga({ ...riga, tipo, corpo: corpoMultiriga });
|
||||
assert.equal(n.tipo, tipo);
|
||||
assert.equal(n.corpo, corpoMultiriga, `${tipo}: il corpo a più righe arriva intatto`);
|
||||
}
|
||||
|
||||
// Le righe del corpo vanno a capo solo se la riga della notifica lo chiede al CSS: senza
|
||||
// `whitespace-pre-line` il testo a più righe diventerebbe un paragrafo unico.
|
||||
const uiBits = readFileSync(
|
||||
new URL("../../src/components/crapp/ui-bits.tsx", import.meta.url),
|
||||
"utf8",
|
||||
);
|
||||
assert.match(
|
||||
uiBits,
|
||||
/whitespace-pre-line[^"]*"[^>]*>\s*\{notifica\.corpo\}/,
|
||||
"il corpo della notifica mantiene gli a capo",
|
||||
);
|
||||
|
||||
console.log("notifiche-utente: ok");
|
||||
Reference in new issue
Block a user