fix: API V1 slots add explicit orgSlug null fallback (#16593)

* add explicit orgSlug null fallback

* do it in schema

* to nullish
This commit is contained in:
Syed Ali Shahbaz
2024-09-11 16:14:03 +00:00
committed by GitHub
parent 2f2f4dba60
commit 89250422ea
4 changed files with 46 additions and 4 deletions
@@ -85,7 +85,7 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
const startTime = now.startOf("month").toISOString();
const endTime = now.add(2, "month").endOf("month").toISOString();
const orgSlug = eventType?.team?.parent?.slug ?? undefined;
const orgSlug = eventType?.team?.parent?.slug ?? null;
const availableSlots = await getAvailableSlots({
input: {
+23
View File
@@ -78,6 +78,7 @@ describe("getSchedule", () => {
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -176,6 +177,7 @@ describe("getSchedule", () => {
timeZone: Timezones["+5:30"],
isTeamEvent: true,
teamMemberEmail: "example@example.com",
orgSlug: null,
},
});
@@ -195,6 +197,7 @@ describe("getSchedule", () => {
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: true,
orgSlug: null,
},
});
@@ -321,6 +324,7 @@ describe("getSchedule", () => {
timeZone: Timezones["+5:30"],
isTeamEvent: true,
teamMemberEmail: "example@example.com",
orgSlug: null,
},
});
@@ -349,6 +353,7 @@ describe("getSchedule", () => {
timeZone: Timezones["+5:30"],
isTeamEvent: true,
teamMemberEmail: "example1@example.com",
orgSlug: null,
},
});
@@ -438,6 +443,7 @@ describe("getSchedule", () => {
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -470,6 +476,7 @@ describe("getSchedule", () => {
endTime: `${plus3DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -529,6 +536,7 @@ describe("getSchedule", () => {
const { dateString: plus2DateString } = getDate({ dateIncrement: 2 });
const scheduleForEventWith30Length = await getSchedule({
input: {
orgSlug: null,
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
@@ -565,6 +573,7 @@ describe("getSchedule", () => {
const scheduleForEventWith30minsLengthAndSlotInterval2hrs = await getSchedule({
input: {
orgSlug: null,
eventTypeId: 2,
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
@@ -630,6 +639,7 @@ describe("getSchedule", () => {
endTime: `${todayDateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -653,6 +663,7 @@ describe("getSchedule", () => {
endTime: `${todayDateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
expect(scheduleForEventWithBookingNotice10Hrs).toHaveTimeSlots(
@@ -715,6 +726,7 @@ describe("getSchedule", () => {
endTime: `${plus3DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -789,6 +801,7 @@ describe("getSchedule", () => {
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -847,6 +860,7 @@ describe("getSchedule", () => {
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -911,6 +925,7 @@ describe("getSchedule", () => {
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -989,6 +1004,7 @@ describe("getSchedule", () => {
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -1101,6 +1117,7 @@ describe("getSchedule", () => {
endTime: `${plus3DateString}T23:59:59.999Z`,
timeZone: Timezones["+6:00"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -1112,6 +1129,7 @@ describe("getSchedule", () => {
endTime: `${plus3DateString}T23:59:59.999Z`,
timeZone: Timezones["+6:00"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -1202,6 +1220,7 @@ describe("getSchedule", () => {
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -1300,6 +1319,7 @@ describe("getSchedule", () => {
endTime: `${plus1DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: true,
orgSlug: null,
},
});
@@ -1330,6 +1350,7 @@ describe("getSchedule", () => {
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: true,
orgSlug: null,
},
});
@@ -1438,6 +1459,7 @@ describe("getSchedule", () => {
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: true,
orgSlug: null,
},
});
// A user with blocked time in another event, still affects Team Event availability
@@ -1466,6 +1488,7 @@ describe("getSchedule", () => {
endTime: `${plus3DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: true,
orgSlug: null,
},
});
// A user with blocked time in another event, still affects Team Event availability
@@ -121,6 +121,7 @@ describe("getSchedule", () => {
endTime: `${plus5DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -208,6 +209,7 @@ describe("getSchedule", () => {
endTime: `${plus5DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -291,6 +293,7 @@ describe("getSchedule", () => {
endTime: `${plus5DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -385,6 +388,7 @@ describe("getSchedule", () => {
endTime: `${plus5DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -488,6 +492,7 @@ describe("getSchedule", () => {
endTime: `${plus5DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -577,6 +582,7 @@ describe("getSchedule", () => {
endTime: `${plus5DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -660,6 +666,7 @@ describe("getSchedule", () => {
endTime: `${plus5DateString}T18:29:59.999Z`,
timeZone: Timezones["-11:00"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -782,6 +789,7 @@ describe("getSchedule", () => {
endTime: `${plus5DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -879,6 +887,7 @@ describe("getSchedule", () => {
endTime: `${plus5DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -979,6 +988,7 @@ describe("getSchedule", () => {
endTime: `${plus5DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -1086,6 +1096,7 @@ describe("getSchedule", () => {
endTime: `${plus5DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -1205,6 +1216,7 @@ describe("getSchedule", () => {
endTime: `${plus5DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -1301,6 +1313,7 @@ describe("getSchedule", () => {
endTime: `${plus5DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -1409,6 +1422,7 @@ describe("getSchedule", () => {
endTime: `${plus5DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -1510,6 +1524,7 @@ describe("getSchedule", () => {
endTime: `${plus5DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -1594,6 +1609,7 @@ describe("getSchedule", () => {
endTime: `2024-07-31T18:29:59.999Z`,
timeZone: Timezones["-11:00"],
isTeamEvent: false,
orgSlug: null,
},
});
@@ -20,17 +20,20 @@ export const getScheduleSchema = z
.string()
.optional()
.transform((val) => val && parseInt(val)),
rescheduleUid: z.string().optional().nullable(),
rescheduleUid: z.string().nullish(),
// whether to do team event or user event
isTeamEvent: z.boolean().optional().default(false),
orgSlug: z.string().optional(),
teamMemberEmail: z.string().nullable().optional(),
orgSlug: z.string().nullish(),
teamMemberEmail: z.string().nullish(),
})
.transform((val) => {
// Need this so we can pass a single username in the query string form public API
if (val.usernameList) {
val.usernameList = Array.isArray(val.usernameList) ? val.usernameList : [val.usernameList];
}
if (!val.orgSlug) {
val.orgSlug = null;
}
return val;
})
.refine(