52 lines
1.3 KiB
TypeScript
52 lines
1.3 KiB
TypeScript
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",
|
|
},
|
|
],
|
|
});
|
|
});
|
|
});
|