integratedhub/tests/e2e/financial-api.spec.ts
2026-01-20 09:02:26 -06:00

87 lines
2.6 KiB
TypeScript

import { expect, test } from "@playwright/test";
import { e2eHeaders } from "./helpers.ts";
test("tenant payment methods API returns default method", async ({ request }) => {
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 }) => {
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 }) => {
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 }) => {
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);
});