/**
 * QA-REGRESSION-1: GEHEGE-RENAME Lock-in.
 *
 * Sichert das Verhalten von drei GEHEGE-RENAME-Änderungen ab, die leicht still
 * brechen können (Redirects, Nav-Einträge, Landing-URL):
 *  (a) /becken/* → /gehege/* Redirect (bookmarks / externe Links)
 *  (b) Nav zeigt 'Gehege' + 🏜️, kein 'Becken', kein 'Start'-Eintrag
 *  (c) '/' (Index) landet auf /rennmaeuse (nicht mehr auf einer Startseite)
 *
 * Bereits abgedeckt (NICHT dupliziert):
 *  - gotoSection(de.nav.enclosures) navigiert zu Gehege-Heading: navigation.spec.ts:19-20
 *  - CRUD + 409 auf /gehege: becken-kontakte.spec.ts
 *  - Wurf-Link + Herkunft: tiere.spec.ts:101-128
 */
import { de, expect, test } from './fixtures'

// ── (a) /becken/* → /gehege/* Redirect ──────────────────────────────────────

test('GEHEGE-RENAME: /becken leitet auf /gehege weiter (bookmark-safe)', async ({ page }) => {
  await page.goto('/becken')
  // React Router BeckenRedirect navigiert → /gehege; Gehege-Heading muss sichtbar sein
  await expect(page.getByRole('heading', { name: de.pages.becken.title, exact: true })).toBeVisible()
  await expect(page).toHaveURL(/\/gehege$/)
})

test('GEHEGE-RENAME: /becken/neu leitet auf /gehege/neu weiter (deep redirect)', async ({
  page,
}) => {
  await page.goto('/becken/neu')
  // Neues-Gehege-Formular muss sichtbar sein, URL muss /gehege/neu sein
  await expect(page.getByRole('heading', { name: de.pages.becken.form?.createTitle ?? de.pages.becken.newButton })).toBeVisible({ timeout: 6_000 })
  await expect(page).toHaveURL(/\/gehege\/neu$/)
})

// ── (b) Nav: 'Gehege' ✓, 'Becken' ✗, 'Start' ✗ ──────────────────────────────

test('GEHEGE-RENAME: Nav hat "Gehege"-Eintrag mit Terrarium-Icon, kein "Becken"', async ({
  page,
}) => {
  await page.goto('/rennmaeuse')
  const nav = page.getByRole('navigation', { name: de.nav.mainNavigation })

  // Gehege-Link soll vorhanden sein (via „Mehr"-Blatt auf Phone oder direkt auf Desktop)
  // Wir öffnen „Mehr" um sekundäre Links sichtbar zu machen
  const moreBtn = nav.getByRole('button', { name: de.nav.more })
  if (await moreBtn.isVisible()) {
    await moreBtn.click()
  }
  await expect(nav.getByRole('link', { name: de.nav.enclosures })).toBeVisible()
  // "Becken" als separater Nav-Eintrag darf nicht mehr existieren
  await expect(nav.getByRole('link', { name: 'Becken', exact: true })).toBeHidden()
})

test('GEHEGE-RENAME: Nav hat keinen "Start"-Eintrag mehr (de.nav.home entfernt)', async ({
  page,
}) => {
  await page.goto('/rennmaeuse')
  // Warten bis die Tierliste geladen ist, dann Nav prüfen
  await expect(page.getByRole('heading', { name: de.pages.gerbils.title, exact: true })).toBeVisible()
  const nav = page.getByRole('navigation', { name: de.nav.mainNavigation })
  // 'Start' (de.nav.home wurde entfernt) darf kein Nav-Link mehr sein
  await expect(nav.getByRole('link', { name: 'Start', exact: true })).toBeHidden()
})

// ── (c) '/' landet auf /rennmaeuse ──────────────────────────────────────────

test('GEHEGE-RENAME: "/" leitet auf /rennmaeuse weiter — keine Startseite mehr', async ({
  page,
}) => {
  await page.goto('/')
  // URL muss /rennmaeuse sein (Navigate replace)
  await expect(page).toHaveURL(/\/rennmaeuse$/)
  // Tierliste-Heading sichtbar — nicht die alte Startseite
  await expect(
    page.getByRole('heading', { name: de.pages.gerbils.title, exact: true }),
  ).toBeVisible()
  // Alten Willkommen-Text darf es nicht mehr geben (de.pages.home wurde entfernt)
  await expect(page.getByText('Willkommen')).toBeHidden()
})

test('GEHEGE-RENAME: 404-Seite "Zur Startseite" landet weiterhin auf Tierliste', async ({
  page,
}) => {
  await page.goto('/diese-seite-gibt-es-nicht')
  await expect(page.getByText(de.pages.notFound.message)).toBeVisible()
  await page.getByRole('link', { name: de.pages.notFound.backHome }).click()
  // Nach Klick auf "Zur Startseite" → '/' → redirect → /rennmaeuse
  await expect(page.getByRole('heading', { name: de.pages.gerbils.title, exact: true })).toBeVisible()
  await expect(page).toHaveURL(/\/rennmaeuse$/)
})
