diff --git a/apps/api/v2/src/ee/bookings/2024-08-13/controllers/e2e/user-bookings.e2e-spec.ts b/apps/api/v2/src/ee/bookings/2024-08-13/controllers/e2e/user-bookings.e2e-spec.ts index 65892dd44c..4141b6997f 100644 --- a/apps/api/v2/src/ee/bookings/2024-08-13/controllers/e2e/user-bookings.e2e-spec.ts +++ b/apps/api/v2/src/ee/bookings/2024-08-13/controllers/e2e/user-bookings.e2e-spec.ts @@ -2600,6 +2600,56 @@ describe("Bookings Endpoints 2024-08-13", () => { }); }); + describe("cancellation reason and cancelled by returned if null in database", () => { + it("should return cancellation reason and cancelled by if null in database", async () => { + const dbBooking = await bookingsRepositoryFixture.create({ + uid: randomString(10), + title: "test", + startTime: new Date(Date.UTC(2040, 0, 13, 16, 0, 0)), + endTime: new Date(Date.UTC(2040, 0, 13, 17, 0, 0)), + eventType: { + connect: { + id: eventTypeId, + }, + }, + user: { + connect: { + id: user.id, + }, + }, + metadata: {}, + responses: { + name: "tester", + email: "tester@example.com", + guests: [], + }, + cancellationReason: null, + cancelledBy: null, + }); + + const response = await request(app.getHttpServer()) + .get(`/v2/bookings/${dbBooking.uid}`) + .set(CAL_API_VERSION_HEADER, VERSION_2024_08_13) + .expect(200); + + const responseBody: GetBookingOutput_2024_08_13 = response.body; + expect(responseBody.status).toEqual(SUCCESS_STATUS); + expect(responseBody.data).toBeDefined(); + expect(responseDataIsBooking(responseBody.data)).toBe(true); + + if (responseDataIsBooking(responseBody.data)) { + const data: BookingOutput_2024_08_13 = responseBody.data; + expect(data.id).toBeDefined(); + expect(data.cancellationReason).toBe(""); + expect(data.cancelledByEmail).toBe(""); + } else { + throw new Error( + "Invalid response data - expected booking but received array of possibly recurring bookings" + ); + } + }); + }); + describe("calendar events", () => { beforeEach(() => { jest.restoreAllMocks(); diff --git a/apps/api/v2/src/ee/bookings/2024-08-13/services/output.service.ts b/apps/api/v2/src/ee/bookings/2024-08-13/services/output.service.ts index ec781308ff..96f2b4f629 100644 --- a/apps/api/v2/src/ee/bookings/2024-08-13/services/output.service.ts +++ b/apps/api/v2/src/ee/bookings/2024-08-13/services/output.service.ts @@ -25,7 +25,6 @@ import type { ReassignBookingOutput_2024_08_13, } from "@calcom/platform-types"; import type { Booking, BookingSeat } from "@calcom/prisma/client"; -import { BookingStatus } from "@calcom/prisma/enums"; export const bookingResponsesSchema = z .object({ @@ -115,9 +114,8 @@ export class OutputBookingsService_2024_08_13 { description: databaseBooking.description, hosts: [this.getHost(databaseBooking.user)], status: databaseBooking.status.toLowerCase(), - cancellationReason: - databaseBooking.status === "CANCELLED" ? databaseBooking.cancellationReason : undefined, - cancelledByEmail: databaseBooking.status === "CANCELLED" ? databaseBooking.cancelledBy : undefined, + cancellationReason: databaseBooking.cancellationReason || "", + cancelledByEmail: databaseBooking.cancelledBy || "", reschedulingReason: bookingResponses?.rescheduledReason, rescheduledFromUid: databaseBooking.fromReschedule || undefined, start: databaseBooking.startTime, @@ -238,10 +236,8 @@ export class OutputBookingsService_2024_08_13 { description: databaseBooking.description, hosts: [this.getHost(databaseBooking.user)], status: databaseBooking.status.toLowerCase(), - cancellationReason: - databaseBooking.status === BookingStatus.CANCELLED ? databaseBooking.cancellationReason : undefined, - cancelledByEmail: - databaseBooking.status === BookingStatus.CANCELLED ? databaseBooking.cancelledBy : undefined, + cancellationReason: databaseBooking.cancellationReason || "", + cancelledByEmail: databaseBooking.cancelledBy || "", reschedulingReason: bookingResponses?.rescheduledReason, rescheduledFromUid: databaseBooking.fromReschedule || undefined, start: databaseBooking.startTime, @@ -305,8 +301,7 @@ export class OutputBookingsService_2024_08_13 { description: databaseBooking.description, hosts: [this.getHost(databaseBooking.user)], status: databaseBooking.status.toLowerCase(), - cancellationReason: - databaseBooking.status === BookingStatus.CANCELLED ? databaseBooking.cancellationReason : undefined, + cancellationReason: databaseBooking.cancellationReason || "", rescheduledFromUid: databaseBooking.fromReschedule || undefined, start: databaseBooking.startTime, end: databaseBooking.endTime, @@ -433,8 +428,7 @@ export class OutputBookingsService_2024_08_13 { description: databaseBooking.description, hosts: [this.getHost(databaseBooking.user)], status: databaseBooking.status.toLowerCase(), - cancellationReason: - databaseBooking.status === BookingStatus.CANCELLED ? databaseBooking.cancellationReason : undefined, + cancellationReason: databaseBooking.cancellationReason || "", rescheduledFromUid: databaseBooking.fromReschedule || undefined, start: databaseBooking.startTime, end: databaseBooking.endTime,