mirror of
https://github.com/hanzoai/calendar.git
synced 2026-10-30 14:46:43 +00:00
* add eslint config * migrate autoLock to features * migrate teamService to features * migrate userCreationService * migrate insights services to features * migrate ProfileRepository * update imports * migrate filter segmen tests * migrate filter segment repository * migrate getBusyTimes * migrate getLocaleFromRequest * refactor csvUtils * make filename clearer * migrate getLuckyUser integration test * migrate autoLock test to features * wip * refactors * migrate useBookerUrl * migrate more * wip * Migrate eventTypeRepository * membership repository * update imports * update imports * migrate * move organization repository * update imports * update imports * wip * wip * wip * wip * wip * wip * wip * wip * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix tests * fix type checks * fix * fix * migrate * update imports * fix tests * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix
114 lines
3.0 KiB
TypeScript
114 lines
3.0 KiB
TypeScript
import { describe, it, beforeEach, vi, expect } from "vitest";
|
|
|
|
import { getTeamWithoutMembers } from "@calcom/features/ee/teams/lib/queries";
|
|
import { MembershipRepository } from "@calcom/features/membership/repositories/MembershipRepository";
|
|
|
|
import type { TrpcSessionUser } from "../../../types";
|
|
import getTeam from "./get.handler";
|
|
|
|
vi.mock("@calcom/features/membership/repositories/MembershipRepository", () => ({
|
|
MembershipRepository: {
|
|
findUniqueByUserIdAndTeamId: vi.fn(),
|
|
},
|
|
}));
|
|
|
|
vi.mock("@calcom/features/ee/teams/lib/queries", () => ({
|
|
getTeamWithoutMembers: vi.fn(),
|
|
}));
|
|
|
|
describe("getTeam", () => {
|
|
const user = {
|
|
id: 1,
|
|
organization: { isOrgAdmin: false },
|
|
} as NonNullable<TrpcSessionUser>;
|
|
|
|
const input = {
|
|
teamId: 123,
|
|
isOrg: false,
|
|
};
|
|
|
|
beforeEach(() => {
|
|
// Reset all mocks before each test
|
|
vi.clearAllMocks();
|
|
});
|
|
|
|
it("throws UNAUTHORIZED if user is not a member of the team", async () => {
|
|
(MembershipRepository.findUniqueByUserIdAndTeamId as any).mockResolvedValue(null);
|
|
|
|
await expect(getTeam({ ctx: { user }, input })).rejects.toMatchObject({
|
|
code: "UNAUTHORIZED",
|
|
message: "You are not a member of this team.",
|
|
});
|
|
});
|
|
|
|
it("throws NOT_FOUND if team does not exist", async () => {
|
|
(MembershipRepository.findUniqueByUserIdAndTeamId as any).mockResolvedValue({
|
|
role: "member",
|
|
accepted: true,
|
|
});
|
|
(getTeamWithoutMembers as any).mockResolvedValue(null);
|
|
|
|
await expect(getTeam({ ctx: { user }, input })).rejects.toMatchObject({
|
|
code: "NOT_FOUND",
|
|
message: "Team not found",
|
|
});
|
|
});
|
|
|
|
it("passes undefined as userId if user is org admin", async () => {
|
|
const adminUser = {
|
|
...user,
|
|
organization: { isOrgAdmin: true },
|
|
};
|
|
|
|
(MembershipRepository.findUniqueByUserIdAndTeamId as any).mockResolvedValue({
|
|
role: "admin",
|
|
accepted: true,
|
|
});
|
|
(getTeamWithoutMembers as any).mockResolvedValue({
|
|
id: input.teamId,
|
|
name: "Admin Team",
|
|
});
|
|
|
|
await getTeam({ ctx: { user: adminUser }, input });
|
|
|
|
expect(getTeamWithoutMembers).toHaveBeenCalledWith({
|
|
id: input.teamId,
|
|
userId: undefined,
|
|
isOrgView: input.isOrg,
|
|
});
|
|
});
|
|
|
|
it("returns team data with membership info if authorized", async () => {
|
|
const membershipData = {
|
|
role: "admin",
|
|
accepted: true,
|
|
};
|
|
const teamData = {
|
|
id: input.teamId,
|
|
name: "Team Name",
|
|
description: "A team",
|
|
};
|
|
|
|
(MembershipRepository.findUniqueByUserIdAndTeamId as any).mockResolvedValue(membershipData);
|
|
(getTeamWithoutMembers as any).mockResolvedValue(teamData);
|
|
|
|
const result = await getTeam({ ctx: { user }, input });
|
|
|
|
expect(result).toEqual({
|
|
...teamData,
|
|
membership: membershipData,
|
|
});
|
|
|
|
expect(MembershipRepository.findUniqueByUserIdAndTeamId).toHaveBeenCalledWith({
|
|
userId: user.id,
|
|
teamId: input.teamId,
|
|
});
|
|
|
|
expect(getTeamWithoutMembers).toHaveBeenCalledWith({
|
|
id: input.teamId,
|
|
userId: user.id,
|
|
isOrgView: input.isOrg,
|
|
});
|
|
});
|
|
});
|