69 lines
2.2 KiB
JavaScript
69 lines
2.2 KiB
JavaScript
import { BUTTON_SELECTORS } from "../../../elements/shared/button-selectors";
|
|
import { SHARED_ELEMENTS } from "../../../elements/shared/sharedElements";
|
|
|
|
Cypress.Commands.add("searchInTable", query => {
|
|
cy.get(SHARED_ELEMENTS.searchInput)
|
|
.type(query)
|
|
.get(SHARED_ELEMENTS.progressBar)
|
|
.should("be.visible")
|
|
.waitForProgressBarToNotExist();
|
|
});
|
|
|
|
// This command is searching for element/s on table, and then make an action on this element/s (select checkbox, or click)
|
|
// Before this command execute cy.addAliasToGraphRequest(), same alias pass as elementsGraphqlAlias parameter
|
|
// elementsName is for example "shippingZones", pass elements ids in array, or single element id in elementsIds
|
|
// action function is click or select checkbox on table with parameter id
|
|
Cypress.Commands.add(
|
|
"findElementsAndMakeActionOnTable",
|
|
({
|
|
elementsGraphqlAlias,
|
|
elementsName,
|
|
elementsIds,
|
|
counter = 0,
|
|
actionFunction
|
|
}) => {
|
|
cy.wait(`@${elementsGraphqlAlias}`)
|
|
.its("response.body")
|
|
.then(body => {
|
|
let shippingResults;
|
|
if (Array.isArray(body)) {
|
|
shippingResults = body.find(element => {
|
|
if (element.data[elementsName]) {
|
|
return element;
|
|
}
|
|
});
|
|
} else {
|
|
shippingResults = body;
|
|
}
|
|
const shippingList = shippingResults.data[elementsName].edges;
|
|
const notSelectedElements = [];
|
|
elementsIds = Array.isArray(elementsIds) ? elementsIds : [elementsIds];
|
|
elementsIds.forEach(id => {
|
|
const isShippingOnList = shippingList.find(
|
|
element => element.node.id === id
|
|
);
|
|
if (isShippingOnList) {
|
|
actionFunction(id);
|
|
counter += 1;
|
|
} else {
|
|
notSelectedElements.push(id);
|
|
}
|
|
if (counter === elementsIds.length) {
|
|
return;
|
|
}
|
|
});
|
|
if (counter === elementsIds.length) {
|
|
return;
|
|
}
|
|
cy.get(BUTTON_SELECTORS.nextPaginationButton)
|
|
.click()
|
|
.findElementsAndMakeActionOnTable({
|
|
elementsIds: notSelectedElements,
|
|
actionFunction,
|
|
counter,
|
|
elementsGraphqlAlias,
|
|
elementsName
|
|
});
|
|
});
|
|
}
|
|
);
|