Files
crewli/docs/TEST_SCENARIO.md
bert.hausmans 9acb27af3a feat: fase 2 backend — crowd types, persons, sections, shifts, invite flow
- Crowd Types + Persons CRUD (73 tests)
- Festival Sections + Time Slots + Shifts CRUD met assign/claim flow (84 tests)
- Invite Flow + Member Management met InvitationService (109 tests)
- Schema v1.6 migraties volledig uitgevoerd
- DevSeeder bijgewerkt met crowd types voor testorganisatie
2026-04-08 01:34:46 +02:00

4.1 KiB

Crewli — End-to-End Testscenario Fase 2

Scenario: "Test Festival BV organiseert Echt Feesten 2026"

Dit scenario valideert de complete operationele kern van Crewli. Voer dit uit na elke Fase 2 module om regressie te voorkomen.


Stap 1 — Voorbereiding (al werkend na Fase 1)

  • Login als orgadmin@crewli.test / password
  • Organisatie "Test Festival BV" is automatisch actief
  • Navigeer naar Evenementen
  • Maak aan: "Echt Feesten 2026" | slug: echt-feesten-2026 start: 10-07-2026 | eind: 12-07-2026 | timezone: Europe/Amsterdam
  • Evenement verschijnt in lijst met status "draft"
  • Klik door naar detail pagina — header toont naam, datum, status

Stap 2 — Festival Secties (Fase 2 Module 1)

  • Navigeer naar evenement detail > tab "Secties"
  • Maak sectie aan: "Bar" (sort_order: 1)
  • Maak sectie aan: "Security" (sort_order: 2)
  • Maak sectie aan: "Hospitality" (sort_order: 3)
  • Drie secties zichtbaar in lijst, correct gesorteerd

Stap 3 — Time Slots (Fase 2 Module 1)

  • Navigeer naar evenement detail > tab "Time Slots"
  • Maak time slot aan: Naam: "Vrijdag Avond" | type: VOLUNTEER datum: 10-07-2026 | start: 18:00 | eind: 02:00
  • Maak time slot aan: Naam: "Zaterdag Dag" | type: VOLUNTEER datum: 11-07-2026 | start: 10:00 | eind: 18:00
  • Maak time slot aan: Naam: "Zaterdag Avond" | type: VOLUNTEER datum: 11-07-2026 | start: 18:00 | eind: 02:00
  • Maak time slot aan: Naam: "Zondag" | type: CREW datum: 12-07-2026 | start: 10:00 | eind: 20:00
  • Vier time slots zichtbaar, correct gesorteerd op datum/tijd

Stap 4 — Shifts aanmaken (Fase 2 Module 2)

  • Navigeer naar sectie "Bar"
  • Maak shift aan: Time Slot "Vrijdag Avond" | slots_total: 4 slots_open_for_claiming: 3
  • Maak shift aan: Time Slot "Zaterdag Dag" | slots_total: 5 slots_open_for_claiming: 4
  • Maak shift aan: Time Slot "Zaterdag Avond" | slots_total: 4 slots_open_for_claiming: 3
  • Navigeer naar sectie "Security"
  • Maak shift aan: Time Slot "Vrijdag Avond" | slots_total: 3 slots_open_for_claiming: 2
  • Maak shift aan: Time Slot "Zaterdag Avond" | slots_total: 3 slots_open_for_claiming: 2
  • Shifts tonen fill_rate: 0/4, 0/5, etc.

Stap 5 — Personen aanmaken (Fase 2 Module 3)


Stap 6 — Shift toewijzing (Fase 2 Module 2)

  • Wijs Jan de Vries toe aan: Bar > Vrijdag Avond
  • Wijs Jan de Vries toe aan: Bar > Zaterdag Dag
  • Wijs Lisa Bakker toe aan: Bar > Vrijdag Avond
  • Wijs Ahmed Hassan toe aan: Security > Vrijdag Avond
  • Fill rate Bar > Vrijdag Avond: 2/4 ✓

Stap 7 — Conflictdetectie (Fase 2 Module 2)

  • Probeer Jan de Vries toe te wijzen aan: Security > Vrijdag Avond (zelfde time slot!)
  • Systeem weigert met foutmelding: "Jan de Vries is al ingepland voor Vrijdag Avond"
  • Conflictdetectie werkt op DB-niveau (UNIQUE constraint)

Stap 8 — Overzicht validatie

  • Event dashboard tiles tonen correcte aantallen: Secties: 3 | Shifts: 5 | Personen: 5
  • Sectie "Bar" toont 3 shifts, totaal 13 slots
  • Persoon "Jan de Vries" toont 2 shift-toewijzingen
  • Geen console errors in browser DevTools

Regressie — controleer na elke nieuwe module

Openstaande FK constraints (worden toegevoegd bij persons module)

  • shift_assignments.person_id → persons
  • shift_check_ins.person_id → persons
  • volunteer_availabilities.person_id → persons person_id kolommen zonder FK constraint in:
  • shift_assignments
  • shift_check_ins
  • volunteer_availabilities