99 lines
No EOL
2.6 KiB
JavaScript
99 lines
No EOL
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");
|
|
}
|
|
});
|
|
|
|
});
|
|
}); |