Test Cases: Event Discovery & Browsing

Module: Events & Registrations - Discovery

Endpoints: GET /api/events (member list, ?tab=upcoming|past|draft) · GET /api/events/upcoming · GET /api/events/:id / /events/slug/:slug (detail) · GET /api/public/:tenantSlug/events + /:slug (guest).

Frontend: member list /events (EventsPage.tsx, titled "My Events"); logged-in detail /events/:slug (PublicEventPage); guest catalog /:tenantSlug/events (PublicEventCatalogPage); guest landing /:tenantSlug/events/:eventSlug (PublicEventLandingPage).

Route note: /events is the member "My Events" page (needs login). The guest catalog is /:tenantSlug/events (e.g. /rcme/events) — no auth.

Prerequisites

Test Cases

TC-DSC-01: Guest Catalog

StepActionExpected Result
1Logged out, open /rcme/events.Public catalog loads — only PUBLISHED + visibility: PUBLIC events; DRAFT and MEMBERS_ONLY hidden.
2Click an event.Public landing page /rcme/events/:slug.

TC-DSC-02: Member Events List

StepActionExpected Result
1Log in as Maria Cruz → sidebar Events (/events, "My Events").Summary tiles (My upcoming / Pending payment / Attended this year / Open) + filters (Search, Status, Tags) + Upcoming grid + collapsible Past Events.
2Check an event card.16:9 banner, title, date, attendee count n/capacity, a green Free badge or the price, registration badge if registered, and a "Sold Out" red badge when full.

TC-DSC-03: Event Detail

StepActionExpected Result
1Open an event (/events/:slug).Hero banner (16:9), tabs (Info / Going / My Ticket), description, location, a right-side countdown panel (#183) + a Registration card (price + Register/Get Tickets).
2Verify the registration card.For an open event: a "Register" (free) or "Get Tickets" (paid) button + attendee count. Full event → "Event is Full — Check back for cancellations" (no waitlist).

TC-DSC-04: Sign in from a public event page (login modal)

StepActionExpected Result
1Logged out, open a public event landing page; in the registration card click "Already a member? Sign in to register".A login modal opens (no full-page redirect) — #159/#160–165. Email + password + "Sign in"; "More sign-in options →" hands off to the full login page.
2Sign in.Modal closes; the event refetches and registration continues inline.

TC-DSC-05: Filter Upcoming / Past

StepActionExpected Result
1On /events, use the Status filter / expand "Past Events".Upcoming shows events with future startsAt; Past shows completed events.

TC-DSC-06: Members-Only Event as Guest

StepActionExpected Result
1Open a MEMBERS_ONLY event's public link while logged out.Guest cannot register; prompted to sign in (login modal / sign-in CTA).