mirror of
https://github.com/frappe/frappe.git
synced 2024-06-13 09:52:20 +00:00
103 lines
2.6 KiB
JavaScript
103 lines
2.6 KiB
JavaScript
context("MultiSelectDialog", () => {
|
|
before(() => {
|
|
cy.login();
|
|
cy.visit("/app");
|
|
const contact_template = {
|
|
doctype: "Contact",
|
|
first_name: "Test",
|
|
status: "Passive",
|
|
email_ids: [
|
|
{
|
|
doctype: "Contact Email",
|
|
email_id: "test@example.com",
|
|
is_primary: 0,
|
|
},
|
|
],
|
|
};
|
|
const promises = Array.from({ length: 25 }).map(() =>
|
|
cy.insert_doc("Contact", contact_template, true)
|
|
);
|
|
Promise.all(promises);
|
|
});
|
|
|
|
function open_multi_select_dialog() {
|
|
cy.window()
|
|
.its("frappe")
|
|
.then((frappe) => {
|
|
new frappe.ui.form.MultiSelectDialog({
|
|
doctype: "Contact",
|
|
target: {},
|
|
setters: {
|
|
status: null,
|
|
gender: null,
|
|
},
|
|
add_filters_group: 1,
|
|
allow_child_item_selection: 1,
|
|
child_fieldname: "email_ids",
|
|
child_columns: ["email_id", "is_primary"],
|
|
});
|
|
});
|
|
}
|
|
|
|
it("checks multi select dialog api works", () => {
|
|
open_multi_select_dialog();
|
|
cy.get_open_dialog().should("contain", "Select Contacts");
|
|
});
|
|
|
|
it("checks for filters", () => {
|
|
["search_term", "status", "gender"].forEach((fieldname) => {
|
|
cy.get_open_dialog()
|
|
.get(`.frappe-control[data-fieldname="${fieldname}"]`)
|
|
.should("exist");
|
|
});
|
|
|
|
// add_filters_group: 1 should add a filter group
|
|
cy.get_open_dialog().get(`.frappe-control[data-fieldname="filter_area"]`).should("exist");
|
|
});
|
|
|
|
it("checks for child item selection", () => {
|
|
cy.get_open_dialog().get(`.dt-row-header`).should("not.exist");
|
|
|
|
cy.get_open_dialog()
|
|
.get(`.frappe-control[data-fieldname="allow_child_item_selection"]`)
|
|
.find('input[data-fieldname="allow_child_item_selection"]')
|
|
.should("exist")
|
|
.click({ force: true });
|
|
|
|
cy.get_open_dialog()
|
|
.get(`.frappe-control[data-fieldname="child_selection_area"]`)
|
|
.should("exist");
|
|
|
|
cy.get_open_dialog().get(`.dt-row-header`).should("contain", "Contact");
|
|
|
|
cy.get_open_dialog().get(`.dt-row-header`).should("contain", "Email Id");
|
|
|
|
cy.get_open_dialog().get(`.dt-row-header`).should("contain", "Is Primary");
|
|
});
|
|
|
|
it("tests more button", () => {
|
|
cy.get_open_dialog()
|
|
.get(`.frappe-control[data-fieldname="more_child_btn"]`)
|
|
.should("exist")
|
|
.as("more-btn");
|
|
|
|
cy.get_open_dialog()
|
|
.get(".datatable .dt-scrollable .dt-row")
|
|
.should(($rows) => {
|
|
expect($rows).to.have.length(20);
|
|
});
|
|
|
|
cy.intercept("POST", "api/method/frappe.client.get_list").as("get-more-records");
|
|
cy.get("@more-btn").find("button").click({ force: true });
|
|
cy.wait("@get-more-records");
|
|
|
|
cy.get_open_dialog()
|
|
.get(".datatable .dt-scrollable .dt-row")
|
|
.should(($rows) => {
|
|
if ($rows.length <= 20) {
|
|
throw new Error("More button doesn't work");
|
|
}
|
|
});
|
|
});
|
|
});
|