longevity: misureValideAlla, spareggio sulla riga e nota sulla conferma dei fuori range

Refs #1
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-26 12:40:31 +00:00
parent 4968b75472
commit af8afebba8
2 changed files with 31 additions and 8 deletions
@@ -198,6 +198,20 @@ describe('un check-up e un questionario sono sessioni separate, ma un cliente e
expect(sd).not.toHaveProperty('questionario_lifestyle');
});
it('due misure dello stesso test_id nella stessa sessione: vince quella inserita dopo', () => {
// registraMisure non vieta di scrivere due volte lo stesso test_id nella stessa
// sessione (es. una correzione manuale dopo un refuso di battitura). data di sessione
// e id di sessione sono identici per le due righe: senza uno spareggio esplicito su
// m.id (la riga in `misure`), l'ordine fra le due sarebbe indefinito.
const db = dbPronto('ISL-0023', 'M');
const s = apriSessione(db, { client_code: 'ISL-0023', data: '2026-08-05', tipo: 'checkup', eta_alla_data: 38 });
registraMisure(db, s, 'manuale', [{ test_id: 'f_grasso_pct', valore_num: 20 }]); // scritta per prima, refuso
registraMisure(db, s, 'manuale', [{ test_id: 'f_grasso_pct', valore_num: 12.8 }]); // corretta subito dopo
const misurate = misureValideAlla(db, s);
expect(misurate.get('f_grasso_pct')).toBe(12.8); // l'ultima scritta, non la prima
});
it('una misura fuori range viene ignorata e sostituita dalla precedente misura valida', () => {
const db = dbPronto('ISL-0022', 'M');
const s1 = apriSessione(db, { client_code: 'ISL-0022', data: '2026-08-05', tipo: 'checkup', eta_alla_data: 38 });