mirror of
https://github.com/hanzoai/calendar.git
synced 2026-10-30 14:46:43 +00:00
* perf: Refactor bookings queries for API * fix syntax * fixing vars * Inverted the filter by attendees if * fixed prisma filter issue * Defaulting list of emails to empty array * Only running 2 queries if we have data to filter by * Reverted changes that have been separated out to other PR * fix: ts build error * adds tests + extracts logic for units * fix integration tests * fix tests expectes * Fix test * switching back * attempt : fix tests * test: add test for duplicate bookings (#21165) * feat: Add tests for booking and duration limits (#21158) * Add tests for booking and duration limits in getSchedule.test.ts Co-Authored-By: [email protected] <[email protected]> * fix: use SchedulingType enum instead of string for schedulingType Co-Authored-By: [email protected] <[email protected]> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: [email protected] <[email protected]> * test: add test to ensure no duplicate bookings when merging query results Co-Authored-By: [email protected] <[email protected]> --------- Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: [email protected] <[email protected]> Co-authored-by: Keith Williams <[email protected]> * fix: deduplicate bookings when merging results from multiple queries Co-Authored-By: [email protected] <[email protected]> * fix: ensure pagination works correctly when merging results from multiple queries (#21167) Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: [email protected] <[email protected]> --------- Co-authored-by: Tushar Bhatt <[email protected]> Co-authored-by: Tushar <[email protected]> Co-authored-by: sean-brydon <[email protected]> Co-authored-by: Peer Richelsen <[email protected]> Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: [email protected] <[email protected]>
76 lines
2.0 KiB
TypeScript
76 lines
2.0 KiB
TypeScript
import { describe, it, expect } from "vitest";
|
|
|
|
import { buildWhereClause } from "~/lib/utils/bookings/get/buildWhereClause";
|
|
|
|
describe("buildWhereClause", () => {
|
|
it("should return empty object when no filters are provided", () => {
|
|
const result = buildWhereClause(null, [], []);
|
|
expect(result).toEqual({});
|
|
});
|
|
|
|
it("should filter by userId when only userId is provided", () => {
|
|
const userId = 123;
|
|
const result = buildWhereClause(userId, [], []);
|
|
expect(result).toEqual({ userId: 123 });
|
|
});
|
|
|
|
it("should filter by userIds when userIds array is provided", () => {
|
|
const userIds = [1, 2, 3];
|
|
const result = buildWhereClause(null, [], userIds);
|
|
expect(result).toEqual({ userId: { in: [1, 2, 3] } });
|
|
});
|
|
|
|
it("should filter by attendee emails when provided", () => {
|
|
const attendeeEmails = ["[email protected]", "[email protected]"];
|
|
const result = buildWhereClause(null, attendeeEmails, []);
|
|
expect(result).toEqual({
|
|
AND: [
|
|
{},
|
|
{
|
|
attendees: {
|
|
some: {
|
|
email: { in: ["[email protected]", "[email protected]"] },
|
|
},
|
|
},
|
|
},
|
|
],
|
|
});
|
|
});
|
|
|
|
it("should combine userId and attendee email filters", () => {
|
|
const userId = 123;
|
|
const attendeeEmails = ["[email protected]"];
|
|
const result = buildWhereClause(userId, attendeeEmails, []);
|
|
expect(result).toEqual({
|
|
AND: [
|
|
{ userId: 123 },
|
|
{
|
|
attendees: {
|
|
some: {
|
|
email: { in: ["[email protected]"] },
|
|
},
|
|
},
|
|
},
|
|
],
|
|
});
|
|
});
|
|
|
|
it("should combine userIds and attendee email filters", () => {
|
|
const userIds = [1, 2, 3];
|
|
const attendeeEmails = ["[email protected]"];
|
|
const result = buildWhereClause(null, attendeeEmails, userIds);
|
|
expect(result).toEqual({
|
|
AND: [
|
|
{ userId: { in: [1, 2, 3] } },
|
|
{
|
|
attendees: {
|
|
some: {
|
|
email: { in: ["[email protected]"] },
|
|
},
|
|
},
|
|
},
|
|
],
|
|
});
|
|
});
|
|
});
|