import { describe, expect, it } from "vitest"; import { ABSENCE_TYPES, absenceLabel, isAbsenceType, statusLabel } from "@/lib/absence"; // The stored employment status is still 'Karenz' — renaming the enum value // would mean rewriting every stored function that spells it. The rename // therefore lives entirely in this mapping, which makes it the one thing // standing between the database value and what an HR user reads. describe("statusLabel", () => { it("renders the stored 'Karenz' value as Langzeitabwesenheit", () => { expect(statusLabel("Karenz")).toBe("Langzeitabwesenheit"); }); it("leaves the other statuses alone", () => { expect(statusLabel("Aktiv")).toBe("Aktiv"); expect(statusLabel("Geplant")).toBe("Geplant"); expect(statusLabel("Ausgetreten")).toBe("Ausgetreten"); }); }); describe("absenceLabel", () => { it("shows the specific kind when one is recorded", () => { expect(absenceLabel("Karenz", "Bildungskarenz")).toBe("Bildungskarenz"); expect(absenceLabel("Karenz", "Präsenzdienst")).toBe("Präsenzdienst"); }); it("falls back to the generic name for absences recorded before the field existed", () => { expect(absenceLabel("Karenz", null)).toBe("Langzeitabwesenheit"); expect(absenceLabel("Karenz", "")).toBe("Langzeitabwesenheit"); }); it("ignores a type that is not on the list rather than displaying it", () => { // The column has a check constraint, but the value arrives here as a // plain string — echoing an unknown one would put unvalidated text in // the status chip. expect(absenceLabel("Karenz", "Ausgedachte Karenz")).toBe("Langzeitabwesenheit"); }); it("ignores the absence type entirely for any other status", () => { expect(absenceLabel("Aktiv", "Sabbatical")).toBe("Aktiv"); expect(absenceLabel("Ausgetreten", "Papamonat")).toBe("Ausgetreten"); }); }); describe("ABSENCE_TYPES", () => { it("holds the thirteen kinds, in the order they are offered", () => { expect(ABSENCE_TYPES).toHaveLength(13); expect(ABSENCE_TYPES[0]).toBe("Wochenhilfe (Mutterschutz)"); expect(ABSENCE_TYPES.at(-1)).toBe("Sabbatical"); }); it("guards every entry with isAbsenceType", () => { for (const t of ABSENCE_TYPES) expect(isAbsenceType(t)).toBe(true); expect(isAbsenceType("Karenz")).toBe(false); expect(isAbsenceType(null)).toBe(false); }); });