Files
Artista-Filmcamp/tests/support/db.ts
T
Nick Szaunig 59bb5a38a3
Docker-Images bauen und veroeffentlichen / build-and-push (push) Failing after 1m32s
first commit
2026-09-27 06:06:56 +02:00

57 lines
1.8 KiB
TypeScript

import type { Prisma } from "@/generated/prisma/client";
import { CAMP_ID, getDb } from "@/lib/db";
import type { BookingRequest } from "@/lib/booking-service";
import type { PlanType } from "@/lib/payment-plan";
export const db = getDb();
export const SECRET = "test-secret-test-secret-test-secret-123";
/** Leert alle Anwendungstabellen der Testdatenbank. */
export async function resetDb(): Promise<void> {
await db.$executeRawUnsafe(`TRUNCATE TABLE
"Refund", "EmailMessage", "AuditLog", "StripeEvent", "RateLimitBucket",
"VoucherRedemption", "SeatReservation", "Installment", "Booking", "Voucher", "Camp",
"session", "account", "verification", "twoFactor", "user", "rateLimit"
RESTART IDENTITY CASCADE`);
}
export async function setupCamp(data: Prisma.CampUpdateInput = {}): Promise<void> {
await db.camp.upsert({
where: { id: CAMP_ID },
create: { id: CAMP_ID },
update: {},
});
await db.camp.update({
where: { id: CAMP_ID },
data: {
campStartDate: new Date("2027-06-05T00:00:00Z"),
testPhaseOverride: null,
...data,
},
});
}
let counter = 0;
export function bookingRequest(overrides: { planType?: PlanType; voucherCode?: string; email?: string } = {}): BookingRequest {
counter++;
const planType = overrides.planType ?? "FULL";
return {
idempotencyKey: crypto.randomUUID(),
participant: {
firstName: "Test",
lastName: `Person ${counter}`,
email: overrides.email ?? `test${counter}@example.org`,
phone: "+49 30 1234567",
country: "Deutschland",
notes: undefined,
},
planType,
voucherCode: overrides.voucherCode,
consents: { adult: true, terms: true, accommodation: true, privacy: true, installmentMandate: planType !== "FULL" },
};
}
/** Mitten in der Early-Bird-Phase. */
export const EARLY_BIRD_NOW = new Date("2026-11-15T10:00:00Z");