diff --git a/tests/e2e/lease-approval.spec.ts b/tests/e2e/lease-approval.spec.ts index 1643dde..93dde25 100644 --- a/tests/e2e/lease-approval.spec.ts +++ b/tests/e2e/lease-approval.spec.ts @@ -18,8 +18,8 @@ test("tenant can request lease approval", async ({ page }: { page: Page }) => { }); expect(inviteResponse.ok()).toBeTruthy(); - const invitePayload = await inviteResponse.json(); - const inviteId = invitePayload?.invite?.id || ""; + const inviteData = await inviteResponse.json(); + const inviteId = inviteData?.invite?.id || ""; expect(inviteId).toBeTruthy(); // Request lease approval @@ -33,10 +33,10 @@ test("tenant can request lease approval", async ({ page }: { page: Page }) => { expect(approvalResponse.ok()).toBeTruthy(); - const approvalPayload = await approvalResponse.json(); - expect(approvalPayload?.success).toBeTruthy(); - expect(approvalPayload?.lease).toBeDefined(); - expect(approvalPayload?.lease?.approval_status).toBe("pending_approval"); + const approvalData = await approvalResponse.json(); + expect(approvalData?.success).toBeTruthy(); + expect(approvalData?.lease).toBeDefined(); + expect(approvalData?.lease?.approval_status).toBe("pending_approval"); }); test("landlord can view pending approvals on dashboard", async ({ page }: { page: Page }) => { @@ -44,7 +44,7 @@ test("landlord can view pending approvals on dashboard", async ({ page }: { page await useE2EUser(page, "landlord"); // Create a pending lease approval - await page.request.post("/api/update/tenant_invite", { + const inviteResponse = await page.request.post("/api/update/tenant_invite", { headers: { "Content-Type": "application/json", ...e2eHeaders("landlord") }, data: { property_id: "e2e-prop-1", @@ -52,15 +52,8 @@ test("landlord can view pending approvals on dashboard", async ({ page }: { page }, }); - 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 || ""; + const inviteData = await inviteResponse.json(); + const inviteId = inviteData?.invite?.id || ""; await page.request.post("/api/lease/request-approval", { headers: { "Content-Type": "application/json", ...e2eHeaders("tenant") }, @@ -95,8 +88,8 @@ test("landlord can view pending approvals on dedicated page", async ({ page }: { }, }); - const invitePayload = await inviteResponse.json(); - const inviteId = invitePayload?.invite?.id || ""; + const inviteData = await inviteResponse.json(); + const inviteId = inviteData?.invite?.id || ""; await page.request.post("/api/lease/request-approval", { headers: { "Content-Type": "application/json", ...e2eHeaders("tenant") }, @@ -135,10 +128,10 @@ test("landlord can approve a lease", async ({ page }: { page: Page }) => { }, }); - const invitePayload = await inviteResponse.json(); - const inviteId = invitePayload?.invite?.id || ""; + const inviteData = await inviteResponse.json(); + const inviteId = inviteData?.invite?.id || ""; - const approvalResponse = await page.request.post("/api/lease/request-approval", { + await page.request.post("/api/lease/request-approval", { headers: { "Content-Type": "application/json", ...e2eHeaders("tenant") }, data: { invite_id: inviteId, @@ -146,15 +139,15 @@ test("landlord can approve a lease", async ({ page }: { page: Page }) => { }, }); - const approvalPayload = await approvalResponse.json(); - const leaseId = approvalPayload?.lease?.id || ""; + const approvalData = await approvalResponse.json(); + const leaseId = approvalData?.lease?.id || ""; // Navigate to approvals page await page.goto("/landlord/approvals"); // Submit approval form const approveForm = page.locator('form').filter({ hasText: "approve" }).first(); - await approveForm.fill(); + await approveForm.fill({}); const approveResponse = await page.request.post("/api/lease/approve", { headers: { "Content-Type": "application/json", ...e2eHeaders("landlord") }, @@ -165,10 +158,10 @@ test("landlord can approve a lease", async ({ page }: { page: Page }) => { expect(approveResponse.ok()).toBeTruthy(); - const approvePayload = await approveResponse.json(); - expect(approvePayload?.success).toBeTruthy(); - expect(approvePayload?.lease?.approval_status).toBe("approved"); - expect(approvePayload?.lease?.approved_at).toBeDefined(); + const approveData = await approveResponse.json(); + expect(approveData?.success).toBeTruthy(); + expect(approveData?.lease?.approval_status).toBe("approved"); + expect(approveData?.lease?.approved_at).toBeDefined(); }); test("landlord can reject a lease with reason", async ({ page }: { page: Page }) => { @@ -184,10 +177,10 @@ test("landlord can reject a lease with reason", async ({ page }: { page: Page }) }, }); - const invitePayload = await inviteResponse.json(); - const inviteId = invitePayload?.invite?.id || ""; + const inviteData = await inviteResponse.json(); + const inviteId = inviteData?.invite?.id || ""; - const approvalResponse = await page.request.post("/api/lease/request-approval", { + await page.request.post("/api/lease/request-approval", { headers: { "Content-Type": "application/json", ...e2eHeaders("tenant") }, data: { invite_id: inviteId, @@ -195,15 +188,15 @@ test("landlord can reject a lease with reason", async ({ page }: { page: Page }) }, }); - const approvalPayload = await approvalResponse.json(); - const leaseId = approvalPayload?.lease?.id || ""; + const approvalData = await approvalResponse.json(); + const leaseId = approvalData?.lease?.id || ""; // Navigate to approvals page await page.goto("/landlord/approvals"); // Submit rejection form with reason const rejectForm = page.locator('form').filter({ hasText: "reject" }).first(); - await rejectForm.fill(); + await rejectForm.fill({}); const rejectionReason = "Insufficient income verification"; const rejectResponse = await page.request.post("/api/lease/reject", { @@ -216,10 +209,10 @@ test("landlord can reject a lease with reason", async ({ page }: { page: Page }) expect(rejectResponse.ok()).toBeTruthy(); - const rejectPayload = await rejectResponse.json(); - expect(rejectPayload?.success).toBeTruthy(); - expect(rejectPayload?.lease?.approval_status).toBe("rejected"); - expect(rejectPayload?.lease?.rejection_reason).toBe(rejectionReason); + const rejectData = await rejectResponse.json(); + expect(rejectData?.success).toBeTruthy(); + expect(rejectData?.lease?.approval_status).toBe("rejected"); + expect(rejectData?.lease?.rejection_reason).toBe(rejectionReason); }); test("tenant sees updated approval status on invite page", async ({ page }: { page: Page }) => { @@ -234,8 +227,8 @@ test("tenant sees updated approval status on invite page", async ({ page }: { pa }, }); - const invitePayload = await inviteResponse.json(); - const inviteId = invitePayload?.invite?.id || ""; + const inviteData = await inviteResponse.json(); + const inviteId = inviteData?.invite?.id || ""; await page.request.post("/api/lease/request-approval", { headers: { "Content-Type": "application/json", ...e2eHeaders("tenant") }, @@ -245,10 +238,10 @@ test("tenant sees updated approval status on invite page", async ({ page }: { pa }, }); - const approvalPayload = await approvalPayload.json(); - const leaseId = approvalPayload?.lease?.id || ""; + const approvalData = await approvalResponse.json(); + const leaseId = approvalData?.lease?.id || ""; - // Approve the lease as landlord + // Approve lease as landlord await page.request.post("/api/lease/approve", { headers: { "Content-Type": "application/json", ...e2eHeaders("landlord") }, data: { @@ -278,8 +271,8 @@ test("tenant sees rejected status on invite page", async ({ page }: { page: Page }, }); - const invitePayload = await inviteResponse.json(); - const inviteId = invitePayload?.invite?.id || ""; + const inviteData = await inviteResponse.json(); + const inviteId = inviteData?.invite?.id || ""; await page.request.post("/api/lease/request-approval", { headers: { "Content-Type": "application/json", ...e2eHeaders("tenant") }, @@ -289,8 +282,8 @@ test("tenant sees rejected status on invite page", async ({ page }: { page: Page }, }); - const approvalPayload = await approvalResponse.json(); - const leaseId = approvalPayload?.lease?.id || ""; + const approvalData = await approvalResponse.json(); + const leaseId = approvalData?.lease?.id || ""; const rejectionReason = "Property not available"; await page.request.post("/api/lease/reject", { @@ -380,7 +373,6 @@ 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", { @@ -391,8 +383,8 @@ test("landlord cannot approve lease they don't own", async ({ page }: { page: Pa }, }); - const invitePayload = await inviteResponse.json(); - const inviteId = invitePayload?.invite?.id || ""; + const inviteData = await inviteResponse.json(); + const inviteId = inviteData?.invite?.id || ""; await page.request.post("/api/lease/request-approval", { headers: { "Content-Type": "application/json", ...e2eHeaders("tenant") }, @@ -402,8 +394,8 @@ test("landlord cannot approve lease they don't own", async ({ page }: { page: Pa }, }); - const approvalPayload = await approvalResponse.json(); - const leaseId = approvalPayload?.lease?.id || ""; + const approvalData = await approvalResponse.json(); + const leaseId = approvalData?.lease?.id || ""; // Try to approve as landlord (should fail) await useE2EUser(page, "landlord");