test(front): étend la couverture de 8 à 41 tests
Les fonctionnalités ajoutées récemment n'étaient couvertes par aucun test, et deux utilitaires historiques ne l'avaient jamais été. - statutMonitoring : bornes du seuil testées de part et d'autre, là où une confusion entre < et <= se verrait. - dates : protège la correction du décalage de fuseau (toISOString basculait en UTC, le 1er janvier local devenait le 31 décembre). Les helpers sont sortis de Historique.jsx vers utils/dates.js, un fichier de composant ne pouvant pas exporter autre chose sans casser le rafraîchissement à chaud. - exportToCSV : échappement des virgules, guillemets et sauts de ligne, et conservation du zéro, qui est falsy alors que « 0 erreur » est justement l'information utile. Cet utilitaire sert quatre écrans et n'avait aucun test. - Dashboard : les menus ne proposent que les valeurs ayant des résultats, les catégories se restreignent au service choisi, et une catégorie devenue sans résultat est réinitialisée. Vérifié par mutation : casser la cascade fait bien échouer deux tests. - Admin : création, modification pré-remplie, confirmation avant suppression, remontée du refus 409 de l'API, désactivation et non suppression d'un monitoring, affichage des libellés à la place des identifiants. Corrige un défaut révélé par ces tests : referentielsConfig capturait les fonctions de l'API à l'import, figeant l'implémentation. Elles sont désormais résolues à l'appel, ce qui découple la configuration du module d'API.
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
/* 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\(--/);
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user