/** * 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'); }); });