saleor-dashboard/cypress/support/pages/pagesPage.js
wojteknowacki bf532939e2
Test navigation refactor (#3294)
* naviagtion aka permissions refactor
2023-03-09 09:18:07 +01:00

95 lines
2.7 KiB
JavaScript

import { PAGE_DETAILS_SELECTORS } from "../../elements/pages/page-details";
import { PAGES_LIST_SELECTORS } from "../../elements/pages/pages-list";
import { BUTTON_SELECTORS } from "../../elements/shared/button-selectors";
import { SHARED_ELEMENTS } from "../../elements/shared/sharedElements";
import { urlList } from "../../fixtures/urlList";
export const attributesTypes = {
DROPDOWN: addSelectAttributeValue,
MULTISELECT: addSelectAttributeValue,
RICH_TEXT: addRichTextAttributeValue,
BOOLEAN: addBooleanAttributeValue,
NUMERIC: addNumericAttributeValue,
};
export function fillUpPageTypeDialog({ pageTypeName }) {
const organization = {};
return cy
.fillAutocompleteSelect(
PAGES_LIST_SELECTORS.dialogPageTypeInput,
pageTypeName,
)
.then(selected => {
organization.pageType = selected;
return organization;
});
}
export function createPage({
pageName,
pageTypeName,
isPublished = false,
attributeType = "DROPDOWN",
attributeValue,
}) {
openCreatePageAndFillUpGeneralFields({ pageName, pageTypeName, isPublished });
attributesTypes[attributeType](attributeValue);
return savePage();
}
export function addSelectAttributeValue(attributeValue) {
cy.fillAutocompleteSelect(
PAGE_DETAILS_SELECTORS.attributeValues,
attributeValue,
);
}
export function addRichTextAttributeValue(attributeValue) {
cy.get(PAGE_DETAILS_SELECTORS.attributeValues)
.find(SHARED_ELEMENTS.richTextEditor.empty)
.should("exist")
.get(PAGE_DETAILS_SELECTORS.attributeValues)
.find(PAGE_DETAILS_SELECTORS.richTextEditorAttributeValue)
.type(attributeValue)
.wait(500);
}
export function addBooleanAttributeValue() {
cy.get(PAGE_DETAILS_SELECTORS.booleanAttributeValueCheckbox).click();
}
export function addNumericAttributeValue(attributeValue) {
cy.get(PAGE_DETAILS_SELECTORS.numericAttributeValueInput).type(
attributeValue,
);
}
function openCreatePageAndFillUpGeneralFields({
pageName,
pageTypeName,
isPublished,
}) {
cy.visit(urlList.pages).get(PAGES_LIST_SELECTORS.createPageButton).click();
fillUpPageTypeDialog({ pageTypeName });
cy.get(BUTTON_SELECTORS.submit)
.click()
.get(PAGE_DETAILS_SELECTORS.nameInput)
.type(pageName);
if (!isPublished) {
cy.get(PAGE_DETAILS_SELECTORS.isNotPublishedCheckbox).click();
}
cy.fillAutocompleteSelect(
PAGE_DETAILS_SELECTORS.pageTypesAutocompleteSelect,
pageTypeName,
);
}
function savePage() {
return cy
.addAliasToGraphRequest("PageCreate")
.get(BUTTON_SELECTORS.confirm)
.click()
.confirmationMessageShouldDisappear()
.waitForRequestAndCheckIfNoErrors("@PageCreate")
.its("response.body.data.pageCreate.page");
}