saleor-dashboard/cypress/support/pages/channelsPage.js

169 lines
5 KiB
JavaScript
Raw Normal View History

import { ADD_CHANNEL_FORM_SELECTORS } from "../../elements/channels/add-channel-form-selectors";
import { AVAILABLE_CHANNELS_FORM } from "../../elements/channels/available-channels-form";
import { CHANNEL_FORM_SELECTORS } from "../../elements/channels/channel-form-selectors";
import { CHANNELS_SELECTORS } from "../../elements/channels/channels-selectors";
import { SELECT_CHANNELS_TO_ASSIGN } from "../../elements/channels/select-channels-to-assign";
import { HEADER_SELECTORS } from "../../elements/header/header-selectors";
import { BUTTON_SELECTORS } from "../../elements/shared/button-selectors";
import { SHARED_ELEMENTS } from "../../elements/shared/sharedElements";
import { urlList } from "../../fixtures/urlList";
export function createChannelByView({
name,
currency,
slug = name,
shippingZone,
defaultCountry = "Poland",
warehouse,
}) {
setChannelRequiredFields({
name,
currency,
slug,
shippingZone,
defaultCountry,
warehouse,
});
cy.get(ADD_CHANNEL_FORM_SELECTORS.saveButton).click();
}
export function setChannelRequiredFields({
name,
currency,
slug = name,
shippingZone,
defaultCountry = "Poland",
warehouse,
}) {
cy.addAliasToGraphRequest("Channel");
clickCreateChannelButton();
cy.get(ADD_CHANNEL_FORM_SELECTORS.channelName)
.click({ force: true })
.type(name, { force: true })
.get(ADD_CHANNEL_FORM_SELECTORS.slug)
.click({ force: true })
.type(slug, { force: true })
.get(ADD_CHANNEL_FORM_SELECTORS.currency)
.find("input")
.should("be.enabled")
.click();
cy.get(ADD_CHANNEL_FORM_SELECTORS.currency).type(currency);
cy.get("body").then($body => {
if ($body.find(currency).length) {
cy.contains(ADD_CHANNEL_FORM_SELECTORS.currencyOptions, currency).click();
} else {
cy.get(ADD_CHANNEL_FORM_SELECTORS.currencyAutocompleteDropdown).click();
}
});
cy.fillAutocompleteSelect(
ADD_CHANNEL_FORM_SELECTORS.countryAutocompleteInput,
defaultCountry,
);
if (shippingZone) {
addShippingZone(shippingZone);
}
if (warehouse) {
addWarehouse(warehouse);
}
}
export function addShippingZone(shippingZone) {
cy.get(BUTTON_SELECTORS.expandIcon)
.first()
.click()
.get(ADD_CHANNEL_FORM_SELECTORS.addShippingZoneButton)
.click()
.fillAutocompleteSelect(
ADD_CHANNEL_FORM_SELECTORS.shippingAutocompleteSelect,
shippingZone,
);
}
export function typeExpirationDays(expirationDays) {
cy.get(CHANNELS_SELECTORS.orderExpirationInput)
.click({ force: true })
.clear()
.type(expirationDays);
}
export function clickCreateChannelButton() {
return cy.get(CHANNELS_SELECTORS.createChannelButton).click();
}
export function addWarehouse(warehouse) {
cy.get(BUTTON_SELECTORS.expandIcon)
.last()
.click()
.get(ADD_CHANNEL_FORM_SELECTORS.addWarehouseButton)
.click()
.fillAutocompleteSelect(
ADD_CHANNEL_FORM_SELECTORS.warehouseAutocompleteSelect,
warehouse,
);
}
export function selectChannelInPicker(channelName) {
cy.get(CHANNEL_FORM_SELECTORS.channelSelect).click();
cy.contains(CHANNEL_FORM_SELECTORS.channelOption, channelName)
.click()
.get(CHANNEL_FORM_SELECTORS.confirmButton)
.click();
}
export function selectChannelInHeader(channelName) {
2021-07-12 13:35:26 +00:00
cy.get(HEADER_SELECTORS.channelSelect).click();
cy.contains(SHARED_ELEMENTS.selectOption, channelName)
.click({ force: true })
.get(SHARED_ELEMENTS.selectOption)
.should("not.exist");
}
export function selectChannelInDetailsPages(channelName) {
cy.get(AVAILABLE_CHANNELS_FORM.manageChannelsButton)
.click()
.get(SELECT_CHANNELS_TO_ASSIGN.allChannelsCheckbox)
.click();
if (channelName) {
cy.get(SELECT_CHANNELS_TO_ASSIGN.listOfChannels)
.contains(channelName)
.click();
} else {
cy.get(SELECT_CHANNELS_TO_ASSIGN.channelRow)
.first()
.find(SELECT_CHANNELS_TO_ASSIGN.channelCheckbox)
.click();
}
cy.get(SELECT_CHANNELS_TO_ASSIGN.selectChannelsForm)
.find(BUTTON_SELECTORS.submit)
2021-11-03 11:29:59 +00:00
.click({ force: true });
}
export function selectChannelVariantInDetailsPage(channelName, attributeName) {
cy.get(AVAILABLE_CHANNELS_FORM.manageChannelsButton).click();
const channelsNames = Array.isArray(channelName)
? channelName
: [channelName];
channelsNames.forEach(name => {
cy.contains(SELECT_CHANNELS_TO_ASSIGN.expandChannelRow, name)
.find(BUTTON_SELECTORS.expandIcon)
.click();
cy.contains(SELECT_CHANNELS_TO_ASSIGN.expandChannelRow, name)
.contains(SELECT_CHANNELS_TO_ASSIGN.channelVariantRow, attributeName)
.find(BUTTON_SELECTORS.checkbox)
.click();
});
cy.get(SELECT_CHANNELS_TO_ASSIGN.selectChannelsForm)
.find(BUTTON_SELECTORS.submit)
.click({ force: true });
}
export function enterHomePageAndChangeChannel(channelName) {
cy.visit(urlList.homePage);
selectChannelInHeader(channelName);
}
export function enterHomePageChangeChannelAndReturn(channelName) {
cy.url().then(url => {
enterHomePageAndChangeChannel(channelName);
cy.visit(url);
});
}