HormoneTrack-web/tests/treatments-display.test.js
Siphonight 0dd5fa7dfd v1.11.0 (web) : inactifs regroupés en bas de la page Traitements + cartes atténuées — miroir Android
- Helper pur treatmentsForDisplay dans js/data/models.js (miroir du Kotlin,
  tri STABLE : actifs d'abord, inactifs après, ordre relatif conservé dans
  chaque groupe) — demande : « peu discernables, à placer à la fin ».
- Rendu : en-tête « Traitements inactifs » (seulement s'il en existe),
  cartes opacity 0.55 en plus du badge — lisibles et cliquables.
- Clés i18n inactive_section FR/EN ; WEB_VERSION alignée sur 1.11.0.
- 4 tests treatments-display.test.js (miroir TreatmentsDisplayTest.kt).

184 tests + E2E verts (check.sh).
2026-09-29 07:30:59 +02:00

67 lines
2.5 KiB
JavaScript

/**
* Tests de l'ORDRE D'AFFICHAGE de la page Traitements (v1.11.0, miroir de
* TreatmentsDisplayTest.kt — demande utilisatrice : « les traitements
* inactifs faudrait les placer à la fin (tout en bas) de la liste ») :
* - les ACTIFS d'abord, les INACTIFS regroupés après ;
* - tri STABLE (ordre conservé à l'intérieur de chaque groupe) ;
* - cas limites : liste vide, tout actif, tout inactif (identité).
*/
import { test, describe } from 'node:test';
import assert from 'node:assert/strict';
import { treatmentsForDisplay } from '../js/data/models.js';
import { makeTreatment } from './helpers.js';
describe('treatments display order (v1.11.0)', () => {
test('les inactifs sont regroupés à la fin', () => {
const mixed = [
makeTreatment({ id: 1, name: 'EEn', isActive: true }),
makeTreatment({ id: 2, name: 'EV-old', isActive: false }),
makeTreatment({ id: 3, name: 'CPA', isActive: true }),
makeTreatment({ id: 4, name: 'EEn-old', isActive: false }),
makeTreatment({ id: 5, name: 'Ritaline', isActive: true }),
];
assert.deepEqual(
treatmentsForDisplay(mixed).map((t) => t.id),
[1, 3, 5, 2, 4],
'actifs d\'abord (ordre conservé), inactifs après (ordre conservé)',
);
});
test('tri stable : ordre conservé à l\'intérieur de chaque groupe', () => {
const mixed = [
makeTreatment({ id: 10, name: 'A', isActive: false }),
makeTreatment({ id: 11, name: 'B', isActive: true }),
makeTreatment({ id: 12, name: 'C', isActive: false }),
makeTreatment({ id: 13, name: 'D', isActive: true }),
];
assert.deepEqual(
treatmentsForDisplay(mixed).map((t) => t.id),
[11, 13, 10, 12],
);
});
test('tout actif / tout inactif : ordre inchangé (identité)', () => {
const actifs = [
makeTreatment({ id: 3, isActive: true }),
makeTreatment({ id: 1, isActive: true }),
];
assert.deepEqual(treatmentsForDisplay(actifs).map((t) => t.id), [3, 1]);
const inactifs = [
makeTreatment({ id: 2, isActive: false }),
makeTreatment({ id: 1, isActive: false }),
];
assert.deepEqual(treatmentsForDisplay(inactifs).map((t) => t.id), [2, 1]);
});
test('liste vide reste vide ; entrée non mutée', () => {
assert.equal(treatmentsForDisplay([]).length, 0);
const mixed = [
makeTreatment({ id: 2, isActive: false }),
makeTreatment({ id: 1, isActive: true }),
];
treatmentsForDisplay(mixed);
assert.deepEqual(mixed.map((t) => t.id), [2, 1], 'la liste d\'entrée n\'est pas mutée');
});
});