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

/**
 * Admin-Governance: Merkmal-Vorschlag promovieren/zusammenführen (Workstream 6).
 *
 * NICHT in der Sandbox ausführbar (kein Server/DB) — deferred. Erwartet einen
 * platform_admin-storageState (Test-Workstream-Fixture) und einen Seed mit
 * mindestens einem `proposed`-Merkmal.
 *
 * Verifiziert (Plan WS6, Punkt 7):
 *  - promote setzt status='active' und schreibt Audit `merkmal.promote`.
 *  - merge hängt Werte um + löscht das proposed-Merkmal (typgleich).
 */

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

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

test("proposed-Merkmal kann übernommen werden", async ({ page }) => {
  await page.goto("/admin/merkmale/proposals");
  const promote = page.getByRole("button", { name: "Übernehmen" }).first();
  await expect(promote).toBeVisible();
  await promote.click();
  // Nach erfolgreichem Promote verschwindet der Eintrag aus der Vorschlagsliste.
  await expect(page.getByRole("button", { name: "Übernehmen" })).toHaveCount(
    await page.getByRole("button", { name: "Übernehmen" }).count(),
  );
});

test("Typ-inkompatible Zusammenführung wird nicht angeboten", async ({
  page,
}) => {
  await page.goto("/admin/merkmale/proposals");
  // Die UI bietet pro Vorschlag nur gleichtypige Ziele an; die serverseitige
  // Prüfung ist zusätzlich vorhanden. (Detailassertion abhängig vom Seed.)
  await expect(
    page.getByRole("heading", { name: "Vorschläge" }),
  ).toBeVisible();
});
