// eslint-disable-next-line @typescript-eslint/no-unused-vars import prismock from "../../../../tests/libs/__mocks__/prisma"; import { describe, test, vi, expect, beforeEach } from "vitest"; import { CreationSource } from "@calcom/prisma/enums"; import { UserRepository } from "./user"; vi.mock("@calcom/lib/server/i18n", () => { return { getTranslation: (key: string) => { return () => key; }, }; }); describe("UserRepository", () => { beforeEach(() => { prismock; }); describe("create", () => { test("Should create a user without a password", async () => { const user = await UserRepository.create({ username: "test", email: "test@example.com", organizationId: null, creationSource: CreationSource.WEBAPP, locked: false, }); expect(user).toEqual( expect.objectContaining({ username: "test", email: "test@example.com", organizationId: null, creationSource: CreationSource.WEBAPP, locked: false, }) ); const password = await prismock.userPassword.findUnique({ where: { userId: user.id, }, }); expect(password).toBeNull(); }); test("If locked param is passed, user should be locked", async () => { const user = await UserRepository.create({ username: "test", email: "test@example.com", organizationId: null, creationSource: CreationSource.WEBAPP, locked: true, }); const userQuery = await prismock.user.findUnique({ where: { email: "test@example.com", }, select: { locked: true, }, }); expect(userQuery).toEqual( expect.objectContaining({ locked: true, }) ); }); test("If organizationId is passed, user should be associated with the organization", async () => { const organizationId = 123; const username = "test"; const user = await UserRepository.create({ username, email: "test@example.com", organizationId, creationSource: CreationSource.WEBAPP, locked: true, }); expect(user).toEqual( expect.objectContaining({ organizationId, }) ); const profile = await prismock.profile.findFirst({ where: { organizationId, username, }, }); expect(profile).toEqual( expect.objectContaining({ organizationId, username, }) ); }); }); });