From 7ae48db212cdd5aa685e9832cbfd78a76c4a80ed Mon Sep 17 00:00:00 2001 From: swtmply Date: Tue, 20 Jun 2023 09:12:36 +0800 Subject: [PATCH] IO-2327 Intake checklist tests --- .../cypress/e2e/intake/intake-checklist.cy.js | 161 ++++++++++++++++++ .../checkbox/checkbox.component.jsx | 2 +- .../job-checklist-form.component.jsx | 16 +- .../jobs-detail-header-actions.component.jsx | 7 +- .../jobs-checklist-view.page.jsx | 8 +- 5 files changed, 183 insertions(+), 11 deletions(-) create mode 100644 client/cypress/e2e/intake/intake-checklist.cy.js diff --git a/client/cypress/e2e/intake/intake-checklist.cy.js b/client/cypress/e2e/intake/intake-checklist.cy.js new file mode 100644 index 000000000..426d44d29 --- /dev/null +++ b/client/cypress/e2e/intake/intake-checklist.cy.js @@ -0,0 +1,161 @@ +describe( + "Adding job to checklist", + { + defaultCommandTimeout: 5000, + }, + () => { + beforeEach(() => { + cy.visit("/manage"); + + cy.get("body").then(($body) => { + if ($body.text().includes("Login")) { + // Log in + cy.get('[data-cy="username"]').type("john@imex.dev"); + cy.get('[data-cy="password"]').type("john123"); + cy.get('[data-cy="sign-in-button"]').click(); + } + + cy.get(".ant-table-tbody") + .should("be.visible") + .find("tr") + .should("not.have.class", "ant-table-placeholder"); + }); + }); + + 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", + "aria-checked", + "true" + ); + // 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(); + // Add time selection + cy.get("#scheduled_delivery").find(".ant-picker-input").first().click(); + cy.get('[title="2023-06-20"]') + .should("be.visible") + .click({ multiple: true, force: true }); + // Add time selection + // Add note + cy.get('[data-cy="checklist-production-note"]').type("automated testing"); + // 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("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 + 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.get('[data-cy="checklist-item-checkbox"]').each((el) => { + cy.wrap(el).check().as("checkbox"); + cy.get("@checkbox").should("be.checked"); + }); + + // 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("#actual_delivery").find(".ant-picker-input").first().click(); + cy.get('[title="2023-06-20"]') + .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"); + + 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.get('[data-cy="deliver-checklist"]') + .should("be.visible") + .find("input") + .should("be.disabled"); + }); + + // 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/src/components/config-form-components/checkbox/checkbox.component.jsx b/client/src/components/config-form-components/checkbox/checkbox.component.jsx index cfc8896c3..11be2741a 100644 --- a/client/src/components/config-form-components/checkbox/checkbox.component.jsx +++ b/client/src/components/config-form-components/checkbox/checkbox.component.jsx @@ -16,7 +16,7 @@ export default function JobIntakeFormCheckboxComponent({ formItem, readOnly }) { }, ]} > - + ); } diff --git a/client/src/components/job-checklist/components/job-checklist-form/job-checklist-form.component.jsx b/client/src/components/job-checklist/components/job-checklist-form/job-checklist-form.component.jsx index 956cb4761..3f40c2acf 100644 --- a/client/src/components/job-checklist/components/job-checklist-form/job-checklist-form.component.jsx +++ b/client/src/components/job-checklist/components/job-checklist-form/job-checklist-form.component.jsx @@ -199,6 +199,7 @@ export function JobChecklistForm({ extra={ !readOnly && (