Files
calendar/packages/lib/server/repository/workflow.test.ts
T
2025-04-23 06:44:44 -07:00

85 lines
2.4 KiB
TypeScript

// eslint-disable-next-line @typescript-eslint/no-unused-vars
import prismaMock from "../../../../tests/libs/__mocks__/prismaMock";
import { describe, it, expect } from "vitest";
import { WorkflowRepository } from "./workflow";
describe("WorkflowRepository", () => {
describe("getVerifiedEmails", () => {
it("should return the email of the user", async () => {
prismaMock.secondaryEmail.findMany.mockResolvedValue([]);
prismaMock.verifiedEmail.findMany.mockResolvedValue([]);
const emails = await WorkflowRepository.getVerifiedEmails({
userEmail: "user@example.com",
userId: 1,
});
expect(emails).toEqual(["user@example.com"]);
});
it("should return the email of the user and verified secondary emails", async () => {
prismaMock.verifiedEmail.findMany.mockResolvedValue([]);
prismaMock.secondaryEmail.findMany.mockResolvedValue([
{
id: 101,
email: "secondary@example.com",
emailVerified: new Date(),
},
]);
const emails = await WorkflowRepository.getVerifiedEmails({
userEmail: "user@example.com",
userId: 1,
});
expect(emails).toEqual(["user@example.com", "secondary@example.com"]);
});
it("should return the email of the user and verified secondary emails from the team", async () => {
prismaMock.verifiedEmail.findMany.mockResolvedValue([]);
prismaMock.secondaryEmail.findMany.mockResolvedValue([
{
id: 101,
email: "secondary@example.com",
emailVerified: new Date(),
},
]);
prismaMock.user.findMany.mockResolvedValue([
{
id: 1,
email: "organizer@example.com",
},
{
id: 2,
email: "teammember1@example.com",
secondaryEmails: [],
},
{
id: 3,
email: "teammember2@example.com",
secondaryEmails: [
{
email: "secondary2@example.com",
emailVerified: new Date(),
},
],
},
]);
const emails = await WorkflowRepository.getVerifiedEmails({
userEmail: "user@example.com",
userId: 1,
teamId: 1,
});
expect(emails).toEqual([
"user@example.com",
"secondary@example.com",
"teammember1@example.com",
"teammember2@example.com",
"secondary2@example.com",
]);
});
});
});