Skip to content

Commit 061283b

Browse files
authored
fix: api v2 cancellation reason and by not being returned (calcom#25413)
* fix: api v2 cancellation reason and by not being returned * fix: e2e
1 parent 4e07985 commit 061283b

2 files changed

Lines changed: 56 additions & 12 deletions

File tree

apps/api/v2/src/ee/bookings/2024-08-13/controllers/e2e/user-bookings.e2e-spec.ts

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2600,6 +2600,56 @@ describe("Bookings Endpoints 2024-08-13", () => {
26002600
});
26012601
});
26022602

2603+
describe("cancellation reason and cancelled by returned if null in database", () => {
2604+
it("should return cancellation reason and cancelled by if null in database", async () => {
2605+
const dbBooking = await bookingsRepositoryFixture.create({
2606+
uid: randomString(10),
2607+
title: "test",
2608+
startTime: new Date(Date.UTC(2040, 0, 13, 16, 0, 0)),
2609+
endTime: new Date(Date.UTC(2040, 0, 13, 17, 0, 0)),
2610+
eventType: {
2611+
connect: {
2612+
id: eventTypeId,
2613+
},
2614+
},
2615+
user: {
2616+
connect: {
2617+
id: user.id,
2618+
},
2619+
},
2620+
metadata: {},
2621+
responses: {
2622+
name: "tester",
2623+
email: "tester@example.com",
2624+
guests: [],
2625+
},
2626+
cancellationReason: null,
2627+
cancelledBy: null,
2628+
});
2629+
2630+
const response = await request(app.getHttpServer())
2631+
.get(`/v2/bookings/${dbBooking.uid}`)
2632+
.set(CAL_API_VERSION_HEADER, VERSION_2024_08_13)
2633+
.expect(200);
2634+
2635+
const responseBody: GetBookingOutput_2024_08_13 = response.body;
2636+
expect(responseBody.status).toEqual(SUCCESS_STATUS);
2637+
expect(responseBody.data).toBeDefined();
2638+
expect(responseDataIsBooking(responseBody.data)).toBe(true);
2639+
2640+
if (responseDataIsBooking(responseBody.data)) {
2641+
const data: BookingOutput_2024_08_13 = responseBody.data;
2642+
expect(data.id).toBeDefined();
2643+
expect(data.cancellationReason).toBe("");
2644+
expect(data.cancelledByEmail).toBe("");
2645+
} else {
2646+
throw new Error(
2647+
"Invalid response data - expected booking but received array of possibly recurring bookings"
2648+
);
2649+
}
2650+
});
2651+
});
2652+
26032653
describe("calendar events", () => {
26042654
beforeEach(() => {
26052655
jest.restoreAllMocks();

apps/api/v2/src/ee/bookings/2024-08-13/services/output.service.ts

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import type {
2525
ReassignBookingOutput_2024_08_13,
2626
} from "@calcom/platform-types";
2727
import type { Booking, BookingSeat } from "@calcom/prisma/client";
28-
import { BookingStatus } from "@calcom/prisma/enums";
2928

3029
export const bookingResponsesSchema = z
3130
.object({
@@ -115,9 +114,8 @@ export class OutputBookingsService_2024_08_13 {
115114
description: databaseBooking.description,
116115
hosts: [this.getHost(databaseBooking.user)],
117116
status: databaseBooking.status.toLowerCase(),
118-
cancellationReason:
119-
databaseBooking.status === "CANCELLED" ? databaseBooking.cancellationReason : undefined,
120-
cancelledByEmail: databaseBooking.status === "CANCELLED" ? databaseBooking.cancelledBy : undefined,
117+
cancellationReason: databaseBooking.cancellationReason || "",
118+
cancelledByEmail: databaseBooking.cancelledBy || "",
121119
reschedulingReason: bookingResponses?.rescheduledReason,
122120
rescheduledFromUid: databaseBooking.fromReschedule || undefined,
123121
start: databaseBooking.startTime,
@@ -238,10 +236,8 @@ export class OutputBookingsService_2024_08_13 {
238236
description: databaseBooking.description,
239237
hosts: [this.getHost(databaseBooking.user)],
240238
status: databaseBooking.status.toLowerCase(),
241-
cancellationReason:
242-
databaseBooking.status === BookingStatus.CANCELLED ? databaseBooking.cancellationReason : undefined,
243-
cancelledByEmail:
244-
databaseBooking.status === BookingStatus.CANCELLED ? databaseBooking.cancelledBy : undefined,
239+
cancellationReason: databaseBooking.cancellationReason || "",
240+
cancelledByEmail: databaseBooking.cancelledBy || "",
245241
reschedulingReason: bookingResponses?.rescheduledReason,
246242
rescheduledFromUid: databaseBooking.fromReschedule || undefined,
247243
start: databaseBooking.startTime,
@@ -305,8 +301,7 @@ export class OutputBookingsService_2024_08_13 {
305301
description: databaseBooking.description,
306302
hosts: [this.getHost(databaseBooking.user)],
307303
status: databaseBooking.status.toLowerCase(),
308-
cancellationReason:
309-
databaseBooking.status === BookingStatus.CANCELLED ? databaseBooking.cancellationReason : undefined,
304+
cancellationReason: databaseBooking.cancellationReason || "",
310305
rescheduledFromUid: databaseBooking.fromReschedule || undefined,
311306
start: databaseBooking.startTime,
312307
end: databaseBooking.endTime,
@@ -433,8 +428,7 @@ export class OutputBookingsService_2024_08_13 {
433428
description: databaseBooking.description,
434429
hosts: [this.getHost(databaseBooking.user)],
435430
status: databaseBooking.status.toLowerCase(),
436-
cancellationReason:
437-
databaseBooking.status === BookingStatus.CANCELLED ? databaseBooking.cancellationReason : undefined,
431+
cancellationReason: databaseBooking.cancellationReason || "",
438432
rescheduledFromUid: databaseBooking.fromReschedule || undefined,
439433
start: databaseBooking.startTime,
440434
end: databaseBooking.endTime,

0 commit comments

Comments
 (0)