mirror of
https://github.com/Since-3/Kuma.git
synced 2026-10-12 21:41:17 +00:00
100 lines
3.2 KiB
TypeScript
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);
|
|
}
|
|
});
|
|
});
|