From cb30e5f1e06d831103a3ece49f4f0f3df15e1eda Mon Sep 17 00:00:00 2001 From: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com> Date: Tue, 12 Mar 2024 12:15:19 -0400 Subject: [PATCH] fix: metadata for seats in webhooks (#14025) * add metadata to seats for workflows and webhooks * add test --------- Co-authored-by: CarinaWolli Co-authored-by: Alex van Andel --- packages/features/bookings/lib/handleNewBooking.ts | 1 + packages/features/bookings/lib/handleSeats/handleSeats.ts | 8 +++++--- .../bookings/lib/handleSeats/test/handleSeats.test.ts | 4 +++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/features/bookings/lib/handleNewBooking.ts b/packages/features/bookings/lib/handleNewBooking.ts index 603cc28c7a..27b9299437 100644 --- a/packages/features/bookings/lib/handleNewBooking.ts +++ b/packages/features/bookings/lib/handleNewBooking.ts @@ -864,6 +864,7 @@ export const findBookingQuery = async (bookingId: number) => { description: true, status: true, responses: true, + metadata: true, user: { select: { name: true, diff --git a/packages/features/bookings/lib/handleSeats/handleSeats.ts b/packages/features/bookings/lib/handleSeats/handleSeats.ts index be8dffff78..ae96d4ab4f 100644 --- a/packages/features/bookings/lib/handleSeats/handleSeats.ts +++ b/packages/features/bookings/lib/handleSeats/handleSeats.ts @@ -96,8 +96,10 @@ const handleSeats = async (newSeatedBookingObject: NewSeatedBookingObject) => { // If the resultBooking is defined we should trigger workflows else, trigger in handleNewBooking if (resultBooking) { - // Obtain event metadata that includes videoCallUrl - const metadata = evt.videoCallData?.url ? { videoCallUrl: evt.videoCallData.url } : undefined; + const metadata = { + ...(typeof resultBooking.metadata === "object" && resultBooking.metadata), + ...reqBodyMetadata, + }; try { await scheduleWorkflowReminders({ workflows: eventType.workflows, @@ -126,7 +128,7 @@ const handleSeats = async (newSeatedBookingObject: NewSeatedBookingObject) => { rescheduleEndTime: originalRescheduledBooking?.endTime ? dayjs(originalRescheduledBooking?.endTime).utc().format() : undefined, - metadata: { ...metadata, ...reqBodyMetadata }, + metadata, eventTypeId, status: "ACCEPTED", smsReminderNumber: seatedBooking?.smsReminderNumber || undefined, diff --git a/packages/features/bookings/lib/handleSeats/test/handleSeats.test.ts b/packages/features/bookings/lib/handleSeats/test/handleSeats.test.ts index 7c09a4061f..08843c2996 100644 --- a/packages/features/bookings/lib/handleSeats/test/handleSeats.test.ts +++ b/packages/features/bookings/lib/handleSeats/test/handleSeats.test.ts @@ -187,7 +187,9 @@ describe("handleSeats", () => { body: mockBookingData, }); - await handleNewBooking(req); + const createdBooking = await handleNewBooking(req); + + expect(createdBooking.metadata).toHaveProperty("videoCallUrl"); const handleSeatsCall = spy.mock.calls[0][0];