test: le sei tabelle dei sollevamenti sorvegliate, e il caso misto
- motore-fisici.test.ts confrontava i tiers letti dal file di riferimento, non le costanti TIERS_* del codice: ventiquattro numeri senza custode. Ora identifica la tabella dagli argomenti dell'oracolo ma usa le costanti vere per calcolare, quindi una costante alterata non combacia più con nessun caso. - motore-caso-reale.test.ts: aggiunto il caso end-to-end mancante, un asse valido (Composizione Corporea, via due righe aggiunte al registro) e sei insufficienti — oggi la suite copriva solo "tutto insufficiente". - test-fisici.ts: commento in testa che dichiara le venti curve non collegate al motore (vocabolario delle curve senza nomi per loro, applicaCurva senza modo di ricevere età/sesso) — aggancio è lavoro del piano degli import, non "una modifica ai dati" come la spec lascia intendere. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XhLbMQ1q7wHwJSykgXRwQF
This commit is contained in:
@@ -43,4 +43,39 @@ describe('un profilo con una sola area misurata', () => {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Il caso misto: quello che la prima dashboard disegnera' davvero, non "tutto
|
||||
* insufficiente". Realizza per intero la premessa del describe qui sopra — la
|
||||
* composizione corporea davvero misurata dalla Wellness Tower — aggiungendo le
|
||||
* due voci al registro (arrivano col piano degli import; qui bastano due righe,
|
||||
* non serve aspettarle) e registrando le misure end-to-end.
|
||||
*/
|
||||
it('un asse valido (Composizione Corporea) e sei insufficienti, end-to-end', () => {
|
||||
const db = createLongevityDb(':memory:');
|
||||
seedRegistro(db);
|
||||
seedPesi(db, MODEL_VERSION);
|
||||
db.prepare(`INSERT INTO soggetti (client_code, sesso) VALUES ('ISL-0003','M')`).run();
|
||||
|
||||
db.prepare(
|
||||
`INSERT INTO registro_test (test_id, etichetta, tipo_valore, curva, params, asse, sotto_dominio, attivo_da)
|
||||
VALUES ('wt_grasso', 'Grasso % (Wellness Tower)', 'num', 'lin_dec', ?, 'Composizione Corporea', 'grasso', '2026-01-01')`
|
||||
).run(JSON.stringify({ best: 10, worst: 40 }));
|
||||
db.prepare(
|
||||
`INSERT INTO registro_test (test_id, etichetta, tipo_valore, curva, params, asse, sotto_dominio, attivo_da)
|
||||
VALUES ('wt_muscolo', 'Muscolo % (Wellness Tower)', 'num', 'lin_dec', ?, 'Composizione Corporea', 'muscolo', '2026-01-01')`
|
||||
).run(JSON.stringify({ best: 50, worst: 30 }));
|
||||
|
||||
const s = apriSessione(db, { client_code: 'ISL-0003', data: '2026-08-22', tipo: 'checkup', eta_alla_data: 38 });
|
||||
registraMisure(db, s, 'wellness_tower', [
|
||||
{ test_id: 'wt_grasso', valore_num: 15 },
|
||||
{ test_id: 'wt_muscolo', valore_num: 45 },
|
||||
]);
|
||||
|
||||
const r = calcolaSessione(db, s);
|
||||
expect(r.assi['Composizione Corporea'].stato).toBe('ok');
|
||||
const insufficienti = Object.entries(r.assi)
|
||||
.filter(([nome, a]) => nome !== 'Composizione Corporea' && a.stato === 'insufficiente');
|
||||
expect(insufficienti.length).toBe(6);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user