/** ERWERB: Erwerb/Kauf je Tier — Sektion in der Rennmausakte (anlegen / bearbeiten / löschen). */ import { de, expect, skipUnlessMock, test } from './fixtures' const t = de.pages.tierTabs.acquisition test('Tierakte: Erwerb erfassen, bearbeiten und löschen', async ({ page, mockDb }) => { skipUnlessMock() await page.goto('/rennmaeuse/kruemel') const section = page.locator('section.ak-card', { hasText: t.sectionTitle }) await expect(section).toBeVisible() await expect(section).toContainText(t.empty) // Anlegen: Formular öffnen, Felder füllen, speichern. await section.getByRole('button', { name: t.addButton }).click() await section.getByLabel(t.fields.date).fill('2025-03-14') await section.getByLabel(t.fields.price).fill('25.50') await section.getByLabel(t.fields.note).fill('Auf der Börse gekauft.') await section.getByRole('button', { name: t.addButton }).click() // Eintrag erscheint in der Liste, im Mock gespeichert. await expect(section).toContainText('25,50') await expect(section).toContainText('Auf der Börse gekauft.') expect(mockDb).not.toBeNull() expect(mockDb!.acquisitions.length).toBe(1) expect(mockDb!.acquisitions[0]).toMatchObject({ gerbilId: 'kruemel', date: '2025-03-14', price: 25.5, note: 'Auf der Börse gekauft.', }) // Bearbeiten: Preis ändern. await section.getByRole('button', { name: t.edit }).click() await section.getByLabel(t.fields.price).fill('30') await section.getByRole('button', { name: t.saveButton }).click() await expect(section).toContainText('30,00') expect(mockDb!.acquisitions[0]).toMatchObject({ price: 30 }) // Löschen (window.confirm bestätigen). page.once('dialog', (d) => d.accept()) await section.getByRole('button', { name: t.delete }).click() await expect(section).toContainText(t.empty) expect(mockDb!.acquisitions.length).toBe(0) })