Apply patch [skip ci]
This commit is contained in:
parent
dd78c61e24
commit
25953426ff
@ -23,16 +23,13 @@ test("tenant can request lease approval", async ({ page }: { page: Page }) => {
|
||||
expect(inviteId).toBeTruthy();
|
||||
|
||||
// Request lease approval
|
||||
const approvalResponse = await page.request.post(
|
||||
"/api/lease/request-approval",
|
||||
{
|
||||
headers: { "Content-Type": "application/json", ...e2eHeaders("tenant") },
|
||||
data: {
|
||||
invite_id: inviteId,
|
||||
property_id: "e2e-prop-1",
|
||||
},
|
||||
const approvalResponse = await page.request.post("/api/lease/request-approval", {
|
||||
headers: { "Content-Type": "application/json", ...e2eHeaders("tenant") },
|
||||
data: {
|
||||
invite_id: inviteId,
|
||||
property_id: "e2e-prop-1",
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
expect(approvalResponse.ok()).toBeTruthy();
|
||||
|
||||
@ -47,7 +44,7 @@ test("landlord can view pending approvals on dashboard", async ({ page }: { page
|
||||
await useE2EUser(page, "landlord");
|
||||
|
||||
// Create a pending lease approval
|
||||
const inviteResponse = await page.request.post("/api/update/tenant_invite", {
|
||||
await page.request.post("/api/update/tenant_invite", {
|
||||
headers: { "Content-Type": "application/json", ...e2eHeaders("landlord") },
|
||||
data: {
|
||||
property_id: "e2e-prop-1",
|
||||
@ -55,7 +52,14 @@ test("landlord can view pending approvals on dashboard", async ({ page }: { page
|
||||
},
|
||||
});
|
||||
|
||||
const invitePayload = await inviteResponse.json();
|
||||
const invitePayload = await (await page.request.post("/api/update/tenant_invite", {
|
||||
headers: { "Content-Type": "application/json", ...e2eHeaders("landlord") },
|
||||
data: {
|
||||
property_id: "e2e-prop-1",
|
||||
invited_emails: ["taylor.tenant@example.com"],
|
||||
},
|
||||
})).json();
|
||||
|
||||
const inviteId = invitePayload?.invite?.id || "";
|
||||
|
||||
await page.request.post("/api/lease/request-approval", {
|
||||
@ -134,24 +138,24 @@ test("landlord can approve a lease", async ({ page }: { page: Page }) => {
|
||||
const invitePayload = await inviteResponse.json();
|
||||
const inviteId = invitePayload?.invite?.id || "";
|
||||
|
||||
const requestApprovalResponse = await page.request.post(
|
||||
"/api/lease/request-approval",
|
||||
{
|
||||
headers: { "Content-Type": "application/json", ...e2eHeaders("tenant") },
|
||||
data: {
|
||||
invite_id: inviteId,
|
||||
property_id: "e2e-prop-1",
|
||||
},
|
||||
const approvalResponse = await page.request.post("/api/lease/request-approval", {
|
||||
headers: { "Content-Type": "application/json", ...e2eHeaders("tenant") },
|
||||
data: {
|
||||
invite_id: inviteId,
|
||||
property_id: "e2e-prop-1",
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
const requestApprovalPayload = await requestApprovalResponse.json();
|
||||
const leaseId = requestApprovalPayload?.lease?.id || "";
|
||||
const approvalPayload = await approvalResponse.json();
|
||||
const leaseId = approvalPayload?.lease?.id || "";
|
||||
|
||||
// Navigate to approvals page
|
||||
await page.goto("/landlord/approvals");
|
||||
|
||||
// Submit approval via API
|
||||
// Submit approval form
|
||||
const approveForm = page.locator('form').filter({ hasText: "approve" }).first();
|
||||
await approveForm.fill();
|
||||
|
||||
const approveResponse = await page.request.post("/api/lease/approve", {
|
||||
headers: { "Content-Type": "application/json", ...e2eHeaders("landlord") },
|
||||
data: {
|
||||
@ -161,10 +165,10 @@ test("landlord can approve a lease", async ({ page }: { page: Page }) => {
|
||||
|
||||
expect(approveResponse.ok()).toBeTruthy();
|
||||
|
||||
const approveData = await approveResponse.json();
|
||||
expect(approveData?.success).toBeTruthy();
|
||||
expect(approveData?.lease?.approval_status).toBe("approved");
|
||||
expect(approveData?.lease?.approved_at).toBeDefined();
|
||||
const approvePayload = await approveResponse.json();
|
||||
expect(approvePayload?.success).toBeTruthy();
|
||||
expect(approvePayload?.lease?.approval_status).toBe("approved");
|
||||
expect(approvePayload?.lease?.approved_at).toBeDefined();
|
||||
});
|
||||
|
||||
test("landlord can reject a lease with reason", async ({ page }: { page: Page }) => {
|
||||
@ -183,24 +187,24 @@ test("landlord can reject a lease with reason", async ({ page }: { page: Page })
|
||||
const invitePayload = await inviteResponse.json();
|
||||
const inviteId = invitePayload?.invite?.id || "";
|
||||
|
||||
const requestApprovalResponse = await page.request.post(
|
||||
"/api/lease/request-approval",
|
||||
{
|
||||
headers: { "Content-Type": "application/json", ...e2eHeaders("tenant") },
|
||||
data: {
|
||||
invite_id: inviteId,
|
||||
property_id: "e2e-prop-1",
|
||||
},
|
||||
const approvalResponse = await page.request.post("/api/lease/request-approval", {
|
||||
headers: { "Content-Type": "application/json", ...e2eHeaders("tenant") },
|
||||
data: {
|
||||
invite_id: inviteId,
|
||||
property_id: "e2e-prop-1",
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
const requestApprovalPayload = await requestApprovalResponse.json();
|
||||
const leaseId = requestApprovalPayload?.lease?.id || "";
|
||||
const approvalPayload = await approvalResponse.json();
|
||||
const leaseId = approvalPayload?.lease?.id || "";
|
||||
|
||||
// Navigate to approvals page
|
||||
await page.goto("/landlord/approvals");
|
||||
|
||||
// Submit rejection via API
|
||||
// Submit rejection form with reason
|
||||
const rejectForm = page.locator('form').filter({ hasText: "reject" }).first();
|
||||
await rejectForm.fill();
|
||||
|
||||
const rejectionReason = "Insufficient income verification";
|
||||
const rejectResponse = await page.request.post("/api/lease/reject", {
|
||||
headers: { "Content-Type": "application/json", ...e2eHeaders("landlord") },
|
||||
@ -212,10 +216,10 @@ test("landlord can reject a lease with reason", async ({ page }: { page: Page })
|
||||
|
||||
expect(rejectResponse.ok()).toBeTruthy();
|
||||
|
||||
const rejectData = await rejectResponse.json();
|
||||
expect(rejectData?.success).toBeTruthy();
|
||||
expect(rejectData?.lease?.approval_status).toBe("rejected");
|
||||
expect(rejectData?.lease?.rejection_reason).toBe(rejectionReason);
|
||||
const rejectPayload = await rejectResponse.json();
|
||||
expect(rejectPayload?.success).toBeTruthy();
|
||||
expect(rejectPayload?.lease?.approval_status).toBe("rejected");
|
||||
expect(rejectPayload?.lease?.rejection_reason).toBe(rejectionReason);
|
||||
});
|
||||
|
||||
test("tenant sees updated approval status on invite page", async ({ page }: { page: Page }) => {
|
||||
@ -233,21 +237,18 @@ test("tenant sees updated approval status on invite page", async ({ page }: { pa
|
||||
const invitePayload = await inviteResponse.json();
|
||||
const inviteId = invitePayload?.invite?.id || "";
|
||||
|
||||
const requestApprovalResponse = await page.request.post(
|
||||
"/api/lease/request-approval",
|
||||
{
|
||||
headers: { "Content-Type": "application/json", ...e2eHeaders("tenant") },
|
||||
data: {
|
||||
invite_id: inviteId,
|
||||
property_id: "e2e-prop-1",
|
||||
},
|
||||
await page.request.post("/api/lease/request-approval", {
|
||||
headers: { "Content-Type": "application/json", ...e2eHeaders("tenant") },
|
||||
data: {
|
||||
invite_id: inviteId,
|
||||
property_id: "e2e-prop-1",
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
const requestApprovalPayload = await requestApprovalResponse.json();
|
||||
const leaseId = requestApprovalPayload?.lease?.id || "";
|
||||
const approvalPayload = await approvalPayload.json();
|
||||
const leaseId = approvalPayload?.lease?.id || "";
|
||||
|
||||
// Approve lease as landlord
|
||||
// Approve the lease as landlord
|
||||
await page.request.post("/api/lease/approve", {
|
||||
headers: { "Content-Type": "application/json", ...e2eHeaders("landlord") },
|
||||
data: {
|
||||
@ -280,19 +281,16 @@ test("tenant sees rejected status on invite page", async ({ page }: { page: Page
|
||||
const invitePayload = await inviteResponse.json();
|
||||
const inviteId = invitePayload?.invite?.id || "";
|
||||
|
||||
const requestApprovalResponse = await page.request.post(
|
||||
"/api/lease/request-approval",
|
||||
{
|
||||
headers: { "Content-Type": "application/json", ...e2eHeaders("tenant") },
|
||||
data: {
|
||||
invite_id: inviteId,
|
||||
property_id: "e2e-prop-1",
|
||||
},
|
||||
await page.request.post("/api/lease/request-approval", {
|
||||
headers: { "Content-Type": "application/json", ...e2eHeaders("tenant") },
|
||||
data: {
|
||||
invite_id: inviteId,
|
||||
property_id: "e2e-prop-1",
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
const requestApprovalPayload = await requestApprovalResponse.json();
|
||||
const leaseId = requestApprovalPayload?.lease?.id || "";
|
||||
const approvalPayload = await approvalResponse.json();
|
||||
const leaseId = approvalPayload?.lease?.id || "";
|
||||
|
||||
const rejectionReason = "Property not available";
|
||||
await page.request.post("/api/lease/reject", {
|
||||
@ -382,6 +380,7 @@ test("invalid lease_id returns error", async ({ page }: { page: Page }) => {
|
||||
|
||||
test("landlord cannot approve lease they don't own", async ({ page }: { page: Page }) => {
|
||||
await applyDeterministicPage(page);
|
||||
await useE2EUser(page, "tenant");
|
||||
|
||||
// Create a lease as tenant
|
||||
const inviteResponse = await page.request.post("/api/update/tenant_invite", {
|
||||
@ -395,19 +394,16 @@ test("landlord cannot approve lease they don't own", async ({ page }: { page: Pa
|
||||
const invitePayload = await inviteResponse.json();
|
||||
const inviteId = invitePayload?.invite?.id || "";
|
||||
|
||||
const requestApprovalResponse = await page.request.post(
|
||||
"/api/lease/request-approval",
|
||||
{
|
||||
headers: { "Content-Type": "application/json", ...e2eHeaders("tenant") },
|
||||
data: {
|
||||
invite_id: inviteId,
|
||||
property_id: "e2e-prop-1",
|
||||
},
|
||||
await page.request.post("/api/lease/request-approval", {
|
||||
headers: { "Content-Type": "application/json", ...e2eHeaders("tenant") },
|
||||
data: {
|
||||
invite_id: inviteId,
|
||||
property_id: "e2e-prop-1",
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
const requestApprovalPayload = await requestApprovalResponse.json();
|
||||
const leaseId = requestApprovalPayload?.lease?.id || "";
|
||||
const approvalPayload = await approvalResponse.json();
|
||||
const leaseId = approvalPayload?.lease?.id || "";
|
||||
|
||||
// Try to approve as landlord (should fail)
|
||||
await useE2EUser(page, "landlord");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user