longevity: pagina /longevity/progressione, grafico e tabella dell'andamento
Progressione.tsx: una linea per macro-score (connectNulls=false: un dato mancante è un buco, non una linea inventata), tratteggio e spessore a distinguere le serie invece di un colore nuovo, riga verticale tratteggiata sui cambi di versione; sotto, la tabella per asse. Colori identici a Radar.tsx, nessuno nuovo. progressione.astro: stesso modello di io.astro (codicePerUtenteLoggato, nessuna query diretta); sotto i due punti mostra il messaggio che ne serve almeno uno in più. io.astro linka la pagina nuova. Refs #5 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -93,4 +93,19 @@ describe('il guscio della piattaforma', () => {
|
||||
const src = readFileSync(p, 'utf8');
|
||||
expect(src).toMatch(/Astro\.redirect\(\s*['"`]\/longevity\/io['"`]/);
|
||||
});
|
||||
|
||||
it('la pagina dell andamento non interroga il database e usa codicePerUtenteLoggato', () => {
|
||||
// Rete secondaria alla stessa prova generica di referto.test.ts ("nessuna pagina
|
||||
// interroga il database da sola", che scandisce TUTTE le .astro sotto longevity/):
|
||||
// qui si controlla in piu' che il codice cliente arrivi dalla via autorizzata, non da
|
||||
// un'altra query o da un parametro della richiesta.
|
||||
const p = join(process.cwd(), 'src/pages/longevity/progressione.astro');
|
||||
expect(existsSync(p)).toBe(true);
|
||||
const src = readFileSync(p, 'utf8');
|
||||
expect(src).not.toMatch(/\.prepare\(/);
|
||||
expect(src).toMatch(/codicePerUtenteLoggato/);
|
||||
// Stessa rete secondaria di anagrafica.test.ts: nessuna giunzione identity/longevity
|
||||
// in un file fuori dai due moduli autorizzati.
|
||||
expect(src).not.toContain('Identity');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user