Reduce payload size (#21093)

Co-authored-by: Omar López <zomars@me.com>
This commit is contained in:
Hariom Balhara
2025-05-07 03:16:07 +00:00
committed by GitHub
co-authored by Omar López
parent cfc9f0bfc3
commit 390ee79134
2 changed files with 110 additions and 14 deletions
@@ -164,8 +164,8 @@ type BookingDataSchemaGetter =
| typeof import("@calcom/features/bookings/lib/getBookingDataSchemaForApi").default;
type CreatedBooking = Booking & { appsStatus?: AppsStatus[]; paymentUid?: string; paymentId?: number };
const buildDryRunBooking = ({
type ReturnTypeCreateBooking = Awaited<ReturnType<typeof createBooking>>;
export const buildDryRunBooking = ({
eventTypeId,
organizerUser,
eventName,
@@ -193,8 +193,11 @@ const buildDryRunBooking = ({
isManagedEventType: boolean;
}) => {
const sanitizedOrganizerUser = {
...organizerUser,
credentials: undefined,
id: organizerUser.id,
name: organizerUser.name,
username: organizerUser.username,
email: organizerUser.email,
timeZone: organizerUser.timeZone,
};
const booking = {
id: -101,
@@ -210,8 +213,6 @@ const buildDryRunBooking = ({
createdAt: new Date(),
updatedAt: new Date(),
attendees: [],
references: [],
payment: [],
oneTimePassword: null,
smsReminderNumber: null,
metadata: {},
@@ -222,25 +223,18 @@ const buildDryRunBooking = ({
responses: null,
location: null,
paid: false,
destinationCalendar: null,
cancellationReason: null,
rejectionReason: null,
dynamicEventSlugRef: null,
dynamicGroupSlugRef: null,
rescheduledFrom: null,
fromReschedule: null,
recurringEventId: null,
seatsReferences: [],
workflowReminders: [],
scheduledJobs: [],
rescheduledTo: null,
rescheduledBy: null,
destinationCalendarId: null,
reassignReason: null,
reassignById: null,
rescheduled: false,
confirmed: false,
isRecurringEvent: false,
isRecorded: false,
iCalSequence: 0,
rating: null,
@@ -248,7 +242,9 @@ const buildDryRunBooking = ({
noShowHost: null,
cancelledBy: null,
creationSource: CreationSource.WEBAPP,
} as CreatedBooking;
references: [],
payment: [],
} satisfies ReturnTypeCreateBooking;
/**
* Troubleshooting data
@@ -0,0 +1,100 @@
import { describe, it, expect } from "vitest";
import { BookingStatus, CreationSource } from "@calcom/prisma/enums";
import { buildDryRunBooking } from "../../handleNewBooking";
describe("buildDryRunBooking", () => {
const baseOrganizerUser = {
id: 1,
name: "Test User",
username: "testuser",
email: "testuser@example.com",
timeZone: "America/New_York",
credentials: [
{
abc: "xyz",
},
],
};
const baseInputs = {
eventTypeId: 10,
organizerUser: baseOrganizerUser,
eventName: "Test Event",
startTime: "2024-01-01T10:00:00.000Z",
endTime: "2024-01-01T11:00:00.000Z",
contactOwnerFromReq: "owner@example.com",
contactOwnerEmail: "owner@example.com",
allHostUsers: [{ id: 1 }, { id: 2 }],
isManagedEventType: false,
};
it("should build a dry run booking with all provided details and nothing more than that", () => {
const { booking, troubleshooterData } = buildDryRunBooking(baseInputs);
const { user, ...bookingExceptUser } = booking;
expect(user).toEqual({
id: baseOrganizerUser.id,
name: baseOrganizerUser.name,
username: baseOrganizerUser.username,
email: baseOrganizerUser.email,
timeZone: baseOrganizerUser.timeZone,
});
expect(bookingExceptUser).toEqual({
id: -101,
uid: "DRY_RUN_UID",
iCalUID: "DRY_RUN_ICAL_UID",
status: BookingStatus.ACCEPTED,
eventTypeId: baseInputs.eventTypeId,
userId: baseOrganizerUser.id,
title: baseInputs.eventName,
startTime: new Date(baseInputs.startTime),
endTime: new Date(baseInputs.endTime),
createdAt: expect.any(Date),
updatedAt: expect.any(Date),
attendees: [],
oneTimePassword: null,
smsReminderNumber: null,
metadata: {},
idempotencyKey: null,
userPrimaryEmail: null,
description: null,
customInputs: null,
responses: null,
location: null,
paid: false,
cancellationReason: null,
rejectionReason: null,
dynamicEventSlugRef: null,
dynamicGroupSlugRef: null,
fromReschedule: null,
recurringEventId: null,
scheduledJobs: [],
rescheduledBy: null,
destinationCalendarId: null,
reassignReason: null,
reassignById: null,
rescheduled: false,
isRecorded: false,
iCalSequence: 0,
rating: null,
ratingFeedback: null,
noShowHost: null,
cancelledBy: null,
creationSource: CreationSource.WEBAPP,
references: [],
payment: [],
});
expect(troubleshooterData).toEqual({
organizerUserId: baseOrganizerUser.id,
eventTypeId: baseInputs.eventTypeId,
askedContactOwnerEmail: baseInputs.contactOwnerFromReq,
usedContactOwnerEmail: baseInputs.contactOwnerEmail,
allHostUsers: [1, 2],
isManagedEventType: baseInputs.isManagedEventType,
});
});
});