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

/**
 * Happy-Path des Wehr-Bereichs: Fuhrpark, Geräte, Profil, Benutzer
 * (Workstream 7).
 *
 * NICHT in der Sandbox ausführbar (kein Server/DB) — deferred. Erwartet einen
 * angemeldeten `wehr_admin` (Fixture aus dem Test-Workstream) und befüllte
 * Taxonomie (Seed/Admin).
 */

test.describe("Verwaltung: Fuhrpark & Benutzer (Happy-Path)", () => {
  test.skip(
    !process.env.E2E_WEHR_ADMIN_STATE,
    "benötigt wehr_admin-Fixture (Test-Workstream)",
  );
  test.use({
    storageState: process.env.E2E_WEHR_ADMIN_STATE ?? { cookies: [], origins: [] },
  });

  test("Fahrzeug per Vorlage anlegen befüllt typisierte Merkmale", async ({
    page,
  }) => {
    await page.goto("/verwaltung/fahrzeuge/neu");
    // Erste echte Vorlage wählen (Index 0 ist „Ohne Vorlage (frei)").
    await page.getByLabel("Fahrzeug-Vorlage").selectOption({ index: 1 });
    // Vorlagen-Merkmale werden nachgeladen (Löschwassertank, Feuerlöschpumpe …).
    await expect(page.getByText("Löschwassertank")).toBeVisible();
    await page.getByLabel("Name").fill("HLF 2 Musterdorf");
    await page.getByRole("button", { name: "Speichern" }).click();
    await expect(page).toHaveURL(/\/verwaltung\/fahrzeuge$/);
    await expect(page.getByText("HLF 2 Musterdorf")).toBeVisible();
  });

  test("Gerät 'im Gerätehaus' anlegen (keine Fahrzeug-Zuordnung)", async ({
    page,
  }) => {
    await page.goto("/verwaltung/geraete/neu");
    await page.getByLabel("Name").fill("Tragkraftspritze 1");
    await page.getByLabel("Kategorie").selectOption({ index: 1 });
    // Zuordnung bleibt auf 'im Gerätehaus'.
    await page.getByRole("button", { name: "Speichern" }).click();
    await expect(page).toHaveURL(/\/verwaltung\/geraete$/);
    await expect(page.getByText("im Gerätehaus").first()).toBeVisible();
  });

  test("Profil speichern zeigt Bestätigung", async ({ page }) => {
    await page.goto("/verwaltung/profil");
    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.getByRole("button", { name: "Speichern" }).click();
    await expect(page.getByText(/gespeichert|geokodiert|geokodiert werden/)).toBeVisible();
  });

  test("Benutzer anlegen zeigt Einmal-Passwort", async ({ page }) => {
    await page.goto("/verwaltung/benutzer");
    await page.getByLabel("Name").fill("Neue Person");
    await page.getByLabel("E-Mail").fill("neu@ff-musterdorf.at");
    await page.getByLabel("Rolle").selectOption("wehr_read");
    await page.getByRole("button", { name: "Benutzer anlegen" }).click();
    await expect(page.getByText(/Einmal-Passwort/)).toBeVisible();
  });
});
