- 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).
67 lines
2.5 KiB
JavaScript
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');
|
|
});
|
|
});
|