/** RÜCKNAHMEN: Verwaltungsseite für zurückgekommene Tiere (/ruecknahmen). */ import { de, expect, skipUnlessMock, test } from './fixtures' const t = de.pages.ruecknahmen test('Rücknahmen: Liste ist anfangs leer und das Formular lässt sich öffnen', async ({ page }) => { skipUnlessMock() await page.goto('/ruecknahmen') await expect(page.getByRole('heading', { name: t.title })).toBeVisible() await expect(page.getByText(t.empty)).toBeVisible() await page.getByRole('button', { name: t.newButton }).click() await expect(page.getByRole('heading', { name: t.formTitle })).toBeVisible() }) test('Rücknahmen: erfassen über Formular speichert und zeigt den Eintrag', async ({ page, mockDb }) => { skipUnlessMock() await page.goto('/ruecknahmen') await page.getByRole('button', { name: t.newButton }).click() // Tier + Kontakt aus den Dropdowns wählen, Datum + Grund eintragen. await page.getByRole('combobox', { name: t.fields.gerbil, exact: true }).selectOption({ label: 'Krümel' }) await page.getByRole('textbox', { name: t.fields.returnDate, exact: true }).fill('2026-05-01') await page.getByRole('combobox', { name: t.fields.fromContact, exact: true }).selectOption({ label: 'Zoohandlung Meier' }) await page.getByRole('textbox', { name: t.fields.note, exact: true }).fill('Allergie in der Familie') await page.getByRole('button', { name: t.save }).click() // Eintrag erscheint in der Liste mit verlinktem Tiernamen. const card = page.locator('.gerbil-card', { hasText: 'Krümel' }) await expect(card).toBeVisible() await expect(card).toContainText('Allergie in der Familie') await expect(card.getByRole('link', { name: 'Krümel' })).toBeVisible() // Im Mock persistiert (gerbilId + note). expect(mockDb).not.toBeNull() const rows = mockDb!.returns expect(rows.length).toBe(1) expect(rows[0]).toMatchObject({ gerbilId: 'kruemel', note: 'Allergie in der Familie' }) }) test('Rücknahmen: Eintrag löschen entfernt ihn aus der Liste', async ({ page, mockDb }) => { skipUnlessMock() // Einen Eintrag über die UI anlegen (Fixture erstellt die DB frisch pro Test). await page.goto('/ruecknahmen') await page.getByRole('button', { name: t.newButton }).click() await page.getByRole('combobox', { name: t.fields.gerbil, exact: true }).selectOption({ label: 'Krümel' }) await page.getByRole('button', { name: t.save }).click() await expect(page.locator('.gerbil-card', { hasText: 'Krümel' })).toBeVisible() // Löschen bestätigen. page.on('dialog', (d) => d.accept()) await page.locator('.gerbil-card', { hasText: 'Krümel' }).getByRole('button', { name: t.delete }).click() await expect(page.getByText(t.empty)).toBeVisible() expect(mockDb!.returns.length).toBe(0) })