diff --git a/apps/web/pages/booking/[uid].tsx b/apps/web/pages/booking/[uid].tsx index 229babba28..64db39652a 100644 --- a/apps/web/pages/booking/[uid].tsx +++ b/apps/web/pages/booking/[uid].tsx @@ -443,8 +443,10 @@ export default function Success(props: SuccessProps) { )} {bookingInfo?.attendees.map((attendee) => (
- {attendee.name &&

{attendee.name}

} -

{attendee.email}

+ {attendee.name && ( +

{attendee.name}

+ )} +

{attendee.email}

))} diff --git a/apps/web/playwright/booking-pages.e2e.ts b/apps/web/playwright/booking-pages.e2e.ts index d5ef9c0ef3..5c72236154 100644 --- a/apps/web/playwright/booking-pages.e2e.ts +++ b/apps/web/playwright/booking-pages.e2e.ts @@ -8,6 +8,8 @@ import { bookTimeSlot, selectFirstAvailableTimeSlotNextMonth, selectSecondAvailableTimeSlotNextMonth, + testEmail, + testName, } from "./lib/testUtils"; test.describe.configure({ mode: "parallel" }); @@ -101,6 +103,8 @@ testBothBookers.describe("pro user", () => { // Because it tests the entire booking flow + the cancellation + rebooking test.setTimeout(testInfo.timeout * 3); await bookFirstEvent(page); + await expect(page.locator(`[data-testid="attendee-email-${testEmail}"]`)).toHaveText(testEmail); + await expect(page.locator(`[data-testid="attendee-name-${testName}"]`)).toHaveText(testName); const [pro] = users.get(); await pro.login(); @@ -114,7 +118,10 @@ testBothBookers.describe("pro user", () => { const cancelledHeadline = await page.locator('[data-testid="cancelled-headline"]').innerText(); - await expect(cancelledHeadline).toBe("This event is cancelled"); + expect(cancelledHeadline).toBe("This event is cancelled"); + + await expect(page.locator(`[data-testid="attendee-email-${testEmail}"]`)).toHaveText(testEmail); + await expect(page.locator(`[data-testid="attendee-name-${testName}"]`)).toHaveText(testName); await page.goto(`/${pro.username}`); await bookFirstEvent(page); @@ -155,7 +162,7 @@ testBothBookers.describe("pro user", () => { await expect(page.locator("[data-testid=success-page]")).toBeVisible(); additionalGuests.forEach(async (email) => { - await expect(page.locator(`[data-testid="attendee-${email}"]`)).toHaveText(email); + await expect(page.locator(`[data-testid="attendee-email-${email}"]`)).toHaveText(email); }); }); }); diff --git a/apps/web/playwright/booking-seats.e2e.ts b/apps/web/playwright/booking-seats.e2e.ts index f4fd821a6d..940d566d54 100644 --- a/apps/web/playwright/booking-seats.e2e.ts +++ b/apps/web/playwright/booking-seats.e2e.ts @@ -419,9 +419,13 @@ testBothBookers.describe("Booking with Seats", (bookerVariant) => { // Go to cancel page and see that attendees are listed and myself as I'm owner of the booking await page.goto(`/booking/${booking.uid}?cancel=true&allRemainingBookings=false`); - const foundFirstAttendeeAsOwner = await page.locator('p[data-testid="attendee-first+seats@cal.com"]'); + const foundFirstAttendeeAsOwner = await page.locator( + 'p[data-testid="attendee-email-first+seats@cal.com"]' + ); await expect(foundFirstAttendeeAsOwner).toHaveCount(1); - const foundSecondAttendeeAsOwner = await page.locator('p[data-testid="attendee-second+seats@cal.com"]'); + const foundSecondAttendeeAsOwner = await page.locator( + 'p[data-testid="attendee-email-second+seats@cal.com"]' + ); await expect(foundSecondAttendeeAsOwner).toHaveCount(1); await page.pause(); await page.goto("auth/logout"); @@ -433,10 +437,12 @@ testBothBookers.describe("Booking with Seats", (bookerVariant) => { ); // No attendees should be displayed only the one that it's cancelling - const notFoundSecondAttendee = await page.locator('p[data-testid="attendee-second+seats@cal.com"]'); + const notFoundSecondAttendee = await page.locator( + 'p[data-testid="attendee-email-second+seats@cal.com"]' + ); await expect(notFoundSecondAttendee).toHaveCount(0); - const foundFirstAttendee = await page.locator('p[data-testid="attendee-first+seats@cal.com"]'); + const foundFirstAttendee = await page.locator('p[data-testid="attendee-email-first+seats@cal.com"]'); await expect(foundFirstAttendee).toHaveCount(1); await prisma.eventType.update({ @@ -453,11 +459,11 @@ testBothBookers.describe("Booking with Seats", (bookerVariant) => { ); // Now attendees should be displayed - const foundSecondAttendee = await page.locator('p[data-testid="attendee-second+seats@cal.com"]'); + const foundSecondAttendee = await page.locator('p[data-testid="attendee-email-second+seats@cal.com"]'); await expect(foundSecondAttendee).toHaveCount(1); const foundFirstAttendeeAgain = await page - .locator('p[data-testid="attendee-first+seats@cal.com"]') + .locator('p[data-testid="attendee-email-first+seats@cal.com"]') .first(); await expect(foundFirstAttendeeAgain).toHaveCount(1); }); diff --git a/apps/web/playwright/lib/testUtils.ts b/apps/web/playwright/lib/testUtils.ts index d4fc2cc3ce..ba8049f6f0 100644 --- a/apps/web/playwright/lib/testUtils.ts +++ b/apps/web/playwright/lib/testUtils.ts @@ -15,6 +15,9 @@ type Request = IncomingMessage & { body?: unknown }; type RequestHandlerOptions = { req: Request; res: ServerResponse }; type RequestHandler = (opts: RequestHandlerOptions) => void; +export const testEmail = "test@example.com"; +export const testName = "Test Testson"; + export function createHttpServer(opts: { requestHandler?: RequestHandler } = {}) { const { requestHandler = ({ res }) => { @@ -133,8 +136,8 @@ export async function bookFirstEvent(page: Page) { export const bookTimeSlot = async (page: Page, opts?: { name?: string; email?: string }) => { // --- fill form - await page.fill('[name="name"]', opts?.name ?? "Test Testson"); - await page.fill('[name="email"]', opts?.email ?? "test@example.com"); + await page.fill('[name="name"]', opts?.name ?? testName); + await page.fill('[name="email"]', opts?.email ?? testEmail); await page.press('[name="email"]', "Enter"); }; // Provide an standalone localize utility not managed by next-i18n diff --git a/packages/features/bookings/lib/handleCancelBooking.ts b/packages/features/bookings/lib/handleCancelBooking.ts index 5e631cc20f..77ef18574d 100644 --- a/packages/features/bookings/lib/handleCancelBooking.ts +++ b/packages/features/bookings/lib/handleCancelBooking.ts @@ -629,12 +629,6 @@ async function handler(req: CustomRequest) { return { message: "Booking successfully cancelled." }; } - const attendeeDeletes = prisma.attendee.deleteMany({ - where: { - bookingId: bookingToDelete.id, - }, - }); - const bookingReferenceDeletes = prisma.bookingReference.deleteMany({ where: { bookingId: bookingToDelete.id, @@ -657,7 +651,7 @@ async function handler(req: CustomRequest) { }); }); - const prismaPromises: Promise[] = [attendeeDeletes, bookingReferenceDeletes]; + const prismaPromises: Promise[] = [bookingReferenceDeletes]; await Promise.all(prismaPromises.concat(apiDeletes));