Test Cases: Event Cloning

Module: Events & Registrations - Cloning

Backend Endpoint: POST /api/events/:id/clone

Frontend Page: Admin Events Management

Priority: P2

Phase: 2

Prerequisites

Test Cases

TC-CLONE-01: Clone Event (All Fields Copied)

StepActionExpected Result
1Navigate to Admin Events list. Select a PUBLISHED event.Event details visible.
2Click "Clone" action (or Actions -> Clone Event).Clone confirmation dialog or immediate clone request.
3Verify API Request.POST /api/events/:id/clone called.
4Check Response.200 OK. New event object returned with new UUID.
5Verify Cloned Fields.title, description, location, capacity, visibility, priceCents, bannerUrl match source event.
6Navigate to Cloned Event.All copied fields display correctly in edit form.

TC-CLONE-02: Clone Event with Ticket Types

StepActionExpected Result
1Create/Select source event with multiple ticket types (e.g., "General Admission", "VIP", "Early Bird").Ticket types visible in event configuration.
2Clone the event.Clone completes successfully.
3Open cloned event ticket configuration.All ticket types from source event are present.
4Verify Ticket Type Details.Each ticket type has correct name, priceCents, capacity, description copied.
5Verify Independence.Editing ticket type in cloned event does NOT affect source event ticket types.

TC-CLONE-03: Cloned Event Status (Should Be DRAFT)

StepActionExpected Result
1Select a PUBLISHED event.Event status is PUBLISHED.
2Clone the event.Clone completes successfully.
3Check Cloned Event Status.Status is DRAFT (regardless of source event status).
4Clone a CANCELLED event.Clone completes successfully.
5Check Cloned Event Status.Status is DRAFT.
6Verify Reasoning.Cloned events require review before publishing (dates, capacity, etc.).

TC-CLONE-04: Cloned Event Dates (Should Require Update)

StepActionExpected Result
1Select source event with past dates (startAt, endAt in the past).-
2Clone the event.Clone completes successfully.
3Check Cloned Event Dates.Dates are copied and shifted +7 days forward from the source (per the clone logic). Review/adjust before publishing.
4Attempt to Publish Cloned Event.Validation error if dates are in the past or invalid.
5Update Dates.Set future dates for startAt and endAt.
6Publish.Event publishes successfully after date correction.

TC-CLONE-05: Cloned Event Registration Deadline

StepActionExpected Result
1Select source event with registrationDeadline set.-
2Clone the event.Clone completes successfully.
3Check Cloned Registration Deadline.Deadline is either cleared or copied (requires update if past).
4Attempt Publish with Past Deadline.Validation prevents publishing with expired registration deadline.

TC-CLONE-06: Clone Permissions - Admin Role

StepActionExpected Result
1Login as ADMIN user.Dashboard accessible.
2Navigate to any event.Clone action visible.
3Clone event.POST /api/events/:id/clone succeeds. 200 OK.
4Verify Ownership.Cloned event createdBy set to cloning admin's ID.

TC-CLONE-07: Clone Permissions - Event Manager Role

StepActionExpected Result
1Login as EVENT_MANAGER user.Dashboard accessible.
2Navigate to event managed by this user.Clone action visible.
3Clone event.POST /api/events/:id/clone succeeds. 200 OK.
4Verify Ownership.Cloned event createdBy set to cloning Event Manager's ID.

TC-CLONE-08: Clone Permissions - Unauthorized Role

StepActionExpected Result
1Login as MEMBER (non-admin, non-event-manager).Member dashboard accessible.
2Attempt to access clone endpoint directly.POST /api/events/:id/clone.
3Verify Response.403 Forbidden or 401 Unauthorized.
4Verify UI.Clone action not visible in UI for unauthorized users.

TC-CLONE-09: Cloned Event Slug Uniqueness

StepActionExpected Result
1Create event with slug annual-gala-2025.Event created with unique slug.
2Clone the event.Clone completes successfully.
3Check Cloned Event Slug.Slug is unique, e.g., annual-gala-2025-copy or annual-gala-2025-1.
4Clone again.Second clone has different unique slug (e.g., annual-gala-2025-copy-2 or annual-gala-2025-2).
5Verify Slug Editability.Admin can manually edit cloned event slug to custom value.
6Verify Slug Collision Prevention.Attempting to save with existing slug shows validation error.

TC-CLONE-10: Clone Event Title Modification

StepActionExpected Result
1Clone event titled "Summer Conference 2025".Clone completes.
2Check Cloned Title.Title is modified to indicate clone, e.g., "Summer Conference 2025 (Copy)" or "Copy of Summer Conference 2025".
3Edit Title.Admin can modify title to desired value.

TC-CLONE-11: Cloned Event - Registrations Not Copied

StepActionExpected Result
1Select source event with 50 registrations.Registration count visible.
2Clone the event.Clone completes successfully.
3Check Cloned Event Registrations.Registration count is 0. No registrations copied.
4Verify Capacity.Full capacity available for new registrations.

TC-CLONE-12: Cloned Event - Attendee Data Isolation

StepActionExpected Result
1Source event has check-in records.-
2Clone the event.Clone completes successfully.
3Verify Cloned Event.No check-in records, no registrations — clean slate. (There is no waitlist feature in MemberVu.)

TC-CLONE-13: Clone Non-Existent Event

StepActionExpected Result
1Attempt POST /api/events/:id/clone with invalid UUID.-
2Verify Response.404 Not Found. Error message: "Event not found".

TC-CLONE-14: Clone Deleted Event

StepActionExpected Result
1Attempt to clone a soft-deleted event.-
2Verify Response.404 Not Found or 400 Bad Request. Cannot clone deleted events.

TC-CLONE-15: Bulk Clone (If Supported)

StepActionExpected Result
1Select multiple events in Admin list.Multiple events selected.
2Attempt bulk clone action.Either: (a) Feature not supported, action disabled, OR (b) Each event cloned individually.
3Verify Results.Each cloned event has unique slug, DRAFT status, cleared registrations.

Edge Cases

TC-CLONE-EC-01: Clone Event with Maximum Field Lengths

StepActionExpected Result
1Source event has max-length title (e.g., 255 chars).-
2Clone the event.Clone succeeds.
3Verify Title Handling.Title may be truncated if "(Copy)" suffix would exceed limit, OR clone proceeds with full title.

TC-CLONE-EC-02: Clone Event with Special Characters in Slug

StepActionExpected Result
1Source event slug contains edge case characters (if allowed).-
2Clone the event.Clone succeeds.
3Verify Slug Generation.New slug is valid URL-safe string.

TC-CLONE-EC-03: Concurrent Clone Requests

StepActionExpected Result
1Two admins simultaneously click Clone on same event.-
2Verify Results.Two separate cloned events created, each with unique slug. No conflicts.

Notes