Files
cozsweet-frontend-nextjs/e2e/fixtures/api-mocks.ts
T

37 lines
1.4 KiB
TypeScript

import type { Page } from "@playwright/test";
import { registerAuthMocks } from "./api/auth";
import { registerChatMocks } from "./api/chat";
import { registerPaymentMocks } from "./api/payment";
import { registerUserMocks } from "./api/user";
export interface MockCoreApisOptions {
chatLimitTriggerAt?: number;
chatSendTokenRefreshFlow?: boolean;
paidImageFlow?: boolean;
paidImageInsufficientCreditsFlow?: boolean;
paidVoiceInsufficientCreditsFlow?: boolean;
psidLoginFlow?: boolean;
}
export async function mockCoreApis(page: Page, options: MockCoreApisOptions = {}) {
const chatOptions = {
chatLimitTriggerAt: options.chatLimitTriggerAt,
chatSendTokenRefreshFlow: options.chatSendTokenRefreshFlow ?? false,
paidImageFlow: options.paidImageFlow ?? false,
paidImageInsufficientCreditsFlow: options.paidImageInsufficientCreditsFlow ?? false,
paidVoiceInsufficientCreditsFlow: options.paidVoiceInsufficientCreditsFlow ?? false,
psidLoginFlow: options.psidLoginFlow ?? false,
};
const chatState = { hasExpiredChatSend: false, paidImageRequested: false, paidImageUnlocked: false };
await registerAuthMocks(page, {
chatSendTokenRefreshFlow: chatOptions.chatSendTokenRefreshFlow,
isChatSendTokenExpired: () => chatState.hasExpiredChatSend,
psidLoginFlow: chatOptions.psidLoginFlow,
});
await registerUserMocks(page);
await registerChatMocks(page, chatOptions, chatState);
await registerPaymentMocks(page);
}