import { beforeEach, describe, expect, it, vi } from "vitest"; const httpClientMock = vi.hoisted(() => vi.fn()); vi.mock("../http_client", () => ({ httpClient: httpClientMock, })); import { PaymentApi } from "../payment_api"; describe("PaymentApi", () => { beforeEach(() => { httpClientMock.mockReset(); }); it("loads public coffee tip plans from the dedicated endpoint", async () => { httpClientMock.mockResolvedValue({ success: true, data: { plans: [ { planId: "tip_coffee_usd_19_99", planName: "Large Coffee", orderType: "tip", tipType: "coffee_large", description: "Buy Elio a large coffee", amountCents: 1999, currency: "USD", autoRenew: false, isFirstRechargeOffer: false, firstRechargeDiscountPercent: 0, }, ], }, }); const response = await new PaymentApi().getTipPlans(); expect(httpClientMock).toHaveBeenCalledWith("/api/payment/tip-plans"); expect(response.toJson()).toEqual({ plans: [ { planId: "tip_coffee_usd_19_99", planName: "Large Coffee", amountCents: 1999, currency: "USD", }, ], }); }); });