* refactor: apply biome formatting to apps/web (batch 1) Formats apps/web non-modules directories: - apps/web/app - apps/web/lib - apps/web/pages - apps/web/styles - apps/web/server - apps/web/test - Root-level .ts and .mjs files Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor: apply biome formatting to apps/web/modules (batch 2) Formats smaller apps/web/modules directories: - onboarding, data-table, users, apps, auth - integration-attribute-sync, shell, availability - feature-flags, team, webhooks, getting-started - feature-opt-in, troubleshooter, schedules, notifications - signup-view.tsx Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor: apply biome formatting to apps/web/modules (batch 3) Formats medium apps/web/modules directories: - bookings - event-types - insights - embed Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor: apply biome formatting to apps/web/modules/ee (batch 4) Formats apps/web/modules/ee directory. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor: apply biome formatting to apps/web (batch 5) Formats remaining apps/web directories: - apps/web/modules/settings - apps/web/modules/booking-audit - apps/web/playwright Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor: apply biome formatting to apps/web/components (batch 6) Formats remaining apps/web/components files. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor: apply biome formatting to new apps/web files from main Formats newly added/modified files from main merge: - WorkflowStepContainer.tsx (resolved merge conflicts) - Newly moved files (blocklist, form-builder, schedules, etc.) - Other files modified in main Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor: apply biome formatting to new apps/web files from main Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
76 lines
3.2 KiB
TypeScript
76 lines
3.2 KiB
TypeScript
import type { Mock } from "vitest";
|
|
import { vi } from "vitest";
|
|
|
|
import {
|
|
prismaMock,
|
|
resetPrismaMock,
|
|
} from "@calcom/features/auth/signup/handlers/__tests__/mocks/prisma.mocks";
|
|
import {
|
|
createMockTeam,
|
|
createMockFoundToken,
|
|
} from "@calcom/features/auth/signup/handlers/__tests__/mocks/signup.factories";
|
|
import type { SignupBody } from "@calcom/features/auth/signup/handlers/__tests__/mocks/signup.factories";
|
|
|
|
const mockFindTokenByToken: Mock = vi.fn();
|
|
const mockValidateAndGetCorrectedUsernameForTeam: Mock = vi.fn();
|
|
|
|
vi.mock("next/server", async () => {
|
|
const { createNextServerMock } = await import(
|
|
"@calcom/features/auth/signup/handlers/__tests__/mocks/next.mocks"
|
|
);
|
|
return createNextServerMock();
|
|
});
|
|
vi.mock("@calcom/prisma", async () => {
|
|
const { createPrismaMock } = await import(
|
|
"@calcom/features/auth/signup/handlers/__tests__/mocks/prisma.mocks"
|
|
);
|
|
return createPrismaMock();
|
|
});
|
|
vi.mock("@calcom/prisma/client", async () => {
|
|
const { createPrismaMock } = await import(
|
|
"@calcom/features/auth/signup/handlers/__tests__/mocks/prisma.mocks"
|
|
);
|
|
return createPrismaMock();
|
|
});
|
|
vi.mock("@calcom/lib/logger", () => ({
|
|
default: { getSubLogger: () => ({ warn: vi.fn(), error: vi.fn(), debug: vi.fn(), info: vi.fn() }) },
|
|
}));
|
|
vi.mock("@calcom/lib/auth/hashPassword", () => ({ hashPassword: vi.fn().mockResolvedValue("hashed") }));
|
|
vi.mock("@calcom/lib/slugify", () => ({ default: vi.fn((s: string) => s.toLowerCase()) }));
|
|
vi.mock("@calcom/lib/constants", () => ({ IS_PREMIUM_USERNAME_ENABLED: false }));
|
|
vi.mock("@calcom/lib/server/username", () => ({
|
|
isUsernameReservedDueToMigration: vi.fn().mockResolvedValue(false),
|
|
}));
|
|
vi.mock("@calcom/features/auth/lib/verifyEmail", () => ({ sendEmailVerification: vi.fn() }));
|
|
vi.mock("@calcom/features/auth/signup/utils/createOrUpdateMemberships", () => ({
|
|
createOrUpdateMemberships: vi.fn(),
|
|
}));
|
|
vi.mock("@calcom/features/auth/signup/utils/validateUsername", () => ({
|
|
validateAndGetCorrectedUsernameAndEmail: vi.fn().mockResolvedValue({ isValid: true, username: "testuser" }),
|
|
}));
|
|
vi.mock("@calcom/features/auth/signup/utils/organization", () => ({ joinAnyChildTeamOnOrgInvite: vi.fn() }));
|
|
vi.mock("@calcom/features/auth/signup/utils/prefillAvatar", () => ({ prefillAvatar: vi.fn() }));
|
|
vi.mock("@calcom/features/auth/signup/utils/token", () => ({
|
|
findTokenByToken: (...args: unknown[]) => mockFindTokenByToken(...args),
|
|
throwIfTokenExpired: vi.fn(),
|
|
validateAndGetCorrectedUsernameForTeam: (...args: unknown[]) =>
|
|
mockValidateAndGetCorrectedUsernameForTeam(...args),
|
|
}));
|
|
|
|
// Import after mocks
|
|
import handler from "./selfHostedHandler";
|
|
import { runP2002TestSuite } from "@calcom/features/auth/signup/handlers/__tests__/p2002.test-suite";
|
|
|
|
function callHandler(body: SignupBody): ReturnType<typeof handler> {
|
|
return handler(body as unknown as Record<string, string>);
|
|
}
|
|
|
|
runP2002TestSuite("selfHostedHandler", callHandler, () => {
|
|
vi.clearAllMocks();
|
|
resetPrismaMock();
|
|
mockFindTokenByToken.mockResolvedValue(createMockFoundToken());
|
|
mockValidateAndGetCorrectedUsernameForTeam.mockResolvedValue("testuser");
|
|
prismaMock.team.findUnique.mockResolvedValue(createMockTeam() as never);
|
|
prismaMock.verificationToken.delete.mockResolvedValue({} as never);
|
|
});
|