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

100 lines
3.2 KiB
TypeScript

import { describe, it, expect } from "vitest";
import { userRegisterSchema } from "@/src/modules/auth/validation/userRegisterSchema";
const validData = {
fullName: "Max Mustermann",
email: "max@example.com",
password: "Sicher!123",
passwordConfirm: "Sicher!123",
birthday: "1990-05-15",
plz: "10115",
place: "Berlin",
street: "Musterstraße 1",
gender: "Men" as const,
};
describe("userRegisterSchema", () => {
it("akzeptiert vollständig valide Daten", () => {
const result = userRegisterSchema.safeParse(validData);
expect(result.success).toBe(true);
});
it("lehnt zu kurzen Namen ab", () => {
const result = userRegisterSchema.safeParse({ ...validData, fullName: "X" });
expect(result.success).toBe(false);
expect(result.error?.issues[0].path[0]).toBe("fullName");
});
it("lehnt ungültige E-Mail ab", () => {
const result = userRegisterSchema.safeParse({ ...validData, email: "keine-email" });
expect(result.success).toBe(false);
expect(result.error?.issues[0].path[0]).toBe("email");
});
it("lehnt Passwort ohne Großbuchstaben ab", () => {
const result = userRegisterSchema.safeParse({
...validData,
password: "sicher!123",
passwordConfirm: "sicher!123",
});
expect(result.success).toBe(false);
expect(result.error?.issues[0].path[0]).toBe("password");
});
it("lehnt Passwort ohne Sonderzeichen ab", () => {
const result = userRegisterSchema.safeParse({
...validData,
password: "Sicher1234",
passwordConfirm: "Sicher1234",
});
expect(result.success).toBe(false);
expect(result.error?.issues[0].path[0]).toBe("password");
});
it("lehnt Passwort unter 8 Zeichen ab", () => {
const result = userRegisterSchema.safeParse({
...validData,
password: "Ku!1",
passwordConfirm: "Ku!1",
});
expect(result.success).toBe(false);
});
it("lehnt nicht übereinstimmende Passwörter ab", () => {
const result = userRegisterSchema.safeParse({
...validData,
passwordConfirm: "AndersPasswort!1",
});
expect(result.success).toBe(false);
expect(result.error?.issues[0].path[0]).toBe("passwordConfirm");
});
it("lehnt Geburtsdatum in der Zukunft ab", () => {
const result = userRegisterSchema.safeParse({ ...validData, birthday: "2099-01-01" });
expect(result.success).toBe(false);
expect(result.error?.issues[0].path[0]).toBe("birthday");
});
it("lehnt ungültiges Datumsformat ab", () => {
const result = userRegisterSchema.safeParse({ ...validData, birthday: "15.05.1990" });
expect(result.success).toBe(false);
});
it("lehnt fehlendes Geschlecht ab", () => {
const result = userRegisterSchema.safeParse({ ...validData, gender: "" });
expect(result.success).toBe(false);
expect(result.error?.issues[0].path[0]).toBe("gender");
});
it("lehnt ungültigen Gender-Wert ab", () => {
const result = userRegisterSchema.safeParse({ ...validData, gender: "Unknown" });
expect(result.success).toBe(false);
});
it("akzeptiert alle Gender-Werte", () => {
for (const gender of ["Men", "Woman", "Various"] as const) {
const result = userRegisterSchema.safeParse({ ...validData, gender });
expect(result.success).toBe(true);
}
});
});