2021-09-27 10:04:21 +00:00
|
|
|
import { LEFT_MENU_SELECTORS } from "../../elements/account/left-menu/left-menu-selectors";
|
|
|
|
import { SHARED_ELEMENTS } from "../../elements/shared/sharedElements";
|
|
|
|
import { urlList } from "../../fixtures/urlList";
|
2021-03-26 09:33:35 +00:00
|
|
|
|
|
|
|
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);
|
2021-09-10 08:59:46 +00:00
|
|
|
expect(isSelectorPermitted, `${selector} selector should be in permitted`)
|
|
|
|
.to.be.true;
|
2021-03-26 09:33:35 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
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);
|
|
|
|
}
|