chore: seminarhof customer project

This commit is contained in:
e2e
2026-07-10 23:39:57 +02:00
commit 00c0dbd5ea
188 changed files with 20779 additions and 0 deletions

View File

@@ -0,0 +1,102 @@
@admin @bookings
Feature: Admin booking detail — read & edit
The admin booking-detail page replaces the spreadsheet admins must be able
to *edit* every column they used to edit, not just look at it.
Background:
Given "the admin" is logged in
When they visit "/admin/bookings/b_yoga_2026_summer"
# ── Read ────────────────────────────────────────────────────────────────
Scenario: admin opens the summer retreat detail
Then they see "Summer Yoga Retreat 2026"
And they see "Yoga Retreat e.V."
And they see "Teilnehmende"
Scenario: admin sees the seeded participant list
When they click "Teilnehmende"
Then they see "Anja Weber"
And they see "Bernd Krause"
# ── Edit booking metadata ───────────────────────────────────────────────
Scenario: admin edits the course name and persists across reload
When they fill "courseName" with "Summer Yoga Retreat 2026 revised"
And they click "Änderungen speichern"
Then they see "Gespeichert"
When they visit "/admin/bookings/b_yoga_2026_summer"
Then they see "Summer Yoga Retreat 2026 revised"
Scenario: admin updates expected participants
When they fill "expectedPersons" with "32"
And they click "Änderungen speichern"
Then they see "Gespeichert"
Scenario: admin toggles half-house and online listing flags
When they select "Ja" from "halfHouse"
And they select "Ja" from "onlineAd"
And they click "Änderungen speichern"
Then they see "Gespeichert"
Scenario: admin cannot save when no field changed
Then they see "Änderungen speichern"
# Save button is disabled until a field is touched — clicking has no effect.
# ── Edit organisation ──────────────────────────────────────────────────
Scenario: admin edits organisation contact email and phone
When they fill "organisation-email" with "ops@yoga-retreat.example"
And they fill "organisation-phone" with "+49 30 12345678"
And they click "Organisation speichern"
Then they see "Organisation gespeichert"
When they visit "/admin/bookings/b_yoga_2026_summer"
Then the field "organisation-email" has value "ops@yoga-retreat.example"
And the field "organisation-phone" has value "+49 30 12345678"
Scenario: organisation save rejects an invalid email
When they fill "organisation-email" with "not-an-email"
And they click "Organisation speichern"
Then they do not see "Organisation gespeichert"
# ── Booking status transitions ─────────────────────────────────────────
Scenario: admin cancels a booking
# ConfirmButton: first click arms, second click (testid `-confirm`) fires.
When they trigger booking action "action-cancel-booking"
Then they see "Storniert"
And they do not see "Buchung stornieren"
# ── Participants CRUD ──────────────────────────────────────────────────
Scenario: admin adds a participant
When they click "Teilnehmende"
And they fill "new-participant-name" with "Ingrid Vogel"
And they click "Hinzufügen"
Then they see "Ingrid Vogel"
Scenario: admin removes a participant
When they click "Teilnehmende"
And they accept the next confirmation
And they click "remove-participant-p_s_08"
Then they do not see "Hans Becker"
Scenario: admin changes a participant's diet
When they click "Teilnehmende"
And they select "Pescetarisch" from "participant-diet-p_s_06"
Then the field "participant-diet-p_s_06" has value "Pescetarisch"
# ── Allergies CRUD ─────────────────────────────────────────────────────
Scenario: admin adds an allergy to a participant
When they click "Teilnehmende"
And they fill "new-allergy-p_s_02" with "shellfish"
And they click "add-allergy-p_s_02"
Then they see "Meeresfrüchte"
Scenario: admin removes an existing allergy
When they click "Teilnehmende"
And they click "remove-allergy-p_s_01-nuts"
Then they do not see "nuts"
# ── Rooms assign / unassign ────────────────────────────────────────────
Scenario: admin assigns and then unassigns a participant to a room
When they click "Zimmer"
And they select "Anja Weber" from "assign-room-r_1"
Then they see "Anja Weber"
When they click "Entfernen"
Then the field "assign-room-r_1" has value ""