69 lines
2.0 KiB
TypeScript
69 lines
2.0 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { parseMasseSalarialeWorkbookRows } from "./masseSalarialeWorkbookImport";
|
|
|
|
describe("import du modèle Masse salariale", () => {
|
|
it("importe les prévisionnels sans confondre taux, primes et évolutions", () => {
|
|
const rows: Array<Array<string | number | Date | null>> = Array.from({ length: 5 }, () => []);
|
|
rows.push([
|
|
null,
|
|
"000001",
|
|
"NOM",
|
|
"PRENOM",
|
|
"Poste",
|
|
new Date("2024-01-01T00:00:00.000Z"),
|
|
35_000,
|
|
37_000,
|
|
2_000,
|
|
2_916.67,
|
|
0.45,
|
|
1_000,
|
|
36_000,
|
|
39_000,
|
|
2_500,
|
|
3_000,
|
|
0.46,
|
|
1_500,
|
|
40_000,
|
|
43_000,
|
|
2_000,
|
|
3_333.33,
|
|
null,
|
|
2_000,
|
|
0.5,
|
|
]);
|
|
|
|
const parsed = parseMasseSalarialeWorkbookRows(rows);
|
|
|
|
expect(parsed.salaries).toHaveLength(1);
|
|
expect(parsed.remunerations).toHaveLength(3);
|
|
expect(parsed.remunerations.find((row) => row.annee === 2026)).toMatchObject({
|
|
salaireAnnuelBrutHorsPrimesCents: 3_600_000,
|
|
salaireAnnuelBrutAvecPrimesCents: 3_900_000,
|
|
primeAstreinteCents: 250_000,
|
|
evolutionCents: 150_000,
|
|
tauxChargeBps: 4_600,
|
|
primeCents: 0,
|
|
});
|
|
expect(parsed.remunerations.find((row) => row.annee === 2027)).toMatchObject({
|
|
primeCents: 50,
|
|
evolutionCents: 200_000,
|
|
tauxChargeBps: null,
|
|
});
|
|
});
|
|
|
|
it("accepte les lignes SheetJS sans cellule A vide et les dates Excel numériques", () => {
|
|
const rows: Array<Array<string | number | Date | null>> = Array.from({ length: 5 }, () => []);
|
|
rows.push([
|
|
"000002", "NOM", "PRENOM", "Poste", 45_292,
|
|
35_000, 37_000, 2_000, 2_916.67, 0.45, 1_000,
|
|
36_000, 39_000, 2_500, 3_000, 0.46, 1_500,
|
|
40_000, 43_000, 2_000, 3_333.33, null, 2_000, 0.5,
|
|
]);
|
|
|
|
const parsed = parseMasseSalarialeWorkbookRows(rows);
|
|
|
|
expect(parsed.salaries).toMatchObject([{ matricule: "000002", dateEmbauche: "2024-01-01" }]);
|
|
expect(parsed.remunerations).toHaveLength(3);
|
|
});
|
|
});
|