import { test, expect } from "@playwright/test";

/**
 * Admin-Bereitstellung: Wehr anlegen (Workstream 6).
 *
 * NICHT in der Sandbox ausführbar (kein Server/DB) — deferred. Erwartet einen
 * platform_admin-storageState (Test-Workstream-Fixture) sowie ein erreichbares
 * Nominatim für die Geokodierung (sonst „nicht geokodiert"-Hinweis).
 *
 * Verifiziert (Plan WS6, Punkt 10):
 *  - Formular legt Brigade + ersten wehr_admin (local, argon2id) an.
 *  - Einmal-Passwort wird genau einmal angezeigt.
 *  - Audit `brigade.create` + `user.create` (über provisioning.ts).
 */

test.skip(
  !process.env.E2E_PLATFORM_ADMIN_STATE,
  "benötigt platform_admin-Fixture (Test-Workstream)",
);

test.use({
  storageState:
    process.env.E2E_PLATFORM_ADMIN_STATE ?? { cookies: [], origins: [] },
});

test("Wehr anlegen zeigt Einmal-Passwort", async ({ page }) => {
  await page.goto("/admin/wehren/neu");

  const stamp = Date.now();
  await page.getByLabel("Name").first().fill(`FF Testdorf ${stamp}`);
  await page.getByLabel("Straße").fill("Hauptstraße 1");
  await page.getByLabel("PLZ").fill("3100");
  await page.getByLabel("Ort").fill("St. Pölten");
  await page.getByLabel("Telefon").fill("+43 2742 12345");
  await page.getByLabel("Admin-Name").fill("Test Admin");
  await page.getByLabel("Admin-E-Mail").fill(`admin-${stamp}@test.at`);

  await page.getByRole("button", { name: "Wehr anlegen" }).click();

  await expect(page.locator("code")).toBeVisible();
  const pw = await page.locator("code").innerText();
  expect(pw.trim().length).toBeGreaterThan(6);
});
