integratedhub/tests/e2e/document-api.spec.ts
open-swe-dev-andrinoid[bot] c773372c30 Apply patch [skip ci]
2026-01-21 14:44:06 +00:00

111 lines
3.7 KiB
TypeScript

import { type APIRequestContext, expect, test } from "@playwright/test";
import { e2eHeaders } from "./helpers.ts";
test("lease document API supports create, retrieve, and delete", async ({ request }: { request: APIRequestContext }) => {
const createResponse = await request.post("/api/create/lease_document", {
headers: {
...e2eHeaders("landlord"),
"Content-Type": "application/json",
},
data: {
lease_id: "e2e-lease-1",
document_type: "addendum",
file_url: "/static/addendum-test.pdf",
file_name: "addendum-test.pdf",
},
});
expect(createResponse.ok()).toBeTruthy();
const createData = await createResponse.json();
expect(createData.success).toBeTruthy();
const created = createData.document;
expect(created.document_type).toBe("addendum");
const listResponse = await request.get(
"/api/retrieve/lease_documents?lease_id=e2e-lease-1&document_type=addendum",
{ headers: e2eHeaders("landlord") },
);
expect(listResponse.ok()).toBeTruthy();
const listData = await listResponse.json();
expect(listData.success).toBeTruthy();
expect(
listData.documents.some((doc: { id: string }) => doc.id === created.id),
).toBeTruthy();
const fetchResponse = await request.get(
`/api/retrieve/lease_documents?id=${created.id}`,
{ headers: e2eHeaders("landlord") },
);
expect(fetchResponse.ok()).toBeTruthy();
const fetchData = await fetchResponse.json();
expect(fetchData.success).toBeTruthy();
expect(fetchData.document?.id).toBe(created.id);
const deleteResponse = await request.post("/api/delete/lease_document", {
headers: {
...e2eHeaders("landlord"),
"Content-Type": "application/json",
},
data: { id: created.id },
});
expect(deleteResponse.ok()).toBeTruthy();
const deleteData = await deleteResponse.json();
expect(deleteData.success).toBeTruthy();
expect(deleteData.deleted?.id).toBe(created.id);
const afterResponse = await request.get(
`/api/retrieve/lease_documents?id=${created.id}`,
{ headers: e2eHeaders("landlord") },
);
expect(afterResponse.ok()).toBeTruthy();
const afterData = await afterResponse.json();
expect(afterData.success).toBeTruthy();
expect(afterData.document).toBeNull();
});
test("lease document API returns main document and signing status", async ({ request }: { request: APIRequestContext }) => {
const createResponse = await request.post("/api/create/lease_document", {
headers: {
...e2eHeaders("landlord"),
"Content-Type": "application/json",
},
data: {
lease_id: "e2e-lease-1",
document_type: "lease",
file_url: "/static/lease-main-test.pdf",
file_name: "lease-main-test.pdf",
},
});
expect(createResponse.ok()).toBeTruthy();
const createData = await createResponse.json();
const created = createData.document;
const mainResponse = await request.get(
"/api/retrieve/lease_documents?lease_id=e2e-lease-1&main_only=true",
{ headers: e2eHeaders("landlord") },
);
expect(mainResponse.ok()).toBeTruthy();
const mainData = await mainResponse.json();
expect(mainData.success).toBeTruthy();
expect(mainData.main_document?.id).toBe(created.id);
const statusResponse = await request.get(
"/api/retrieve/lease_documents?lease_id=e2e-lease-1&signing_status=true",
{ headers: e2eHeaders("landlord") },
);
expect(statusResponse.ok()).toBeTruthy();
const statusData = await statusResponse.json();
expect(statusData.success).toBeTruthy();
expect(statusData.signing_status.has_lease_document).toBeTruthy();
expect(statusData.signing_status.landlord_signed).toBe(false);
expect(statusData.signing_status.tenant_signed).toBe(false);
expect(statusData.signing_status.fully_signed).toBe(false);
});