saleor-dashboard/cypress/support/pages/discounts/vouchersPage.js
2023-08-03 10:51:19 +02:00

118 lines
3.4 KiB
JavaScript

import { VOUCHERS_SELECTORS } from "../../../elements/discounts/vouchers";
import { BUTTON_SELECTORS } from "../../../elements/shared/button-selectors";
import { urlList, voucherDetailsUrl } from "../../../fixtures/urlList";
import { ONE_PERMISSION_USERS } from "../../../fixtures/users";
import { ensureCanvasStatic } from "../../../support/customCommands/sharedElementsOperations/canvas";
import { createCheckoutWithVoucher } from "../../api/utils/ordersUtils";
import { selectChannelInDetailsPages } from "../channelsPage";
export const discountOptions = {
PERCENTAGE: VOUCHERS_SELECTORS.percentageDiscountRadioButton,
FIXED: VOUCHERS_SELECTORS.fixedDiscountRadioButton,
SHIPPING: VOUCHERS_SELECTORS.shippingDiscountRadioButton,
};
export function createVoucher({
voucherCode,
voucherValue,
discountOption,
channelName,
usageLimit,
applyOnePerCustomer,
onlyStaff,
minOrderValue,
minAmountOfItems,
}) {
cy.get(VOUCHERS_SELECTORS.createVoucherButton).click();
selectChannelInDetailsPages(channelName);
cy.get(VOUCHERS_SELECTORS.voucherCodeInput)
.type(voucherCode)
.get(discountOption)
.click();
if (discountOption !== discountOptions.SHIPPING) {
cy.get(VOUCHERS_SELECTORS.discountValueInputs).type(voucherValue, {
force: true,
});
}
if (usageLimit) {
cy.get(VOUCHERS_SELECTORS.limits.usageLimitCheckbox)
.click()
.type(usageLimit);
}
if (applyOnePerCustomer) {
cy.get(VOUCHERS_SELECTORS.limits.applyOncePerCustomerCheckbox).click();
}
if (onlyStaff) {
cy.get(VOUCHERS_SELECTORS.limits.onlyForStaffCheckbox).click();
}
if (minOrderValue) {
cy.get(VOUCHERS_SELECTORS.requirements.minOrderValueCheckbox)
.click()
.get(VOUCHERS_SELECTORS.requirements.minOrderValueInput)
.type(minOrderValue);
}
if (minAmountOfItems) {
cy.get(VOUCHERS_SELECTORS.requirements.minAmountOfItemsCheckbox)
.click()
.get(VOUCHERS_SELECTORS.requirements.minCheckoutItemsQuantityInput)
.type(minAmountOfItems);
}
cy.get(BUTTON_SELECTORS.confirm).click().confirmationMessageShouldAppear();
}
export function setVoucherDate({
voucherId,
startDate,
endDate,
endTime,
hasEndDate = false,
}) {
cy.visit(voucherDetailsUrl(voucherId)).waitForProgressBarToNotBeVisible();
if (startDate) {
cy.get(VOUCHERS_SELECTORS.startDateInput).type(startDate);
}
if (endDate) {
if (hasEndDate) {
cy.get(VOUCHERS_SELECTORS.hasEndDateCheckbox).click();
}
cy.get(VOUCHERS_SELECTORS.endDateInput)
.type(endDate)
.get(VOUCHERS_SELECTORS.endTimeInput)
.type(endTime);
}
cy.addAliasToGraphRequest("VoucherUpdate")
.get(BUTTON_SELECTORS.confirm)
.click()
.wait("@VoucherUpdate");
}
export function loginAndCreateCheckoutForVoucherWithDiscount({
discount,
voucherValue,
voucherCode,
channelName,
dataForCheckout,
usageLimit,
applyOnePerCustomer,
onlyStaff,
minOrderValue,
minAmountOfItems,
}) {
cy.clearSessionData()
.loginUserViaRequest("auth", ONE_PERMISSION_USERS.discount)
.visit(urlList.vouchers);
ensureCanvasStatic();
createVoucher({
voucherCode,
voucherValue,
discountOption: discount,
channelName,
usageLimit,
applyOnePerCustomer,
onlyStaff,
minOrderValue,
minAmountOfItems,
});
dataForCheckout.voucherCode = voucherCode;
return createCheckoutWithVoucher(dataForCheckout);
}