76 lines
2.2 KiB
JavaScript
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).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);
|
||
|
}
|