/** FARBSCHLAG-GENOTYPE-SYNC: Bidirektionale Sync im Tier-Formular. */
import { de, expect, skipUnlessMock, test } from './fixtures'

const t = de.pages.gerbils

test('Farbschlag-Auswahl füllt Gencode automatisch aus', async ({ page }) => {
  skipUnlessMock()
  await page.goto('/rennmaeuse/neu')

  const genotypeInput = page
    .locator('label.field', { has: page.locator(`span:text-is("${t.fields.genotype}")`) })
    .locator('input')

  // Vor der Auswahl ist das Gencode-Feld leer.
  await expect(genotypeInput).toHaveValue('')

  // 'Agouti' wählen → Gencode wird automatisch befüllt.
  await page.locator('.color-picker-trigger').click()
  await page.locator('.color-picker-option', { hasText: 'Agouti' }).click()
  await expect(genotypeInput).toHaveValue('AA CC DD EE GG PP spsp rere')
})

test('Gencode-Eingabe aktualisiert die Farbschlag-Auswahl', async ({ page }) => {
  skipUnlessMock()
  await page.goto('/rennmaeuse/neu')

  const genotypeInput = page
    .locator('label.field', { has: page.locator(`span:text-is("${t.fields.genotype}")`) })
    .locator('input')

  // Gencode für Schwarz eintippen → Farbschlag-Select springt auf 'Schwarz'.
  await genotypeInput.fill('aa CC DD EE GG PP spsp rere')
  await expect(page.locator('.color-picker-trigger')).toHaveText(/Schwarz/)
})

test('Gencode ohne passende Farbschlag-Auswahl leert das Dropdown', async ({ page }) => {
  skipUnlessMock()
  await page.goto('/rennmaeuse/neu')

  const genotypeInput = page
    .locator('label.field', { has: page.locator(`span:text-is("${t.fields.genotype}")`) })
    .locator('input')

  // Zuerst eine bekannte Farbe wählen, damit das Select belegt ist.
  await page.locator('.color-picker-trigger').click()
  await page.locator('.color-picker-option', { hasText: 'Agouti' }).click()
  await expect(page.locator('.color-picker-trigger')).toHaveText(/Agouti/)

  // Marder-Genotyp: bekannte Farbe im Engine, aber NICHT im Mock-Dropdown
  // → Select wird auf '' (kein Eintrag) zurückgesetzt.
  await genotypeInput.fill('aa cchmcchm DD EE GG PP spsp rere')
  await expect(page.locator('.color-picker-trigger')).toHaveText(/— keine Angabe —/)
})

test('Unbekannter Genotyp leert das Farbschlag-Dropdown (Unbekannt-Fall)', async ({ page }) => {
  skipUnlessMock()
  await page.goto('/rennmaeuse/neu')

  const genotypeInput = page
    .locator('label.field', { has: page.locator(`span:text-is("${t.fields.genotype}")`) })
    .locator('input')

  await page.locator('.color-picker-trigger').click()
  await page.locator('.color-picker-option', { hasText: 'Blau' }).click()
  await expect(page.locator('.color-picker-trigger')).toHaveText(/Blau/)

  // aa CC dd EE gg pp → Unbekannter Farbschlag (nicht im Katalog) → Select leert sich.
  await genotypeInput.fill('aa CC dd EE gg pp spsp rere')
  await expect(page.locator('.color-picker-trigger')).toHaveText(/— keine Angabe —/)
})
