Files
playzer/apps/backend/test/support/prisma.mock.ts
Jose Selesan e06bc12097 feat(billing): implement billing module with Stripe and Mercado Pago integration
- Add Stripe and Mercado Pago providers for handling subscriptions.
- Create billing repository and access services for managing billing records.
- Implement webhook handlers for processing events from Stripe and Mercado Pago.
- Add routes for checkout, canceling subscriptions, and retrieving billing status.
- Introduce billing status management with appropriate state transitions.
- Create tests for billing functionalities including webhook idempotency and provider resolution.
- Document the billing module architecture, environment variables, and API endpoints.
2026-06-29 15:55:20 -03:00

51 lines
1.4 KiB
TypeScript

import { mock } from 'bun:test';
import { createPrismaMock } from 'bun-mock-prisma';
import type { PrismaClient } from '@/generated/prisma/client';
import type { PrismaClientMock } from 'bun-mock-prisma';
export const prismaMock = createPrismaMock<PrismaClient>() as PrismaClientMock<PrismaClient>;
export const sendMailMock = mock(
async (_input: {
to: string;
subject: string;
html: string;
text: string;
}) => undefined
);
export const transactionMock = mock(
async <T>(fn: (tx: PrismaClientMock<PrismaClient>) => Promise<T>) => fn(prismaMock)
);
export const dbMock = {
complexUser: prismaMock.complexUser,
complex: prismaMock.complex,
user: prismaMock.user,
complexInvitation: prismaMock.complexInvitation,
sport: prismaMock.sport,
court: prismaMock.court,
courtBooking: prismaMock.courtBooking,
courtBookingLog: prismaMock.courtBookingLog,
courtAvailability: prismaMock.courtAvailability,
courtPriceRule: prismaMock.courtPriceRule,
complexBilling: prismaMock.complexBilling,
billingEvent: prismaMock.billingEvent,
$transaction: transactionMock,
};
mock.module('@/lib/prisma', () => ({
__esModule: true,
db: dbMock,
}));
mock.module('@/lib/mailer', () => ({
__esModule: true,
sendMail: sendMailMock,
}));
export const uuidV7Mock = mock(() => '00000000-0000-4000-8000-000000000001');
mock.module('uuid', () => ({
__esModule: true,
v7: uuidV7Mock,
}));