111 lines
3.6 KiB
TypeScript
111 lines
3.6 KiB
TypeScript
import { expect, test } from "@playwright/test";
|
|
import { e2eHeaders } from "./helpers.ts";
|
|
|
|
test("lease document API supports create, retrieve, and delete", async ({ request }) => {
|
|
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 }) => {
|
|
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);
|
|
});
|