HormoneTrack-web/tests/lab-notes.test.js
Siphonight 1957b73e3c v1.7.1 : fix « une seule note sur deux » dans les Analyses (miroir Android)
- format.js : labNotesForDisplay (helper PUR, miroir du Kotlin) — notes
  DISTINCTES d'une prise E2+T → une ligne par note préfixée du marqueur
  (« E2 : … » / « T : … ») ; note identique (dialog commun) → dédupliquée ;
  vides ignorées ; note seule → brute (v1.0 préservé). L'ancien code
  (.find() première non vide) perdait la note T à l'affichage quand la
  note E2 existait aussi (conservée en base, juste non montrée).
- labs.js : affiche TOUTES les lignes du helper (l'ancienne n'en rendait
  qu'une).
- app.js (seed ?demo=1) : la dernière paire E2/T porte des notes
  distinctes → fixture du scénario E2E.
- E2E : les deux notes préfixées s'affichent sur #labs.
- tests/lab-notes.test.js : 5 tests miroirs du Kotlin (145 verts au total).
- CHANGELOG [1.7.1] (l'oubli de cette entrée aurait laissé le dialog
  « Nouveautés » vide — attrapé par l'E2E, leçon #46 miroir), §4 arbre
  tests, README. WEB_VERSION 1.7.1.
2026-09-17 12:30:59 +02:00

46 lines
1.8 KiB
JavaScript

/**
* Tests des NOTES d'un groupe de labs (v1.7.1 — miroir de `LabsGroupingTest`
* Android, [labNotesForDisplay]) — fix du bug « une seule note sur deux
* s'affiche » : quand E2 et T portent des notes DISTINCTES, les deux doivent
* apparaître (préfixées du marqueur) ; la note identique (dialog commun) ne
* s'affiche qu'une fois ; les notes vides/malformées sont ignorées.
*/
import { test, describe } from 'node:test';
import assert from 'node:assert/strict';
import { labNotesForDisplay } from '../js/util/format.js';
const lab = (marker, notes) => ({ marker, notes });
describe('labNotesForDisplay (miroir Android v1.7.1)', () => {
test('les notes distinctes de E2 et T sont TOUTES affichées, préfixées', () => {
const group = [
lab('E2', 'Analyse faite suite à des maux de tête.'),
lab('T', 'DHT : 12 ng/dL'),
];
assert.deepEqual(labNotesForDisplay(group), [
'E2 : Analyse faite suite à des maux de tête.',
'T : DHT : 12 ng/dL',
]);
});
test('la note identique sur les deux entrées n\'est affichée qu\'une fois', () => {
const group = [lab('E2', 'Prise à jeun'), lab('T', 'Prise à jeun')];
assert.deepEqual(labNotesForDisplay(group), ['Prise à jeun']);
});
test('une seule note reste brute (comportement historique préservé)', () => {
const group = [lab('E2', 'Seule note'), lab('T', null)];
assert.deepEqual(labNotesForDisplay(group), ['Seule note']);
});
test('notes vides/blanches ignorées, ordre du groupe préservé', () => {
const group = [lab('E2', ' '), lab('T', 'note T'), lab('PRL', 'note PRL')];
assert.deepEqual(labNotesForDisplay(group), ['T : note T', 'PRL : note PRL']);
});
test('aucune note → aucune ligne', () => {
assert.deepEqual(labNotesForDisplay([lab('E2', null), lab('T', '')]), []);
});
});