feat(gehege): Reinigungszyklus (Maße, Kapazität, letzte/nächste Reinigung)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-22 22:43:19 +02:00
parent 5e14124322
commit 4e7cd21b70
15 changed files with 2071 additions and 14 deletions

View File

@@ -25,6 +25,35 @@ test.describe('Becken', () => {
await expect(page.getByText(tb.delete.conflict)).toBeVisible()
})
test('Reinigungszyklus: überfälliges Becken zeigt Hinweis + Als gereinigt markieren', async ({ page }) => {
skipUnlessMock()
await page.goto('/gehege')
await page.getByRole('link', { name: /Großbecken/ }).click()
await expect(page.getByRole('heading', { name: 'Großbecken' })).toBeVisible()
// Maße + Kapazität werden angezeigt
await expect(page.getByText('120×50 cm')).toBeVisible()
// Reinigung ist überfällig (nextCleaningDate in der Vergangenheit) -> Warn-Hinweis
await expect(page.getByText(/Reinigung fällig/)).toBeVisible()
// Als gereinigt markieren -> letzte Reinigung = heute, Hinweis verschwindet
await page.getByRole('button', { name: tb.cleaning.markCleaned }).click()
await expect(page.getByText(/Reinigung fällig/)).toBeHidden()
})
test('Reinigungszyklus: Becken mit Zyklus anlegen zeigt nächste Reinigung', async ({ page }) => {
await gotoSection(page, de.nav.enclosures)
await page.getByRole('link', { name: tb.newButton }).click()
const name = uniqueName('Zyklusbecken')
await page.getByLabel(`${tb.fields.name} *`).fill(name)
await page.getByLabel(tb.fields.size).fill('60×40 cm')
await page.getByLabel(tb.fields.capacity).fill('4')
await page.getByLabel(tb.fields.lastCleanedDate).fill('2026-06-01')
await page.getByLabel(tb.fields.cleaningCycleDays).fill('14')
await page.getByRole('button', { name: tb.form.save, exact: true }).click()
await expect(page.getByRole('heading', { name })).toBeVisible()
// nächste Reinigung = 2026-06-01 + 14 Tage = 15.06.2026 (in der def-list-Zeile)
await expect(page.getByText('15.06.2026', { exact: true })).toBeVisible()
})
test('Becken anlegen, bearbeiten und (leer) löschen', async ({ page }) => {
await gotoSection(page, de.nav.enclosures)
await page.getByRole('link', { name: tb.newButton }).click()