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

test.describe("Equipment Detail Page", () => {
  test("should show error for non-existent ID", async ({ page }) => {
    await page.goto("/mietkatalog/999999");
    await expect(page.getByText("nicht gefunden")).toBeVisible();
  });

  test("should have link back to mietkatalog on error", async ({ page }) => {
    await page.goto("/mietkatalog/999999");
    const link = page.getByText("Zurück zum Mietkatalog");
    await expect(link).toBeVisible();
  });

  test("should display breadcrumb navigation", async ({ page }) => {
    await page.goto("/mietkatalog/1");
    await expect(page.getByText("Home")).toBeVisible();
    await expect(page.getByText("Mietkatalog")).toBeVisible();
  });

  test("should show equipment name as heading", async ({ page }) => {
    await page.goto("/mietkatalog/1");
    const name = page.getByTestId("equipment-name");
    const errorState = page.getByText("nicht gefunden");
    const hasContent = await name.isVisible().catch(() => false) || await errorState.isVisible().catch(() => false);
    expect(hasContent).toBeTruthy();
  });

  test("should show specs section if equipment found", async ({ page }) => {
    await page.goto("/mietkatalog/1");
    const specs = page.getByTestId("equipment-specs");
    const errorState = page.getByText("nicht gefunden");
    const hasContent = await specs.isVisible().catch(() => false) || await errorState.isVisible().catch(() => false);
    expect(hasContent).toBeTruthy();
  });

  test("should have Mietanfrage button", async ({ page }) => {
    await page.goto("/mietkatalog/1");
    const btn = page.getByTestId("add-to-cart-detail");
    const errorState = page.getByText("nicht gefunden");
    const hasContent = await btn.isVisible().catch(() => false) || await errorState.isVisible().catch(() => false);
    expect(hasContent).toBeTruthy();
  });

  test("should navigate back to mietkatalog via breadcrumb", async ({ page }) => {
    await page.goto("/mietkatalog/1");
    const breadcrumbLink = page.locator('a[href="/mietkatalog"]').first();
    if (await breadcrumbLink.isVisible()) {
      await breadcrumbLink.click();
      await page.waitForURL("/mietkatalog");
      await expect(page).toHaveURL(/\/mietkatalog$/);
    }
  });
});
