import type { Page } from "@playwright/test";

import { apiEnvelope } from "../data/common";
import { createPaymentOrderResponse, paidPaymentOrderStatusResponse, paymentPlansResponse, tipPaymentPlansResponse, vipStatusResponse } from "../data/payment";

export async function registerPaymentMocks(page: Page) {
  await page.route("**/api/payment/commercial-offers/*/accept", async (route) => route.fulfill({ json: apiEnvelope({
    commercialOfferId: "13ec8a10-58d7-4d24-b66b-8db5699a1aa8",
    planId: "vip_annual",
    subscriptionType: "vip",
    discountPercent: 30,
    pricePercent: 70,
    expiresAt: "2026-07-24T08:00:00+00:00",
    message: "I got it for you.",
    promotionType: "commercial_seven_discount",
  }) }));
  await page.route("**/api/payment/plans**", async (route) => route.fulfill({ json: apiEnvelope(paymentPlansResponse) }));
  await page.route("**/api/payment/tip-plans**", async (route) => route.fulfill({ json: apiEnvelope(tipPaymentPlansResponse) }));
  await page.route("**/api/payment/create-order", async (route) => route.fulfill({ json: apiEnvelope(createPaymentOrderResponse) }));
  await page.route("**/api/payment/order-status**", async (route) => route.fulfill({ json: apiEnvelope(paidPaymentOrderStatusResponse) }));
  await page.route("**/api/payment/vip-status", async (route) => route.fulfill({ json: apiEnvelope(vipStatusResponse) }));
}
