IO-2327 checklists test cases

This commit is contained in:
swtmply
2023-08-02 11:56:03 +08:00
parent d12ff11deb
commit b7366d7fc6
4 changed files with 104 additions and 87 deletions

View File

@@ -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
// });
}
);