mirror of
https://github.com/Hestia-Homes/assessment-model.git
synced 2026-06-08 11:37:25 +00:00
83 lines
2.9 KiB
JavaScript
83 lines
2.9 KiB
JavaScript
/**
|
|
* Live Tracking — Survey request flow
|
|
*
|
|
* Verifies the client-facing "Request Survey" flow in the Survey & Admin tab:
|
|
* 1. User opens a property and navigates to Survey & Admin tab.
|
|
* 2. User fills in a free-text reason and submits the survey request.
|
|
* 3. The POST hits /api/portfolio/[id]/survey-requests.
|
|
* 4. The drawer reflects the pending request (badge shown).
|
|
* 5. On reload the pending request is still visible.
|
|
*
|
|
* Uses cy.intercept so the HubSpot side-effect is observable without a live
|
|
* CRM round-trip.
|
|
*/
|
|
|
|
const PORTFOLIO_SLUG = Cypress.env("LIVE_PORTFOLIO_SLUG");
|
|
const TARGET_DEAL_NAME = Cypress.env("LIVE_SURVEY_REQUEST_DEAL_NAME");
|
|
|
|
const SURVEY_NOTES = "Please arrange a full retrofit assessment — tenant has moved in.";
|
|
|
|
describe("Survey request — write user flow", function () {
|
|
before(function () {
|
|
if (!PORTFOLIO_SLUG) {
|
|
cy.log(
|
|
"LIVE_PORTFOLIO_SLUG env var not set — skipping live tracking specs",
|
|
);
|
|
this.skip();
|
|
}
|
|
});
|
|
|
|
function openDrawerAtSurveyAdmin() {
|
|
cy.visit(`/portfolio/${PORTFOLIO_SLUG}/your-projects/live`);
|
|
|
|
cy.contains("button, [role=tab]", "Measures").click();
|
|
|
|
if (TARGET_DEAL_NAME) {
|
|
cy.contains("[data-testid=measures-row]", TARGET_DEAL_NAME).click();
|
|
} else {
|
|
cy.get("[data-testid=measures-row]").first().click();
|
|
}
|
|
|
|
cy.get("[data-testid=property-detail-drawer]").should("be.visible");
|
|
cy.get("[data-testid=drawer-tab-survey-admin]").click();
|
|
cy.get("[data-testid=drawer-tab-panel-survey-admin]").should("be.visible");
|
|
}
|
|
|
|
it("shows the survey request form in the Survey & Admin tab", () => {
|
|
openDrawerAtSurveyAdmin();
|
|
|
|
cy.get("[data-testid=survey-request-form]").should("be.visible");
|
|
cy.get("[data-testid=survey-request-notes]").should("be.visible");
|
|
cy.get("[data-testid=survey-request-submit]").should("be.visible");
|
|
});
|
|
|
|
it("submits a survey request and shows a pending badge", () => {
|
|
cy.intercept(
|
|
"POST",
|
|
`/api/portfolio/*/survey-requests`,
|
|
).as("createSurveyRequest");
|
|
|
|
openDrawerAtSurveyAdmin();
|
|
|
|
cy.get("[data-testid=survey-request-notes]").type(SURVEY_NOTES);
|
|
cy.get("[data-testid=survey-request-submit]")
|
|
.should("not.be.disabled")
|
|
.click();
|
|
|
|
cy.wait("@createSurveyRequest").then((intercepted) => {
|
|
expect(intercepted.request.body).to.have.property("notes");
|
|
expect(intercepted.response.statusCode).to.be.oneOf([200, 201]);
|
|
expect(intercepted.response.body).to.have.property("ok", true);
|
|
});
|
|
|
|
// Pending badge appears after submission.
|
|
cy.get("[data-testid=survey-request-pending-badge]").should("be.visible");
|
|
});
|
|
|
|
it("persists the pending request across a page reload", () => {
|
|
openDrawerAtSurveyAdmin();
|
|
|
|
// If a pending request exists it should be visible without submitting again.
|
|
cy.get("[data-testid=survey-request-pending-badge]").should("be.visible");
|
|
});
|
|
});
|