import { expect, test, type APIRequestContext } from "@playwright/test"; import { e2eHeaders } from "./helpers.ts"; test("tenant payment methods API returns default method", async ({ request }: { request: APIRequestContext }) => { const response = await request.get( "/api/retrieve/payment_methods?default_only=true", { headers: e2eHeaders("tenant"), }, ); expect(response.ok()).toBeTruthy(); const data = await response.json(); expect(data.success).toBeTruthy(); expect(data.payment_methods.length).toBeGreaterThan(0); expect(data.payment_methods[0].id).toBe("e2e-pay-method-1"); }); test("tenant can create payment method via API", async ({ request }: { request: APIRequestContext }) => { const response = await request.post("/api/create/payment_method", { headers: { ...e2eHeaders("tenant"), "Content-Type": "application/json", }, data: { bank_name: "Test Bank", account_type: "checking", routing_number_encrypted: "routing", account_number_encrypted: "account", is_default: false, }, }); expect(response.ok()).toBeTruthy(); const data = await response.json(); expect(data.success).toBeTruthy(); expect(data.payment_method.bank_name).toBe("Test Bank"); }); test("tenant payment transaction API records history", async ({ request }: { request: APIRequestContext }) => { const createResponse = await request.post( "/api/create/payment_transaction", { headers: { ...e2eHeaders("tenant"), "Content-Type": "application/json", }, data: { lease_id: "e2e-lease-1", amount: 2222, payment_date: 1705400000000, payment_method: "ach", transaction_status: "pending", stripe_payment_id: "pi_test_financial_1", }, }, ); expect(createResponse.ok()).toBeTruthy(); const listResponse = await request.get( "/api/retrieve/payment_transactions?lease_id=e2e-lease-1", { headers: e2eHeaders("tenant") }, ); expect(listResponse.ok()).toBeTruthy(); const listData = await listResponse.json(); expect(listData.success).toBeTruthy(); expect( listData.transactions.some((transaction: { amount: number }) => transaction.amount === 2222 ), ).toBeTruthy(); }); test("landlord dashboard API includes payment summary", async ({ request }: { request: APIRequestContext }) => { const response = await request.get("/api/retrieve/landlord_dashboard", { headers: e2eHeaders("landlord"), }); expect(response.ok()).toBeTruthy(); const data = await response.json(); expect(data.success).toBeTruthy(); expect(data.dashboard.paymentData.expected_this_month).toBe(1800); expect(data.dashboard.paymentData.received_this_month).toBe(4200); });