Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,82 +1,103 @@
import { describe, it, expect, beforeAll, afterAll, afterEach } from "vitest";

import prisma from "@calcom/prisma";
import type { Booking, Credential, User } from "@calcom/prisma/client";
import { prisma } from "@calcom/prisma";
import type { Booking, Credential } from "@calcom/prisma/client";
import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";

import { BookingReferenceRepository } from "./BookingReferenceRepository";

const testRunId = `${Date.now()}-${Math.random().toString(36).substring(2, 8)}`;

describe("BookingReferenceRepository Integration Tests", () => {
let testUser: User;
let testCredential: Credential;
let testBooking: Booking;
const createdBookingReferenceIds: number[] = [];
let testUserId: number;
let testCredential: Credential;
let testBooking: Booking;
const createdBookingReferenceIds: number[] = [];
const createdBookingIds: number[] = [];

beforeAll(async () => {
testUser = await prisma.user.create({
data: {
email: `bookingreference-test-${testRunId}@example.com`,
username: `bookingreference-test-${testRunId}`,
async function clearTestBookingReferences() {
if (createdBookingReferenceIds.length > 0) {
await prisma.bookingReference.deleteMany({
where: {
id: {
in: createdBookingReferenceIds,
},
},
});
createdBookingReferenceIds.length = 0;
}
}

testCredential = await prisma.credential.create({
data: {
type: "google_calendar",
key: {},
userId: testUser.id,
async function clearTestBookings() {
if (createdBookingIds.length > 0) {
await prisma.bookingReference.deleteMany({
where: {
bookingId: {
in: createdBookingIds,
},
},
});
await prisma.booking.deleteMany({
where: {
id: {
in: createdBookingIds,
},
},
});
createdBookingIds.length = 0;
}
}

describe("BookingReferenceRepository Integration Tests", () => {
beforeAll(async () => {
let testUser = await prisma.user.findFirst({
where: { email: "member0-acme@example.com" },
});

if (!testUser) {
testUser = await prisma.user.create({
data: {
email: `bookingreference-test-${testRunId}@example.com`,
username: `bookingreference-test-${testRunId}`,
},
});
}
testUserId = testUser.id;

let credential = await prisma.credential.findFirst({
where: { userId: testUserId, type: "google_calendar" },
});

if (!credential) {
credential = await prisma.credential.create({
data: {
type: "google_calendar",
key: {},
userId: testUserId,
},
});
}
testCredential = credential;
});

beforeEach(async () => {
testBooking = await prisma.booking.create({
data: {
uid: `test-booking-uid-${testRunId}`,
uid: `test-booking-uid-${testRunId}-${Date.now()}`,
title: "Test Booking",
startTime: new Date(),
endTime: new Date(),
userId: testUser.id,
userId: testUserId,
},
});
createdBookingIds.push(testBooking.id);
});

afterEach(async () => {
if (createdBookingReferenceIds.length > 0) {
await prisma.bookingReference.deleteMany({
where: {
id: {
in: createdBookingReferenceIds,
},
},
});
createdBookingReferenceIds.splice(0, createdBookingReferenceIds.length);
}
await clearTestBookingReferences();
await clearTestBookings();
});

afterAll(async () => {
await prisma.bookingReference.deleteMany({
where: {
bookingId: testBooking.id,
},
});

await prisma.booking.deleteMany({
where: {
id: testBooking.id,
},
});

await prisma.credential.deleteMany({
where: {
id: testCredential.id,
},
});

await prisma.user.deleteMany({
where: {
id: testUser.id,
},
});
await clearTestBookingReferences();
await clearTestBookings();
});

describe("replaceBookingReferences", () => {
Expand Down
Loading