|
- 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("xhiveframework")
- .then((xhiveframework) => {
- new xhiveframework.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(`.xhiveframework-control[data-fieldname="${fieldname}"]`)
- .should("exist");
- });
-
- // add_filters_group: 1 should add a filter group
- cy.get_open_dialog().get(`.xhiveframework-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(`.xhiveframework-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(`.xhiveframework-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(`.xhiveframework-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/xhiveframework.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");
- }
- });
- });
- });
|