feat(abgabe): Reservierungs-/Abgabe-Status (verfügbar/reserviert/abgegeben)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
78
gerbil-manager-web/e2e/reservierungen.spec.ts
Normal file
78
gerbil-manager-web/e2e/reservierungen.spec.ts
Normal file
@@ -0,0 +1,78 @@
|
||||
/**
|
||||
* ABGABE-STATUS: Reservierungs-/Abgabe-Status-Seite (verfügbar → reserviert → abgegeben).
|
||||
* Erreichbar über das Menü („Reservierungen"). Liste mit Status-Chips, Tier-/Kontakt-Links,
|
||||
* Anlegen, Status-Wechsel und Löschen.
|
||||
*/
|
||||
import { de, expect, gotoSection, skipUnlessMock, acceptNextDialog, test } from './fixtures'
|
||||
|
||||
const tr = de.pages.reservierungen
|
||||
|
||||
test.describe('Reservierungen', () => {
|
||||
test.beforeEach(() => skipUnlessMock())
|
||||
|
||||
test('über das Menü erreichbar, zeigt die Seed-Reservierungen', async ({ page }) => {
|
||||
await gotoSection(page, de.nav.reservations)
|
||||
await expect(page.getByRole('heading', { name: tr.title })).toBeVisible()
|
||||
|
||||
// Reservierte + abgegebene + verfügbare Vormerkung sichtbar.
|
||||
await expect(page.getByText('Balu Abgabe')).toBeVisible()
|
||||
await expect(page.getByText('Pippa')).toBeVisible()
|
||||
await expect(page.getByText('Benny Abgabe')).toBeVisible()
|
||||
})
|
||||
|
||||
test('Status-Filter filtern korrekt (Anzahl-Badges stimmen)', async ({ page }) => {
|
||||
await page.goto('/reservierungen')
|
||||
|
||||
const filters = page.locator('.reservierungen-filter')
|
||||
await filters.filter({ hasText: tr.filters.reserviert }).click()
|
||||
await expect(page.getByText('Balu Abgabe')).toBeVisible()
|
||||
await expect(page.getByText('Benny Abgabe')).toHaveCount(0)
|
||||
|
||||
await filters.filter({ hasText: tr.filters.abgegeben }).click()
|
||||
await expect(page.getByText('Pippa')).toBeVisible()
|
||||
await expect(page.getByText('Balu Abgabe')).toHaveCount(0)
|
||||
})
|
||||
|
||||
test('Tier- und Kontakt-Bezüge sind verlinkt', async ({ page }) => {
|
||||
await page.goto('/reservierungen')
|
||||
const card = page.locator('.reservation-card').filter({ hasText: 'Balu Abgabe' })
|
||||
await expect(card.getByRole('link', { name: 'Balu Abgabe' })).toHaveAttribute('href', /\/rennmaeuse\/sale-balu/)
|
||||
await expect(card.getByRole('link', { name: 'Familie Huber' })).toHaveAttribute('href', /\/kontakte\/con-huber/)
|
||||
})
|
||||
|
||||
test('Status wechseln: verfügbares Tier reservieren', async ({ page }) => {
|
||||
await page.goto('/reservierungen')
|
||||
const card = page.locator('.reservation-card').filter({ hasText: 'Benny Abgabe' })
|
||||
await expect(card.locator('.reservation-badge--verfuegbar')).toBeVisible()
|
||||
|
||||
await card.getByRole('button', { name: tr.actions.markReserved }).click()
|
||||
await expect(
|
||||
page.locator('.reservation-card').filter({ hasText: 'Benny Abgabe' }).locator('.reservation-badge--reserviert'),
|
||||
).toBeVisible()
|
||||
})
|
||||
|
||||
test('neue Reservierung anlegen', async ({ page }) => {
|
||||
await page.goto('/reservierungen')
|
||||
await page.getByRole('button', { name: tr.newButton }).click()
|
||||
|
||||
const form = page.locator('.reservation-form')
|
||||
await expect(form).toBeVisible()
|
||||
// Ein Tier auswählen (Krümel ist in den Seed-Daten vorhanden).
|
||||
await form.getByLabel(tr.form.animal).selectOption({ label: 'Krümel' })
|
||||
await form.getByRole('button', { name: tr.form.save }).click()
|
||||
|
||||
// Die neue Reservierung erscheint in der Liste.
|
||||
await expect(page.locator('.reservation-card').filter({ hasText: 'Krümel' })).toBeVisible()
|
||||
})
|
||||
|
||||
test('Reservierung löschen', async ({ page }) => {
|
||||
await page.goto('/reservierungen')
|
||||
const card = page.locator('.reservation-card').filter({ hasText: 'Benny Abgabe' })
|
||||
await expect(card).toBeVisible()
|
||||
|
||||
acceptNextDialog(page)
|
||||
await card.getByRole('button', { name: tr.actions.delete }).click()
|
||||
|
||||
await expect(page.locator('.reservation-card').filter({ hasText: 'Benny Abgabe' })).toHaveCount(0)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user