87 lines
2.7 KiB
TypeScript
87 lines
2.7 KiB
TypeScript
import { type APIRequestContext, expect, test } 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);
|
|
});
|