Exploratory testing via rodney (API + browser, 26/26 pass)
## Summary
- Add PATCH `/events/{eventToken}` endpoint for organizers to cancel events (irreversible)
- Store `cancelled` flag and optional `cancellationReason` on event entity (Liquibase migration)
- Frontend: cancel bottom sheet with reason textarea, red cancellation banner for visitors, RSVP buttons hidden on cancelled events
- Refactor domain models to records and move exceptions to sub-package
- Block new RSVPs on cancelled events (409 Conflict)
## Test plan
- [x] Backend unit + integration tests (EventServiceCancelTest, EventControllerIntegrationTest)
- [x] Frontend E2E tests (cancel-event.spec.ts, cancelled-event-visitor.spec.ts)
- [x] Exploratory testing via rodney (API + browser, 26/26 pass)
Add PATCH /events/{eventToken} endpoint for organizers to cancel events,
cancellation banner for visitors, and RSVP rejection on cancelled events.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Convert Event and Rsvp from mutable POJOs to Java records
- Move all 8 exception classes to application.service.exception sub-package
- Add ArchUnit rule enforcing domain models must be records
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
nitrix
merged commit e01d5ee642 into master2026-03-12 20:42:39 +01:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
/events/{eventToken}endpoint for organizers to cancel events (irreversible)cancelledflag and optionalcancellationReasonon event entity (Liquibase migration)Test plan
Add PATCH /events/{eventToken} endpoint for organizers to cancel events, cancellation banner for visitors, and RSVP rejection on cancelled events. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>