Cinq types d'amorce ne tiennent pas un registre. Un commerce de détail rencontre un accident de trajet, une mise à pied, un congé pour examen, une visite médicale — et faute de type, ces absences se saisissent en « congé sans solde », ce qui fausse à la fois le décompte et la paie. Vingt-quatre types désormais, relevés sur le sélecteur du produit audité et recoupés avec les rubriques du dossier de paie. Les drapeaux sont des valeurs d'amorce, modifiables depuis les réglages : la nature Sécurité sociale ne se discute pas, mais l'acquisition de congés pendant une absence dépend de la convention. « Repos hebdomadaire » figure au sélecteur audité et pas ici. C'est un repos légal, porté par le modèle `Rest`, pas une absence qui se demande — en faire un type d'absence laisserait un manager refuser une obligation. Les familles de couleur passent de cinq à neuf, et deviennent une liste fermée avec ses libellés. Le champ des réglages était libre : une clé fautive s'y enregistrait sans bruit et la grille affichait un gris inexplicable. Quatre familles s'ajoutent — famille, formation, jour férié, sanction. Une sanction se distingue d'une absence ordinaire : elle est subie, elle se conteste, elle ne se lit pas comme un congé. La couleur groupe, le libellé précise. Donner sa teinte à chacun des vingt-quatre types rendrait la grille illisible bien avant la fin de la liste. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
29 lines
969 B
TypeScript
29 lines
969 B
TypeScript
import { describe, expect, it } from 'vitest';
|
||
|
||
import {
|
||
ABSENCE_COLOR_KEYS,
|
||
ABSENCE_COLORS,
|
||
isAbsenceColorKey,
|
||
} from '@/domain/absences/colors';
|
||
|
||
describe('familles de couleur des absences', () => {
|
||
it('n’a pas deux fois la même clé', () => {
|
||
expect(new Set(ABSENCE_COLOR_KEYS).size).toBe(ABSENCE_COLOR_KEYS.length);
|
||
});
|
||
|
||
it('donne un libellé à chaque famille', () => {
|
||
for (const color of ABSENCE_COLORS) {
|
||
expect(color.label, `libellé manquant pour ${color.key}`).toBeTruthy();
|
||
}
|
||
});
|
||
|
||
it('refuse une clé hors liste', () => {
|
||
// La grille se replie alors sur le gris. Le contrôle sert à empêcher qu'une
|
||
// clé fautive s'enregistre en base : elle y resterait invisible jusqu'à ce
|
||
// qu'un planning affiche une barre grise sans qu'on sache pourquoi.
|
||
expect(isAbsenceColorKey('neutral')).toBe(false);
|
||
expect(isAbsenceColorKey('')).toBe(false);
|
||
expect(isAbsenceColorKey('cp')).toBe(true);
|
||
});
|
||
});
|