/** FEAT-NAMEGEN: UC-1 — 'Name vorschlagen'-Panel auf der GerbilFormPage. */
import { de, expect, skipUnlessMock, test } from './fixtures'

const t = de.namegen
const tf = de.pages.gerbils.form

test('Name-vorschlagen-Panel öffnet sich und zeigt Vorschläge (FEAT-NAMEGEN)', async ({ page }) => {
  skipUnlessMock()
  await page.goto('/rennmaeuse/neu')
  await expect(page.getByRole('heading', { name: tf.createTitle })).toBeVisible()

  // Panel öffnen
  await page.getByRole('button', { name: t.button }).click()
  await expect(page.getByText(t.panelTitle)).toBeVisible()

  // Vorschläge laden
  await page.getByRole('button', { name: t.loadButton }).click()
  // Fenrir ist im Mock immer dabei (kein Buchstabe-Filter)
  await expect(page.getByRole('button', { name: 'Fenrir' })).toBeVisible()
  await expect(page.getByText('Wolf aus der Nordischen Mythologie')).toBeVisible()
})

test('Klick auf Vorschlag befüllt Namensfeld und schließt Panel (FEAT-NAMEGEN)', async ({ page }) => {
  skipUnlessMock()
  await page.goto('/rennmaeuse/neu')
  await page.getByRole('button', { name: t.button }).click()
  await page.getByRole('button', { name: t.loadButton }).click()
  await expect(page.getByRole('button', { name: 'Fenrir' })).toBeVisible()

  // Klick auf Vorschlag 'Fenrir'
  await page.getByRole('button', { name: 'Fenrir' }).click()

  // Panel geschlossen, Name-Feld befüllt
  await expect(page.getByText(t.panelTitle)).toBeHidden()
  await expect(page.getByLabel(`${de.pages.gerbils.fields.name} *`)).toHaveValue('Fenrir')
})

test('Buchstabe-Filter schränkt Vorschläge ein (FEAT-NAMEGEN)', async ({ page }) => {
  skipUnlessMock()
  await page.goto('/rennmaeuse/neu')
  await page.getByRole('button', { name: t.button }).click()
  await page.getByLabel(t.letterLabel).fill('F')
  await page.getByRole('button', { name: t.loadButton }).click()

  // Mock gibt nur Namen mit F zurück: Fenrir + Freya
  await expect(page.getByRole('button', { name: 'Fenrir' })).toBeVisible()
  await expect(page.getByRole('button', { name: 'Freya' })).toBeVisible()
  // Artemis (A) nicht sichtbar
  await expect(page.getByRole('button', { name: 'Artemis' })).toBeHidden()
})

test('503 NamesKeyMissing zeigt freundlichen Hinweis (FEAT-NAMEGEN)', async ({ page, mockDb }) => {
  skipUnlessMock()
  if (mockDb) mockDb.namesConfigured = false
  await page.goto('/rennmaeuse/neu')
  await page.getByRole('button', { name: t.button }).click()
  await page.getByRole('button', { name: t.loadButton }).click()
  await expect(page.getByText(t.keyMissing)).toBeVisible()
})
