Files
calendar/apps/web/test/lib/confirm.handler.test.ts
T
Udit TakkarandGitHub 4e1d05a7e7 feat: dist tracing 4 (#25574)
* feat: distributed tracing 2

* feat: distributed tracing 2

* refactor: feedback

* refactor: feedback

* fix: type error

* fix: trpc error

* feat: distributed tracing - 3

* chore: translation

* refactor: improvements

* fix: feedback

* chore: remove

* feat: dist tracing 4

* fix: type errors

* fix: type errors

* fix: remove string type

* fix: type errors
2025-12-15 10:43:22 +00:00

114 lines
3.3 KiB
TypeScript

import {
createBookingScenario,
getOrganizer,
getScenarioData,
TestData,
mockSuccessfulVideoMeetingCreation,
} from "@calcom/web/test/utils/bookingScenario/bookingScenario";
import { describe, it, beforeEach, vi, expect } from "vitest";
import * as handleConfirmationModule from "@calcom/features/bookings/lib/handleConfirmation";
import { distributedTracing } from "@calcom/lib/tracing/factory";
import { BookingStatus } from "@calcom/prisma/enums";
import { confirmHandler } from "@calcom/trpc/server/routers/viewer/bookings/confirm.handler";
import type { TrpcSessionUser } from "@calcom/trpc/server/types";
describe("confirmHandler", () => {
beforeEach(() => {
vi.clearAllMocks();
});
it("should pass hideCalendarNotes property to CalendarEvent when enabled", async () => {
vi.setSystemTime("2050-01-07T00:00:00Z");
const handleConfirmationSpy = vi.spyOn(handleConfirmationModule, "handleConfirmation");
const attendeeUser = getOrganizer({
email: "test@example.com",
name: "test name",
id: 102,
schedules: [TestData.schedules.IstWorkHours],
});
const organizer = getOrganizer({
name: "Organizer",
email: "organizer@example.com",
id: 101,
schedules: [TestData.schedules.IstWorkHours],
});
const uidOfBooking = "hideNotes123";
const iCalUID = `${uidOfBooking}@Cal.com`;
const plus1DateString = "2050-01-08";
await createBookingScenario(
getScenarioData({
eventTypes: [
{
id: 1,
slotInterval: 15,
length: 15,
locations: [],
hideCalendarNotes: true,
hideCalendarEventDetails: true,
requiresConfirmation: true,
users: [
{
id: 101,
},
],
},
],
bookings: [
{
id: 101,
uid: uidOfBooking,
eventTypeId: 1,
status: BookingStatus.PENDING,
startTime: `${plus1DateString}T05:00:00.000Z`,
endTime: `${plus1DateString}T05:15:00.000Z`,
references: [],
iCalUID,
location: "integrations:daily",
attendees: [attendeeUser],
responses: { name: attendeeUser.name, email: attendeeUser.email, notes: "Sensitive information" },
user: { id: organizer.id },
},
],
organizer,
apps: [TestData.apps["daily-video"]],
})
);
mockSuccessfulVideoMeetingCreation({
metadataLookupKey: "dailyvideo",
});
const ctx = {
user: {
id: organizer.id,
name: organizer.name,
timeZone: organizer.timeZone,
username: organizer.username,
} as NonNullable<TrpcSessionUser>,
traceContext: distributedTracing.createTrace("test_confirm_handler"),
};
const res = await confirmHandler({
ctx,
input: { bookingId: 101, confirmed: true, reason: "", emailsEnabled: true },
});
expect(res?.status).toBe(BookingStatus.ACCEPTED);
expect(handleConfirmationSpy).toHaveBeenCalledTimes(1);
const handleConfirmationCall = handleConfirmationSpy.mock.calls[0][0];
const calendarEvent = handleConfirmationCall.evt;
expect(calendarEvent.hideCalendarNotes).toBe(true);
expect(calendarEvent.hideCalendarEventDetails).toBe(true);
});
});