saleor-dashboard/cypress/steps/permissions.js
Karolina Rakoczy e7a06281f1
fix failing tests (#1302)
* fix failing tests

* no retries

* add waiting for confirmation msg

* remove unused import

* fix test for staff

* fix test for staff

* fix tests for orders

* fix tests for channels

* fix autocomplete

* fix filters

* fix filters

* fix create shipping method
2021-09-10 10:59:46 +02:00

76 lines
2.2 KiB
JavaScript

import { LEFT_MENU_SELECTORS } from "../elements/account/left-menu/left-menu-selectors";
import { SHARED_ELEMENTS } from "../elements/shared/sharedElements";
import { urlList } from "../url/urlList";
export function navigateToAllAvailablePageAndCheckIfDisplayed({
user,
permissions
}) {
cy.loginUserViaRequest("auth", user);
cy.visit(urlList.homePage);
if (!permissions) {
return;
}
return permissions.forEach(permission =>
permission.permissionSelectors.forEach(permissionSelector => {
navigateToAvailablePageAndCheckIfDisplayed(
permission.parent,
permissionSelector
);
})
);
}
function navigateToAvailablePageAndCheckIfDisplayed(
parent,
permissionSelector
) {
if (parent) {
cy.get(parent.parentMenuSelector).click();
}
return cy
.get(permissionSelector)
.click()
.then(() => {
isElementDisplayed();
})
.then(isDisplayed => {
expect(isDisplayed).to.be.true;
});
}
export function isElementDisplayed(element = SHARED_ELEMENTS.header) {
return cy.get("body").then(body => body.find(element).length > 0);
}
export function getDisplayedSelectors(selectors = LEFT_MENU_SELECTORS) {
const displayedSelectors = {};
cy.wrap(displayedSelectors).as("displayedSelectors");
Object.values(selectors).forEach((value, i) =>
isElementDisplayed(value).then(isDisplayed => {
if (isDisplayed) {
cy.wrap(value);
displayedSelectors["link" + i] = value;
cy.wrap(displayedSelectors).as("displayedSelectors");
}
})
);
return cy.get("@displayedSelectors");
}
export function expectAllSelectorsPermitted(permissions, selectors) {
Object.values(selectors).forEach(selector => {
const isSelectorPermitted = isPermitted(permissions, selector);
expect(isSelectorPermitted, `${selector} selector should be in permitted`)
.to.be.true;
});
}
function isPermitted(permissions, selector) {
let permittedSelectors = [LEFT_MENU_SELECTORS.home];
permissions.forEach(permission => {
if (permission.parent) {
permittedSelectors.push(permission.parent.parentMenuSelector);
}
permittedSelectors = permittedSelectors.concat(
permission.permissionSelectors
);
});
return permittedSelectors.includes(selector);
}