longevity: verifica misure fuori range in scheda cliente, link a crea accesso
Scheda cliente ([code].astro): sezione "Misure da verificare" da misureDaVerificare (id, range) al posto di misureFuoriRange (nessun id, nessuna azione); ogni riga ha due form verso /api/longevity/gestionale/verifica (conferma/scarta), messaggio dopo la decisione, e link "Crea accesso al referto" quando il cliente non ha ancora un accesso. gestionale.ts: rimossa misureFuoriRange (e il tipo MisuraFuoriRange), sostituita ovunque da misureDaVerificare (misure.ts), l'unica con id e range utile alle azioni. accesso.astro: link "Torna alla scheda" in tutti gli stati. Refs #7 Refs #8 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -9,7 +9,8 @@ import { join } from 'node:path';
|
||||
import { tmpdir } from 'node:os';
|
||||
import { createLongevityDb, createIdentityDb } from '../../src/lib/longevity/db';
|
||||
import { seedRegistro, seedPesi, MODEL_VERSION } from '../../src/lib/longevity/registro';
|
||||
import { salvaCheckup, sessioniDi, misureFuoriRange } from '../../src/lib/longevity/gestionale';
|
||||
import { salvaCheckup, sessioniDi } from '../../src/lib/longevity/gestionale';
|
||||
import { misureDaVerificare } from '../../src/lib/longevity/misure';
|
||||
import { salvaDalForm, refertoDi } from '../../src/lib/longevity/vista';
|
||||
import {
|
||||
creaCliente, elencoClientiParam, clienteDaCodiceParam, etaDelClienteParam, apriFascicolo,
|
||||
@@ -125,7 +126,7 @@ describe('salvaCheckup rifiuta prima di scrivere: nessuna traccia parziale', ()
|
||||
});
|
||||
|
||||
describe('le misure fuori range restano nel fascicolo, marcate e leggibili', () => {
|
||||
it('una misura oltre il range di plausibilità (f_peso_kg, max 250) si salva, si marca, ed esce da misureFuoriRange', () => {
|
||||
it('una misura oltre il range di plausibilità (f_peso_kg, max 250) si salva, si marca, ed esce da misureDaVerificare', () => {
|
||||
const db = dbPronto();
|
||||
const esito = salvaCheckup(db, {
|
||||
client_code: 'ISL-0001', data: '2026-09-26', eta: 38, operatore: 'n',
|
||||
@@ -140,9 +141,9 @@ describe('le misure fuori range restano nel fascicolo, marcate e leggibili', ()
|
||||
).get(esito.sessioneId) as { fuori_range: number };
|
||||
expect(riga.fuori_range).toBe(1);
|
||||
|
||||
const elenco = misureFuoriRange(db, 'ISL-0001');
|
||||
const elenco = misureDaVerificare(db, 'ISL-0001');
|
||||
expect(elenco.length).toBe(1);
|
||||
expect(elenco[0]).toMatchObject({ test_id: 'f_peso_kg', valore: 500, data: '2026-09-26' });
|
||||
expect(elenco[0]).toMatchObject({ test_id: 'f_peso_kg', valore_num: 500, data: '2026-09-26' });
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// tests/longevity/pagine.test.ts
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { readFileSync, existsSync } from 'node:fs';
|
||||
import { readFileSync, existsSync, readdirSync } from 'node:fs';
|
||||
import { join } from 'node:path';
|
||||
|
||||
const leggi = (p: string) => readFileSync(join(process.cwd(), p), 'utf8');
|
||||
@@ -146,4 +146,24 @@ describe('il gestionale del trainer (Unità 2b)', () => {
|
||||
expect(src).toMatch(/admin/);
|
||||
expect(src).toMatch(/Astro\.redirect\(\s*['"`]\/longevity\/io['"`]/);
|
||||
});
|
||||
|
||||
it('la scheda cliente porta le azioni di verifica di una misura fuori range (#7) e il link per creare l\'accesso (#8)', () => {
|
||||
const src = leggi('src/pages/longevity/gestionale/cliente/[code].astro');
|
||||
expect(src).toMatch(/action=["']\/api\/longevity\/gestionale\/verifica["']/);
|
||||
expect(src).toMatch(/name=["']misura_id["']/);
|
||||
expect(src).toMatch(/value=["']confermata["']/);
|
||||
expect(src).toMatch(/value=["']scartata["']/);
|
||||
expect(src).toMatch(/\/longevity\/gestionale\/cliente\/\$\{cliente\.client_code\}\/accesso/);
|
||||
});
|
||||
|
||||
it('nessuna pagina longevity usa piu misureFuoriRange, rimossa da gestionale.ts a favore di misureDaVerificare (#7)', () => {
|
||||
// Scandisce TUTTE le pagine sotto src/pages/longevity/, stesso criterio di
|
||||
// referto.test.ts: un elenco scritto qui non protegge una pagina nuova.
|
||||
const dir = join(process.cwd(), 'src/pages/longevity');
|
||||
const pagine = (readdirSync(dir, { recursive: true }) as string[]).filter((f) => f.endsWith('.astro'));
|
||||
expect(pagine.length).toBeGreaterThan(0);
|
||||
for (const f of pagine) {
|
||||
expect(readFileSync(join(dir, f), 'utf8'), `src/pages/longevity/${f}`).not.toMatch(/misureFuoriRange/);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user