186 lines
6.4 KiB
JavaScript
186 lines
6.4 KiB
JavaScript
context("Grid", () => {
|
|
beforeEach(() => {
|
|
cy.login();
|
|
cy.visit("/desk/website");
|
|
});
|
|
before(() => {
|
|
cy.login();
|
|
cy.visit("/desk/website");
|
|
return cy
|
|
.window()
|
|
.its("frappe")
|
|
.then((frappe) => {
|
|
return frappe.call(
|
|
"frappe.tests.ui_test_helpers.create_contact_phone_nos_records"
|
|
);
|
|
});
|
|
});
|
|
it("update docfield property using update_docfield_property", () => {
|
|
cy.visit("/desk/contact/Test Contact");
|
|
cy.window()
|
|
.its("cur_frm")
|
|
.then((frm) => {
|
|
cy.get('.frappe-control[data-fieldname="phone_nos"]').as("table");
|
|
let field = frm.get_field("phone_nos");
|
|
field.grid.update_docfield_property("is_primary_phone", "hidden", true);
|
|
|
|
cy.get("@table").find('[data-idx="1"] .btn-open-row').click();
|
|
cy.get(".grid-row-open").as("table-form");
|
|
cy.get("@table-form")
|
|
.find('.frappe-control[data-fieldname="is_primary_phone"]')
|
|
.should("be.hidden");
|
|
cy.get("@table-form").find(".grid-footer-toolbar").click();
|
|
|
|
cy.get("@table").find('[data-idx="2"] .btn-open-row').click();
|
|
cy.get(".grid-row-open").as("table-form");
|
|
cy.get("@table-form")
|
|
.find('.frappe-control[data-fieldname="is_primary_phone"]')
|
|
.should("be.hidden");
|
|
cy.get("@table-form").find(".grid-footer-toolbar").click();
|
|
});
|
|
});
|
|
it("update docfield property using toggle_display", () => {
|
|
cy.visit("/desk/contact/Test Contact");
|
|
cy.window()
|
|
.its("cur_frm")
|
|
.then((frm) => {
|
|
cy.get('.frappe-control[data-fieldname="phone_nos"]').as("table");
|
|
let field = frm.get_field("phone_nos");
|
|
field.grid.toggle_display("is_primary_mobile_no", false);
|
|
|
|
cy.get("@table").find('[data-idx="1"] .btn-open-row').click();
|
|
cy.get(".grid-row-open").as("table-form");
|
|
cy.get("@table-form")
|
|
.find('.frappe-control[data-fieldname="is_primary_mobile_no"]')
|
|
.should("be.hidden");
|
|
cy.get("@table-form").find(".grid-footer-toolbar").click();
|
|
|
|
cy.get("@table").find('[data-idx="2"] .btn-open-row').click();
|
|
cy.get(".grid-row-open").as("table-form");
|
|
cy.get("@table-form")
|
|
.find('.frappe-control[data-fieldname="is_primary_mobile_no"]')
|
|
.should("be.hidden");
|
|
cy.get("@table-form").find(".grid-footer-toolbar").click();
|
|
});
|
|
});
|
|
it("update docfield property using toggle_enable", () => {
|
|
cy.visit("/desk/contact/Test Contact");
|
|
cy.window()
|
|
.its("cur_frm")
|
|
.then((frm) => {
|
|
cy.get('.frappe-control[data-fieldname="phone_nos"]').as("table");
|
|
let field = frm.get_field("phone_nos");
|
|
field.grid.toggle_enable("phone", false);
|
|
|
|
cy.get("@table").find('[data-idx="1"] .btn-open-row').click();
|
|
cy.get(".grid-row-open").as("table-form");
|
|
cy.get("@table-form")
|
|
.find('.frappe-control[data-fieldname="phone"] .control-value')
|
|
.should("have.class", "like-disabled-input");
|
|
cy.get("@table-form").find(".grid-footer-toolbar").click();
|
|
|
|
cy.get("@table").find('[data-idx="2"] .btn-open-row').click();
|
|
cy.get(".grid-row-open").as("table-form");
|
|
cy.get("@table-form")
|
|
.find('.frappe-control[data-fieldname="phone"] .control-value')
|
|
.should("have.class", "like-disabled-input");
|
|
cy.get("@table-form").find(".grid-footer-toolbar").click();
|
|
});
|
|
});
|
|
it("update docfield property using toggle_reqd", () => {
|
|
cy.visit("/desk/contact/Test Contact");
|
|
cy.window()
|
|
.its("cur_frm")
|
|
.then((frm) => {
|
|
cy.get('.frappe-control[data-fieldname="phone_nos"]').as("table");
|
|
let field = frm.get_field("phone_nos");
|
|
field.grid.toggle_reqd("phone", false);
|
|
|
|
cy.get("@table").find('[data-idx="1"] .btn-open-row').click();
|
|
cy.get(".grid-row-open").as("table-form");
|
|
cy.get_field("phone").as("phone-field");
|
|
cy.get("@phone-field").focus().clear().wait(500).blur();
|
|
cy.get("@phone-field").should("not.have.class", "has-error");
|
|
cy.get("@table-form").find(".grid-footer-toolbar").click();
|
|
|
|
cy.get("@table").find('[data-idx="2"] .btn-open-row').click();
|
|
cy.get(".grid-row-open").as("table-form");
|
|
cy.get_field("phone").as("phone-field");
|
|
cy.get("@phone-field").focus().clear().wait(500).blur();
|
|
cy.get("@phone-field").should("not.have.class", "has-error");
|
|
cy.get("@table-form").find(".grid-footer-toolbar").click();
|
|
});
|
|
});
|
|
|
|
it("shows edit button only when child table allow_bulk_edit is enabled", () => {
|
|
cy.visit("/desk/contact/Test Contact");
|
|
cy.get('.frappe-control[data-fieldname="phone_nos"]').as("table");
|
|
|
|
cy.window()
|
|
.its("cur_frm")
|
|
.then((frm) => {
|
|
const grid = frm.get_field("phone_nos").grid;
|
|
grid.meta.allow_bulk_edit = false;
|
|
grid.refresh_edit_rows_button();
|
|
});
|
|
|
|
cy.get("@table").find('.grid-row[data-idx="1"] .grid-row-check').click({ force: true });
|
|
cy.get("@table").find(".grid-edit-rows").should("have.class", "hidden");
|
|
|
|
cy.window()
|
|
.its("cur_frm")
|
|
.then((frm) => {
|
|
const grid = frm.get_field("phone_nos").grid;
|
|
grid.meta.allow_bulk_edit = true;
|
|
grid.refresh_edit_rows_button();
|
|
});
|
|
|
|
cy.get("@table").find(".grid-edit-rows").should("not.have.class", "hidden");
|
|
});
|
|
|
|
it("bulk edit updates only selected child rows", () => {
|
|
const updated_phone = `99999${Date.now().toString().slice(-5)}`;
|
|
|
|
cy.visit("/desk/contact/Test Contact");
|
|
cy.get('.frappe-control[data-fieldname="phone_nos"]').as("table");
|
|
|
|
cy.window()
|
|
.its("cur_frm")
|
|
.then((frm) => {
|
|
const grid = frm.get_field("phone_nos").grid;
|
|
grid.meta.allow_bulk_edit = true;
|
|
grid.refresh_edit_rows_button();
|
|
|
|
expect(frm.doc.phone_nos.length).to.be.greaterThan(1);
|
|
const phone_df = grid.docfields.find((df) => df.fieldname === "phone");
|
|
expect(phone_df).to.exist;
|
|
cy.wrap(phone_df.label).as("phoneFieldLabel");
|
|
cy.wrap(frm.doc.phone_nos[1].phone || "").as("secondRowPhoneBefore");
|
|
});
|
|
|
|
cy.get("@table").find('.grid-row[data-idx="1"] .grid-row-check').click({ force: true });
|
|
cy.get("@table").find(".grid-edit-rows").click({ force: true });
|
|
|
|
cy.window()
|
|
.its("cur_dialog")
|
|
.then((dialog) => {
|
|
cy.get("@phoneFieldLabel").then((phoneFieldLabel) => {
|
|
return dialog
|
|
.set_value("field", phoneFieldLabel)
|
|
.then(() => dialog.set_value("value", updated_phone))
|
|
.then(() => {
|
|
dialog.get_primary_btn().click();
|
|
});
|
|
});
|
|
});
|
|
|
|
cy.window().its("cur_frm.doc.phone_nos.0.phone").should("eq", updated_phone);
|
|
cy.window()
|
|
.its("cur_frm")
|
|
.then((frm) => {
|
|
cy.get("@secondRowPhoneBefore").then((secondRowPhoneBefore) => {
|
|
expect(frm.doc.phone_nos[1].phone || "").to.equal(secondRowPhoneBefore);
|
|
});
|
|
});
|
|
});
|
|
});
|