diff --git a/client/cypress/e2e/intake/intake-checklist.cy.js b/client/cypress/e2e/intake/intake-checklist.cy.js index 361196f7a..b4a49d4b2 100644 --- a/client/cypress/e2e/intake/intake-checklist.cy.js +++ b/client/cypress/e2e/intake/intake-checklist.cy.js @@ -1,3 +1,4 @@ +import moment from "moment"; import job from "../../fixtures/jobs/job-3.json"; describe( @@ -29,7 +30,9 @@ describe( .click(); }); - it.only("tests the form", () => { + it("adds checklists to the job and set the job to production", () => { + const tomorrow = moment(new Date()).format("YYYY-MM-DD"); + cy.get('[data-cy="job-actions-button"]').click(); // Go to intake cy.get('[data-cy="job-intake-button"]').should("not.be.disabled").click(); @@ -68,37 +71,13 @@ describe( cy.get('[data-cy="config-form-components"] > div') .eq(index) .find(".ant-rate > li") - .eq(Math.floor(Math.random() * 4)) + .eq(3) .find("div[role='radio']") .click({ force: true }); } }); }); - }); - it("adds checklists to the job and set the job to production", () => { - // Go to a scheduled job - cy.get(".ant-table-row") - .contains("Scheduled") - .first() - .siblings() - .find("a") - .first() - .click(); - // Click actions button - cy.get('[data-cy="job-actions-button"]').click(); - // Go to intake - cy.get('[data-cy="job-intake-button"]').should("not.be.disabled").click(); - cy.url().should("include", "/intake"); - // Fill out the form - cy.get('[data-cy="checklist-form"]').should("be.visible"); - // Check if form items are not disabled - cy.get(".ant-form-item").should("not.be.disabled"); - // Checks all the required checklist item - cy.get('[data-cy="checklist-item-checkbox"]').each((el) => { - cy.wrap(el).check().as("checkbox"); - cy.get("@checkbox").should("be.checked"); - }); // Check if `Add Job to Production` is switched to on cy.get('[data-cy="add-to-production-switch"]').should( "have.attr", @@ -107,10 +86,10 @@ describe( ); // Select dates for completion and delivery cy.get("#scheduled_completion").find(".ant-picker-input").first().click(); - cy.get('[title="2023-06-20"]').should("be.visible").click(); + cy.get(`[title="${tomorrow}"]`).should("be.visible").click(); // Add time selection cy.get("#scheduled_delivery").find(".ant-picker-input").first().click(); - cy.get('[title="2023-06-20"]') + cy.get(`[title="${tomorrow}"]`) .should("be.visible") .click({ multiple: true, force: true }); // Add time selection @@ -119,97 +98,135 @@ describe( // Submit the form cy.get('[data-cy="checklist-submit-button"]').click(); - // Job checklist completed. cy.url().should("include", "/manage/jobs"); cy.contains("In Production"); }); - it("renders and check the checklist correctly", () => { - // Go to a job in production - cy.get(".ant-table-row") - .contains("Arrived") - .first() - .siblings() - .find("a") - .first() - .click(); - // Click the actions button - cy.get('[data-cy="job-actions-button"]').click(); - // Go to checklists - cy.get('[data-cy="job-checklist"]').should("not.be.disabled").click(); - // Check if the checklist renders in the page - cy.get('[data-cy="intake-checklist"]') - .should("be.visible") - .find("input") - .should("be.disabled"); - }); + it("adds checklists to the job and remove the job to production", () => { + const tomorrow = moment(new Date()).format("YYYY-MM-DD"); - it("completes delivery and updates the status", () => { - // Go to a job in production - cy.get(".ant-table-row") - .contains("Arrived") - .first() - .siblings() - .find("a") - .first() - .click(); - // Click the actions button cy.get('[data-cy="job-actions-button"]').click(); - // Go to checklists + // Go to deliver cy.get('[data-cy="job-deliver"]').should("not.be.disabled").click(); - // Check if the checklist renders in the page - cy.get('[data-cy="checklist-form"]') - .should("be.visible") - .find("input") - .should("not.be.disabled"); + cy.url().should("include", "/deliver"); + // Fill out the form + cy.get('[data-cy="checklist-form"]').should("be.visible"); - cy.get('[data-cy="checklist-item-checkbox"]').each((el) => { - cy.wrap(el).check().as("checkbox"); - cy.get("@checkbox").should("be.checked"); + cy.wait("@bodyshop").then(({ response }) => { + const bodyshop = response.body.data.bodyshops[0]; + + // deliverchecklist + const checklists = bodyshop.deliverchecklist.form; + + checklists.forEach((item, index) => { + if (item.type === "text") { + cy.get('[data-cy="config-form-components"] > div') + .eq(index) + .find("input:text") + .type("Random Word"); + } else if (item.type === "textarea") { + cy.get('[data-cy="config-form-components"] > div') + .eq(index) + .find("textarea") + .type("Random Word"); + } else if (item.type === "checkbox") { + cy.get('[data-cy="config-form-components"] > div') + .eq(index) + .find("input:checkbox") + .check(); + } else if (item.type === "slider") { + cy.get('[data-cy="config-form-components"] > div') + .eq(index) + .find(".ant-slider-dot:eq(1)") + .click({ force: true }); + } else if (item.type === "rate") { + cy.get('[data-cy="config-form-components"] > div') + .eq(index) + .find(".ant-rate > li") + .eq(3) + .find("div[role='radio']") + .click({ force: true }); + } + }); }); // Select dates for completion and delivery cy.get("#actual_completion").find(".ant-picker-input").first().click(); - cy.get('[title="2023-06-20"]').should("be.visible").click(); - // Add time selection + cy.get(`[title="${tomorrow}"]`).should("be.visible").click(); cy.get("#actual_delivery").find(".ant-picker-input").first().click(); - cy.get('[title="2023-06-20"]') + cy.get(`[title="${tomorrow}"]`) .should("be.visible") .click({ multiple: true, force: true }); - // Add time selection cy.get('[data-cy="remove-from-production"]').should( "have.attr", "aria-checked", "true" ); + // Submit the form cy.get('[data-cy="checklist-submit-button"]').click(); + // Job checklist completed. cy.url().should("include", "/manage/jobs"); cy.contains("Delivered"); + }); + it("renders and check the checklists correctly", () => { + // Click the actions button cy.get('[data-cy="job-actions-button"]').click(); // Go to checklists cy.get('[data-cy="job-checklist"]').should("not.be.disabled").click(); - cy.get('[data-cy="intake-checklist"]') - .should("be.visible") - .find("input") - .should("be.disabled"); + cy.wait("@bodyshop").then(({ response }) => { + const bodyshop = response.body.data.bodyshops[0]; - cy.get('[data-cy="deliver-checklist"]') - .should("be.visible") - .find("input") - .should("be.disabled"); + // intakechecklist + const intakechecklist = bodyshop.intakechecklist.form; + // deliverchecklist + const deliverchecklist = bodyshop.deliverchecklist.form; + + const checklists = [...intakechecklist, ...deliverchecklist]; + + cy.get('[data-cy="intake-checklist"]') + .should("be.visible") + .find("input") + .should("be.disabled"); + + cy.get('[data-cy="deliver-checklist"]') + .should("be.visible") + .find("input") + .should("be.disabled"); + + checklists.forEach((item, index) => { + if (item.type === "text") { + cy.get('[data-cy="config-form-components"] > div') + .eq(index) + .find("input:text") + .should("have.value", "Random Word"); + } else if (item.type === "textarea") { + cy.get('[data-cy="config-form-components"] > div') + .eq(index) + .find("textarea") + .should("have.value", "Random Word"); + } else if (item.type === "checkbox") { + cy.get('[data-cy="config-form-components"] > div') + .eq(index) + .find("input:checkbox") + .should("be.checked"); + } else if (item.type === "slider") { + cy.get('[data-cy="config-form-components"] > div') + .eq(index) + .find(".ant-slider-handle") + .should("have.attr", "aria-valuenow", item.max / 2); + } else if (item.type === "rate") { + cy.get('[data-cy="config-form-components"] > div') + .eq(index) + .find(".ant-rate > .ant-rate-star-full") + .should("have.length", 3); + } + }); + }); }); - - // it("speedprint the checklists", () => { - // // FIXME print button is not working - // // Go to a job in production - // // Click the actions button - // // Go to checklists - // // Print all the necessary documents for the job - // }); } ); diff --git a/client/cypress/downloads/jobs/job-1.json b/client/cypress/fixtures/jobs/job-1.json similarity index 100% rename from client/cypress/downloads/jobs/job-1.json rename to client/cypress/fixtures/jobs/job-1.json diff --git a/client/cypress/downloads/jobs/job-2.json b/client/cypress/fixtures/jobs/job-2.json similarity index 100% rename from client/cypress/downloads/jobs/job-2.json rename to client/cypress/fixtures/jobs/job-2.json diff --git a/client/cypress/downloads/jobs/job.json b/client/cypress/fixtures/jobs/job.json similarity index 100% rename from client/cypress/downloads/jobs/job.json rename to client/cypress/fixtures/jobs/job.json