IO-2327 posting bills test caes
This commit is contained in:
194
client/cypress/e2e/posting-bills/posting-bills.cy.js
Normal file
194
client/cypress/e2e/posting-bills/posting-bills.cy.js
Normal file
@@ -0,0 +1,194 @@
|
||||
import uniqueId from "lodash/uniqueId";
|
||||
|
||||
describe(
|
||||
"Billing job parts orders",
|
||||
{
|
||||
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");
|
||||
|
||||
cy.get(".ant-table-row")
|
||||
.not(':contains("Open")')
|
||||
.first()
|
||||
.find("a")
|
||||
.first()
|
||||
.click();
|
||||
|
||||
cy.url().should("include", "/manage/jobs");
|
||||
|
||||
// Go to repair data tab
|
||||
cy.get('[data-cy="tab-partssublet"]').should("be.visible").click();
|
||||
});
|
||||
});
|
||||
|
||||
it("receives a part bill", () => {
|
||||
// Find the first row in the parts order
|
||||
cy.get('[data-cy="part-orders-table"]')
|
||||
.find(".ant-table-tbody")
|
||||
.find("> tr:not(.ant-table-measure-row)")
|
||||
.as("orders-table")
|
||||
.should("not.have.class", "ant-table-placeholder");
|
||||
|
||||
cy.get("@orders-table")
|
||||
.first()
|
||||
.should("be.visible")
|
||||
.find('[data-cy="receive-bill-button"]')
|
||||
.click();
|
||||
|
||||
// fill out form
|
||||
// data-cy="bill-form-invoice"
|
||||
cy.get('[data-cy="bill-form-invoice"]').type(uniqueId());
|
||||
|
||||
cy.get("#bill-form-date").click();
|
||||
cy.get('[title="2023-06-22"]').should("be.visible").click();
|
||||
|
||||
// get table
|
||||
cy.get('[data-cy="bill-line-table"]').each(($row) => {
|
||||
// get retail amount
|
||||
cy.wrap($row)
|
||||
.find('[data-cy="bill-line-actual-price"]')
|
||||
.invoke("val")
|
||||
.then((p) => {
|
||||
const vendorPercentOff = 0.2;
|
||||
|
||||
// get cost - vendor's percent off
|
||||
const cost = p - p * vendorPercentOff;
|
||||
cy.get('[data-cy="bill-form-bill-total"]').type(p);
|
||||
|
||||
cy.wrap($row).find('[data-cy="bill-line-actual-cost"]').type(cost);
|
||||
});
|
||||
});
|
||||
|
||||
// Click save
|
||||
cy.get('[data-cy="bill-form-save-button"]')
|
||||
.should("not.be.disabled")
|
||||
.click();
|
||||
|
||||
cy.get(".ant-notification-notice-message").contains(
|
||||
"Invoice added successfully."
|
||||
);
|
||||
});
|
||||
|
||||
it("posts bill directly", () => {
|
||||
cy.get('[data-cy="bills-post-button"]').should("be.visible").click();
|
||||
|
||||
// Add New Line
|
||||
cy.get('[data-cy="bill-line-add-button"]')
|
||||
.should("not.be.disabled")
|
||||
.click();
|
||||
// Select Vendor
|
||||
cy.antdSelect("bill-vendor");
|
||||
// Select Line
|
||||
cy.antdSelect("bill-line", "-- Not On Estimate --");
|
||||
// Fill the Form
|
||||
cy.get('[data-cy="bill-form-invoice"]').type(uniqueId("DBP"));
|
||||
|
||||
cy.get("#bill-form-date").click();
|
||||
cy.get('[title="2023-06-22"]').should("be.visible").click();
|
||||
|
||||
// get table
|
||||
cy.get('[data-cy="bill-line-table"]').each(($row) => {
|
||||
// get retail amount
|
||||
cy.wrap($row)
|
||||
.find('[data-cy="bill-line-actual-price"]')
|
||||
.invoke("val")
|
||||
.then((p) => {
|
||||
const vendorPercentOff = 0.2;
|
||||
|
||||
// get cost - vendor's percent off
|
||||
const cost = p - p * vendorPercentOff;
|
||||
cy.get('[data-cy="bill-form-bill-total"]').type(p);
|
||||
|
||||
cy.wrap($row).find('[data-cy="bill-line-actual-cost"]').type(cost);
|
||||
});
|
||||
});
|
||||
|
||||
// Click save
|
||||
cy.get('[data-cy="bill-form-save-button"]')
|
||||
.should("not.be.disabled")
|
||||
.click();
|
||||
|
||||
cy.get(".ant-notification-notice-message").contains(
|
||||
"Invoice added successfully."
|
||||
);
|
||||
});
|
||||
|
||||
it("posts a bill with save and new", () => {
|
||||
cy.get('[data-cy="bills-post-button"]').should("be.visible").click();
|
||||
|
||||
// Add New Line
|
||||
cy.get('[data-cy="bill-line-add-button"]')
|
||||
.should("not.be.disabled")
|
||||
.click();
|
||||
// Select Vendor
|
||||
cy.antdSelect("bill-vendor");
|
||||
// Select Line
|
||||
cy.antdSelect("bill-line", "-- Not On Estimate --");
|
||||
// Fill the Form
|
||||
cy.get('[data-cy="bill-form-invoice"]').type(uniqueId("DBP"));
|
||||
|
||||
cy.get("#bill-form-date").click();
|
||||
cy.get('[title="2023-06-22"]').should("be.visible").click();
|
||||
|
||||
// get table
|
||||
cy.get('[data-cy="bill-line-table"]').each(($row) => {
|
||||
// get retail amount
|
||||
cy.wrap($row)
|
||||
.find('[data-cy="bill-line-actual-price"]')
|
||||
.invoke("val")
|
||||
.then((p) => {
|
||||
const vendorPercentOff = 0.2;
|
||||
|
||||
// get cost - vendor's percent off
|
||||
const cost = p - p * vendorPercentOff;
|
||||
cy.get('[data-cy="bill-form-bill-total"]').type(p);
|
||||
|
||||
cy.wrap($row).find('[data-cy="bill-line-actual-cost"]').type(cost);
|
||||
});
|
||||
});
|
||||
|
||||
// Click save
|
||||
cy.get('[data-cy="bill-form-savenew-button"]')
|
||||
.should("not.be.disabled")
|
||||
.click();
|
||||
|
||||
cy.get(".ant-notification-notice-message").contains(
|
||||
"Invoice added successfully."
|
||||
);
|
||||
});
|
||||
|
||||
it("uploads a document to a bill", () => {
|
||||
cy.get('[data-cy="bills-table"]')
|
||||
.find(".ant-table-tbody")
|
||||
.find("> tr:not(.ant-table-measure-row)")
|
||||
.as("bills-table")
|
||||
.should("not.have.class", "ant-table-placeholder");
|
||||
|
||||
cy.get("@bills-table")
|
||||
.first()
|
||||
.should("be.visible")
|
||||
.find('[data-cy="edit-bill-button"]')
|
||||
.click();
|
||||
|
||||
cy.location("search").should("include", "billid");
|
||||
cy.get('[data-cy="bill-edit-form"]')
|
||||
.find(".ant-upload #bill-document-upload")
|
||||
.selectFile("job.json", { force: true });
|
||||
});
|
||||
}
|
||||
);
|
||||
@@ -50,7 +50,7 @@ Cypress.on("uncaught:exception", (err, runnable) => {
|
||||
return false;
|
||||
});
|
||||
|
||||
Cypress.Commands.add("antdSelect", (selector) => {
|
||||
Cypress.Commands.add("antdSelect", (selector, filter) => {
|
||||
cy.get(`.ant-select-${selector} > .ant-select-selector`).click();
|
||||
cy.get(`.ant-select-${selector} .ant-select-selection-search input`)
|
||||
.invoke("attr", "id")
|
||||
@@ -59,6 +59,7 @@ Cypress.Commands.add("antdSelect", (selector) => {
|
||||
cy.get(dropDownSelector)
|
||||
.next()
|
||||
.find(".ant-select-item-option-content")
|
||||
.not(`:contains("${filter}")`)
|
||||
.first()
|
||||
.click();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user