diff --git a/.husky/pre-commit b/.husky/pre-commit index d24fdfc..2312dc5 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1 @@ -#!/usr/bin/env sh -. "$(dirname -- "$0")/_/husky.sh" - npx lint-staged diff --git a/.husky/pre-push b/.husky/pre-push index d8fe6f1..42c7238 100644 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -1,4 +1 @@ -#!/usr/bin/env sh -. "$(dirname -- "$0")/_/husky.sh" - npm run test:run diff --git a/tests/api/auth/register.test.ts b/tests/api/auth/register.test.ts index 85e638a..dc47baf 100644 --- a/tests/api/auth/register.test.ts +++ b/tests/api/auth/register.test.ts @@ -7,8 +7,8 @@ vi.mock("@/src/lib/supabase/server", () => ({ vi.mock("@/src/lib/prisma", () => ({ prisma: { - manager: { findUnique: vi.fn() }, - user: { findUnique: vi.fn(), create: vi.fn() }, + manager: { findFirst: vi.fn() }, + user: { findFirst: vi.fn(), create: vi.fn() }, }, })); @@ -20,8 +20,8 @@ const mockSupabase = { auth: { signUp: mockSignUp } }; beforeEach(() => { vi.mocked(createClient).mockResolvedValue(mockSupabase as never); - vi.mocked(prisma.manager.findUnique).mockReset(); - vi.mocked(prisma.user.findUnique).mockReset(); + vi.mocked(prisma.manager.findFirst).mockReset(); + vi.mocked(prisma.user.findFirst).mockReset(); vi.mocked(prisma.user.create).mockReset(); mockSignUp.mockReset(); }); @@ -53,7 +53,7 @@ describe("POST /api/auth/register", () => { }); it("gibt 409 zurück wenn E-Mail bereits als Manager existiert", async () => { - vi.mocked(prisma.manager.findUnique).mockResolvedValue({ + vi.mocked(prisma.manager.findFirst).mockResolvedValue({ id: "m-1", email: validBody.email, } as never); @@ -65,8 +65,8 @@ describe("POST /api/auth/register", () => { }); it("gibt 409 zurück wenn User bereits existiert", async () => { - vi.mocked(prisma.manager.findUnique).mockResolvedValue(null); - vi.mocked(prisma.user.findUnique).mockResolvedValue({ + vi.mocked(prisma.manager.findFirst).mockResolvedValue(null); + vi.mocked(prisma.user.findFirst).mockResolvedValue({ id: "u-1", email: validBody.email, } as never); @@ -78,8 +78,8 @@ describe("POST /api/auth/register", () => { }); it("gibt 400 zurück bei Supabase-Auth-Fehler", async () => { - vi.mocked(prisma.manager.findUnique).mockResolvedValue(null); - vi.mocked(prisma.user.findUnique).mockResolvedValue(null); + vi.mocked(prisma.manager.findFirst).mockResolvedValue(null); + vi.mocked(prisma.user.findFirst).mockResolvedValue(null); mockSignUp.mockResolvedValue({ data: { user: null }, error: { message: "Email rate limit exceeded" }, @@ -93,8 +93,8 @@ describe("POST /api/auth/register", () => { const fakeUser = { id: "new-1" }; const createdUser = { id: "new-1", email: validBody.email, name: validBody.name }; - vi.mocked(prisma.manager.findUnique).mockResolvedValue(null); - vi.mocked(prisma.user.findUnique).mockResolvedValue(null); + vi.mocked(prisma.manager.findFirst).mockResolvedValue(null); + vi.mocked(prisma.user.findFirst).mockResolvedValue(null); mockSignUp.mockResolvedValue({ data: { user: fakeUser }, error: null }); vi.mocked(prisma.user.create).mockResolvedValue(createdUser as never); diff --git a/tests/msw/handlers.ts b/tests/msw/handlers.ts index 0d94207..85ce3e3 100644 --- a/tests/msw/handlers.ts +++ b/tests/msw/handlers.ts @@ -1,6 +1,22 @@ import { http, HttpResponse } from "msw"; export const handlers = [ + // Adressverifikation (verifyAddressExists) ruft Nominatim per echtem fetch auf. + // Standard-Handler liefert immer einen Treffer, damit Tests, die sich nicht + // gezielt mit Adressvalidierung befassen, nicht daran scheitern. + http.get("https://nominatim.openstreetmap.org/search", () => { + return HttpResponse.json([ + { + address: { + road: "Musterstraße", + house_number: "1", + postcode: "10115", + city: "Berlin", + }, + }, + ]); + }), + http.post("http://localhost/api/auth/login", async ({ request }) => { const body = (await request.json()) as Record;