Kuma/tests/schemas/employeeSchema.test.ts
2026-04-27 20:28:43 +02:00

71 lines
2.3 KiB
TypeScript

import { describe, it, expect } from "vitest";
import { employeeSchema } from "@/src/modules/employee/schemas/employee-schema";
const defaultPermissions = {
employees: { view: true, create: false, edit: false, delete: false },
courses: { view: true, create: false, edit: false, delete: false },
rooms: { view: true, create: false, edit: false, delete: false },
};
const validData = {
email: "mitarbeiter@example.com",
roles: ["Trainer"],
isMultipleLocation: false,
permissions: defaultPermissions,
};
describe("employeeSchema", () => {
it("akzeptiert valide Mitarbeiterdaten", () => {
const result = employeeSchema.safeParse(validData);
expect(result.success).toBe(true);
});
it("lehnt ungültige E-Mail ab", () => {
const result = employeeSchema.safeParse({ ...validData, email: "keine-email" });
expect(result.success).toBe(false);
expect(result.error?.issues[0].path[0]).toBe("email");
});
it("lehnt leeres Rollen-Array ab", () => {
const result = employeeSchema.safeParse({ ...validData, roles: [] });
expect(result.success).toBe(false);
expect(result.error?.issues[0].path[0]).toBe("roles");
});
it("lehnt mehrere Standorte ohne Standort-Auswahl ab", () => {
const result = employeeSchema.safeParse({
...validData,
isMultipleLocation: true,
locations: [],
});
expect(result.success).toBe(false);
expect(result.error?.issues[0].path[0]).toBe("locations");
});
it("akzeptiert mehrere Standorte mit mindestens einem Standort", () => {
const result = employeeSchema.safeParse({
...validData,
isMultipleLocation: true,
locations: ["standort-1"],
});
expect(result.success).toBe(true);
});
it("akzeptiert mehrere Rollen", () => {
const result = employeeSchema.safeParse({
...validData,
roles: ["Trainer", "Admin", "Kassierer"],
});
expect(result.success).toBe(true);
});
it("akzeptiert alle Permissions als false", () => {
const noPermissions = {
employees: { view: false, create: false, edit: false, delete: false },
courses: { view: false, create: false, edit: false, delete: false },
rooms: { view: false, create: false, edit: false, delete: false },
};
const result = employeeSchema.safeParse({ ...validData, permissions: noPermissions });
expect(result.success).toBe(true);
});
});