import { expect, test } from "@playwright/test"; import { login, mockKontrollGrundgeruest, mockLogin, TEST_KONTROLLE, TEST_OBJEKT } from "./mockApi"; test("Objekt-Sperre zeigt Übernahme-Dialog, Übernehmen startet neue Kontrolle", async ({ page }) => { await mockLogin(page); await mockKontrollGrundgeruest(page); let uebernommen = false; await page.route("**/api/v1/objekte/*/kontrollen", async (route) => { const body = route.request().postDataJSON() as { uebernehmen: boolean }; if (!body.uebernehmen) { await route.fulfill({ status: 409, json: { benutzer: "Kollege Müller", seit: "vor 12 Minuten" }, }); return; } uebernommen = true; await route.fulfill({ status: 201, json: TEST_KONTROLLE }); }); await login(page); await page.goto(`/objekte/${TEST_OBJEKT.id}/kontrolle`); await expect(page.getByRole("heading", { name: "Objekt gesperrt" })).toBeVisible(); await expect(page.getByText("Kollege Müller")).toBeVisible(); await expect(page.getByText("vor 12 Minuten")).toBeVisible(); await page.getByRole("button", { name: "Trotzdem übernehmen" }).click(); await expect(page.getByRole("heading", { name: "Objekt gesperrt" })).not.toBeVisible(); expect(uebernommen).toBe(true); });