44 lines
1.6 KiB
TypeScript
44 lines
1.6 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { getMasseSalarialeUiState, getMasseSalarialeYearSummary } from './masseSalariale';
|
|
|
|
describe('getMasseSalarialeUiState', () => {
|
|
it('distingue chargement, erreur, absence de données et affichage prêt', () => {
|
|
expect(getMasseSalarialeUiState(true, false, 0)).toBe('loading');
|
|
expect(getMasseSalarialeUiState(false, true, 0)).toBe('error');
|
|
expect(getMasseSalarialeUiState(false, false, 0)).toBe('empty');
|
|
expect(getMasseSalarialeUiState(false, false, 1)).toBe('ready');
|
|
});
|
|
});
|
|
|
|
describe('getMasseSalarialeYearSummary', () => {
|
|
const rows = [
|
|
{ annee: 2025, salaireAnnuelBrutAvecPrimesCents: 4_000_000, statut: 'annuel' },
|
|
{ annee: 2025, salaireAnnuelBrutAvecPrimesCents: 5_500_000, statut: 'annuel' },
|
|
{ annee: 2026, salaireAnnuelBrutAvecPrimesCents: 2_000_000, statut: 'cumul_provisoire' },
|
|
];
|
|
|
|
it('calcule le total et le statut annuel pour un exercice clôturé', () => {
|
|
expect(getMasseSalarialeYearSummary(rows, 2025)).toEqual({
|
|
salaryCount: 2,
|
|
annualGrossWithBonusesCents: 9_500_000,
|
|
status: 'annuel',
|
|
});
|
|
});
|
|
|
|
it('préserve le statut provisoire pour une année en cours', () => {
|
|
expect(getMasseSalarialeYearSummary(rows, 2026)).toMatchObject({
|
|
salaryCount: 1,
|
|
annualGrossWithBonusesCents: 2_000_000,
|
|
status: 'cumul_provisoire',
|
|
});
|
|
});
|
|
|
|
it('retourne null et non zéro pour une année sans rémunération importée', () => {
|
|
expect(getMasseSalarialeYearSummary(rows, 2027)).toEqual({
|
|
salaryCount: 0,
|
|
annualGrossWithBonusesCents: null,
|
|
status: 'empty',
|
|
});
|
|
});
|
|
});
|