mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-26 18:42:49 +00:00
32 lines
1.4 KiB
TypeScript
32 lines
1.4 KiB
TypeScript
import { test, expect } from "@playwright/test";
|
|
import { PrismaClient } from "@prisma/client";
|
|
import { bookOneAdult } from "../../fixtures/booking-flow";
|
|
|
|
const prisma = new PrismaClient();
|
|
test.afterAll(async () => {
|
|
await prisma.$disconnect();
|
|
});
|
|
|
|
/**
|
|
* UA-1 — one-way, 1 adult, ETB, WALLET. The full real-browser booking flow, asserting the money
|
|
* chain: card fare > 0, and reviewedTotalMinor == Booking.totalMinor == displayTotalMinor ==
|
|
* PaymentIntent.amountMinor == wallet DEBIT, booking CONFIRMED.
|
|
*/
|
|
test("UA-1: one-way WALLET booking, price cross-check holds end to end", async ({ page }) => {
|
|
const r = await bookOneAdult(page, { nationality: "Ethiopian", paymentMethod: "WALLET" });
|
|
expect(r.confirmed).toBe(true);
|
|
expect([200, 201]).toContain(r.initiateStatus);
|
|
|
|
const booking = await prisma.booking.findUniqueOrThrow({ where: { id: r.bookingId } });
|
|
const intent = await prisma.paymentIntent.findUniqueOrThrow({ where: { bookingId: r.bookingId } });
|
|
const debit = await prisma.walletLedgerEntry.findFirst({
|
|
where: { relatedBookingId: r.bookingId, type: "DEBIT" },
|
|
});
|
|
|
|
expect(booking.totalMinor).toBe(r.reviewedTotalMinor);
|
|
expect(booking.displayTotalMinor).toBe(r.reviewedTotalMinor);
|
|
expect(intent.amountMinor).toBe(r.reviewedTotalMinor);
|
|
expect(debit?.amountMinor).toBe(r.reviewedTotalMinor);
|
|
expect(booking.status).toBe("CONFIRMED");
|
|
});
|