/* Règle métier de classement d'un monitoring selon son nombre d'erreurs. Elle était dupliquée dans trois composants avant d'être centralisée : ces tests fixent le contrat pour que les trois écrans restent cohérents. */ import { describe, it, expect } from 'vitest'; import { getStatutMonitoring, SEUIL_ATTENTION } from '../utils/statutMonitoring'; describe('getStatutMonitoring', () => { it('classe OK un monitoring sans erreur', () => { expect(getStatutMonitoring(0).label).toBe('OK'); expect(getStatutMonitoring(0).variant).toBe('ok'); }); it('classe Attention en dessous du seuil', () => { expect(getStatutMonitoring(1).label).toBe('Attention'); expect(getStatutMonitoring(SEUIL_ATTENTION - 1).label).toBe('Attention'); }); it('bascule en Critique à partir du seuil, pas avant', () => { /* La borne est le point où une erreur de type < / <= se verrait. */ expect(getStatutMonitoring(SEUIL_ATTENTION - 1).label).toBe('Attention'); expect(getStatutMonitoring(SEUIL_ATTENTION).label).toBe('Critique'); expect(getStatutMonitoring(SEUIL_ATTENTION + 1).label).toBe('Critique'); }); it('fournit toujours un libellé, une variante et une couleur', () => { for (const nb of [0, 5, 50]) { const statut = getStatutMonitoring(nb); expect(statut.label).toBeTruthy(); expect(statut.variant).toBeTruthy(); expect(statut.color).toMatch(/^var\(--/); } }); });