From 74508ed93b74b0644529c847b4dc6d7c87e19dfd Mon Sep 17 00:00:00 2001 From: Karolina Rakoczy Date: Fri, 11 Feb 2022 15:58:40 +0100 Subject: [PATCH] Add tests for updating vouchers (#1845) --- cypress/elements/discounts/vouchers.js | 6 + cypress/integration/discounts/vouchers.js | 244 ----------------- .../discounts/vouchers/createVouchers.js | 4 +- .../discounts/vouchers/updateVouchers.js | 256 ++++++++++++++++++ .../discounts/vouchers/vouchers.js | 101 ------- .../api/requests/Discounts/Vouchers.js | 9 +- .../api/utils/catalog/giftCardUtils.js | 2 +- .../api/utils/discounts/vouchersUtils.js | 6 +- cypress/support/formatData/formatDate.js | 10 +- .../support/pages/discounts/vouchersPage.js | 27 ++ src/components/CountryList/CountryList.tsx | 2 + .../__snapshots__/Stories.test.ts.snap | 6 + 12 files changed, 317 insertions(+), 356 deletions(-) delete mode 100644 cypress/integration/discounts/vouchers.js create mode 100644 cypress/integration/discounts/vouchers/updateVouchers.js delete mode 100644 cypress/integration/discounts/vouchers/vouchers.js diff --git a/cypress/elements/discounts/vouchers.js b/cypress/elements/discounts/vouchers.js index 11d0e3e40..74fc77534 100644 --- a/cypress/elements/discounts/vouchers.js +++ b/cypress/elements/discounts/vouchers.js @@ -7,6 +7,12 @@ export const VOUCHERS_SELECTORS = { fixedDiscountRadioButton: "[name='discountType'][value='VALUE_FIXED']", shippingDiscountRadioButton: "[name='discountType'][value='SHIPPING']", discountValueInputs: "[name='value']", + startDateInput: '[name="startDate"]', + endDateInput: '[name="endDate"]', + hasEndDateCheckbox: '[name="hasEndDate"]', + endTimeInput: '[name="endTime"]', + assignCountryButton: '[data-test-id="assign-country"]', + countriesDropdownIcon: '[data-test-id="countries-drop-down-icon"]', limits: { usageLimitCheckbox: '[data-test-id="has-usage-limit"]', usageLimitTextField: '[data-test-id="usage-limit"]', diff --git a/cypress/integration/discounts/vouchers.js b/cypress/integration/discounts/vouchers.js deleted file mode 100644 index 4b51d7c4c..000000000 --- a/cypress/integration/discounts/vouchers.js +++ /dev/null @@ -1,244 +0,0 @@ -/// -/// - -import faker from "faker"; - -import { BUTTON_SELECTORS } from "../../elements/shared/button-selectors"; -import { urlList, voucherDetailsUrl } from "../../fixtures/urlList"; -import { ONE_PERMISSION_USERS } from "../../fixtures/users"; -import { createChannel } from "../../support/api/requests/Channels"; -import { completeCheckout } from "../../support/api/requests/Checkout"; -import * as channelsUtils from "../../support/api/utils/channelsUtils"; -import { - createVoucherInChannel, - deleteVouchersStartsWith -} from "../../support/api/utils/discounts/vouchersUtils"; -import { - addPayment, - createCheckoutWithVoucher -} from "../../support/api/utils/ordersUtils"; -import * as productsUtils from "../../support/api/utils/products/productsUtils"; -import { deleteShippingStartsWith } from "../../support/api/utils/shippingUtils"; -import filterTests from "../../support/filterTests"; -import { - createVoucher, - discountOptions -} from "../../support/pages/discounts/vouchersPage"; - -filterTests({ definedTags: ["all"] }, () => { - describe("Vouchers discounts", () => { - const startsWith = "CyVou-"; - const productPrice = 100; - const shippingPrice = 100; - - let defaultChannel; - let createdChannel; - let shippingMethod; - let variants; - let product; - let address; - - before(() => { - cy.clearSessionData().loginUserViaRequest(); - channelsUtils.deleteChannelsStartsWith(startsWith); - deleteVouchersStartsWith(startsWith); - deleteShippingStartsWith(startsWith); - const name = `${startsWith}${faker.datatype.number()}`; - productsUtils - .createProductWithShipping({ name, productPrice, shippingPrice }) - .then( - ({ - variantsList: variantsResp, - defaultChannel: channel, - shippingMethod: shippingMethodResp, - address: addressResp, - product: productResp - }) => { - variants = variantsResp; - defaultChannel = channel; - shippingMethod = shippingMethodResp; - address = addressResp; - product = productResp; - createChannel({ name }); - } - ) - .then(channel => { - createdChannel = channel; - }); - }); - - it("should create percentage voucher", () => { - const voucherValue = 50; - const voucherCode = `${startsWith}${faker.datatype.number()}`; - const expectedAmount = - (productPrice * voucherValue) / 100 + shippingPrice; - let checkout; - - loginAndCreateCheckoutForVoucherWithDiscount( - discountOptions.PERCENTAGE, - voucherValue, - voucherCode - ) - .then(amount => { - expect(amount).to.be.eq(expectedAmount); - createCheckoutForCreatedVoucher(voucherCode); - }) - .then(resp => { - expect(resp.addPromoCodeResp.checkout.totalPrice.gross.amount).to.eq( - expectedAmount - ); - checkout = resp.checkout; - addPayment(checkout.id); - }) - .then(() => { - completeCheckout(checkout.id); - }) - .then(({ order }) => { - expect(order.id).to.be.ok; - }); - }); - - it("should create fixed price voucher", () => { - const voucherValue = 50; - const voucherCode = `${startsWith}${faker.datatype.number()}`; - const expectedAmount = productPrice + shippingPrice - voucherValue; - let checkout; - - loginAndCreateCheckoutForVoucherWithDiscount( - discountOptions.FIXED, - voucherValue, - voucherCode - ) - .then(amount => { - expect(amount).to.be.eq(expectedAmount); - createCheckoutForCreatedVoucher(voucherCode); - }) - .then(resp => { - expect(resp.addPromoCodeResp.checkout.totalPrice.gross.amount).to.eq( - expectedAmount - ); - checkout = resp.checkout; - addPayment(checkout.id); - }) - .then(() => { - completeCheckout(checkout.id); - }) - .then(({ order }) => { - expect(order.id).to.be.ok; - }); - }); - - it("should create free shipping voucher", () => { - const voucherCode = `${startsWith}${faker.datatype.number()}`; - const expectedAmount = productPrice; - let checkout; - - loginAndCreateCheckoutForVoucherWithDiscount( - discountOptions.SHIPPING, - null, - voucherCode - ) - .then(amount => { - expect(amount).to.be.eq(expectedAmount); - createCheckoutForCreatedVoucher(voucherCode); - }) - .then(resp => { - expect(resp.addPromoCodeResp.checkout.totalPrice.gross.amount).to.eq( - expectedAmount - ); - checkout = resp.checkout; - addPayment(checkout.id); - }) - .then(() => { - completeCheckout(checkout.id); - }) - .then(({ order }) => { - expect(order.id).to.be.ok; - }); - }); - - it("should create voucher not available for selected channel", () => { - const randomName = `${startsWith}${faker.datatype.number()}`; - const voucherValue = 50; - - cy.clearSessionData() - .loginUserViaRequest() - .visit(urlList.vouchers); - cy.softExpectSkeletonIsVisible(); - createVoucher({ - voucherCode: randomName, - voucherValue, - discountOption: discountOptions.PERCENTAGE, - channelName: createdChannel.name - }); - createCheckoutForCreatedVoucher(randomName).then( - ({ addPromoCodeResp }) => { - const errorField = addPromoCodeResp.checkoutErrors[0].field; - expect(errorField).to.be.eq("promoCode"); - } - ); - }); - - it("should delete voucher", () => { - const name = `${startsWith}${faker.datatype.number()}`; - const voucherValue = 50; - - let voucher; - - cy.clearSessionData().loginUserViaRequest(); - createVoucherInChannel({ - name, - productId: product.id, - channelId: defaultChannel.id, - value: voucherValue - }) - .then(voucherResp => { - voucher = voucherResp; - expect(voucher.id).to.be.ok; - cy.visit(voucherDetailsUrl(voucher.id)) - .addAliasToGraphRequest("VoucherDelete") - .get(BUTTON_SELECTORS.deleteButton) - .click() - .get(BUTTON_SELECTORS.submit) - .click() - .wait("@VoucherDelete"); - createCheckoutForCreatedVoucher(voucher.code); - }) - .then(({ addPromoCodeResp }) => { - const errorField = addPromoCodeResp.checkoutErrors[0].field; - expect(errorField).to.be.eq("promoCode"); - }); - }); - - function createCheckoutForCreatedVoucher(voucherCode) { - return createCheckoutWithVoucher({ - channelSlug: defaultChannel.slug, - variantsList: variants, - address, - shippingMethodName: shippingMethod.name, - voucherCode, - auth: "token" - }); - } - - function loginAndCreateCheckoutForVoucherWithDiscount( - discount, - voucherValue, - voucherCode - ) { - cy.clearSessionData() - .loginUserViaRequest("auth", ONE_PERMISSION_USERS.discount) - .visit(urlList.vouchers); - cy.softExpectSkeletonIsVisible(); - createVoucher({ - voucherCode, - voucherValue, - discountOption: discount, - channelName: defaultChannel.name - }); - return createCheckoutForCreatedVoucher(voucherCode).its( - "addPromoCodeResp.checkout.totalPrice.gross.amount" - ); - } - }); -}); diff --git a/cypress/integration/discounts/vouchers/createVouchers.js b/cypress/integration/discounts/vouchers/createVouchers.js index a2d95e8f6..fb30f4d48 100644 --- a/cypress/integration/discounts/vouchers/createVouchers.js +++ b/cypress/integration/discounts/vouchers/createVouchers.js @@ -1,5 +1,5 @@ -// / -// / +/// +/// import faker from "faker"; diff --git a/cypress/integration/discounts/vouchers/updateVouchers.js b/cypress/integration/discounts/vouchers/updateVouchers.js new file mode 100644 index 000000000..96b447816 --- /dev/null +++ b/cypress/integration/discounts/vouchers/updateVouchers.js @@ -0,0 +1,256 @@ +/// +/// + +import faker from "faker"; + +import { VOUCHERS_SELECTORS } from "../../../elements/discounts/vouchers"; +import { BUTTON_SELECTORS } from "../../../elements/shared/button-selectors"; +import { voucherDetailsUrl } from "../../../fixtures/urlList"; +import { + createVoucherInChannel, + deleteVouchersStartsWith +} from "../../../support/api/utils/discounts/vouchersUtils"; +import { createCheckoutWithVoucher } from "../../../support/api/utils/ordersUtils"; +import * as productsUtils from "../../../support/api/utils/products/productsUtils"; +import filterTests from "../../../support/filterTests"; +import { formatDate, formatTime } from "../../../support/formatData/formatDate"; +import { setVoucherDate } from "../../../support/pages/discounts/vouchersPage"; + +filterTests({ definedTags: ["all"] }, () => { + describe("As an admin I want to update vouchers", () => { + const startsWith = "CyVou-"; + const productPrice = 100; + const shippingPrice = 100; + + let defaultChannel; + let product; + let dataForCheckout; + + before(() => { + cy.clearSessionData().loginUserViaRequest(); + deleteVouchersStartsWith(startsWith); + const name = `${startsWith}${faker.datatype.number()}`; + productsUtils + .createProductWithShipping({ name, productPrice, shippingPrice }) + .then( + ({ + variantsList: variantsResp, + defaultChannel: channel, + shippingMethod: shippingMethodResp, + address: addressResp, + product: productResp + }) => { + defaultChannel = channel; + product = productResp; + + dataForCheckout = { + channelSlug: defaultChannel.slug, + variantsList: variantsResp, + address: addressResp, + shippingMethodName: shippingMethodResp.name, + auth: "token" + }; + } + ); + }); + + it("should delete voucher. TC: SALEOR_1905", () => { + const name = `${startsWith}${faker.datatype.number()}`; + const voucherValue = 50; + + let voucher; + + cy.clearSessionData().loginUserViaRequest(); + createVoucherInChannel({ + name, + productId: product.id, + channelId: defaultChannel.id, + value: voucherValue + }) + .then(voucherResp => { + voucher = voucherResp; + expect(voucher.id).to.be.ok; + cy.visit(voucherDetailsUrl(voucher.id)) + .addAliasToGraphRequest("VoucherDelete") + .get(BUTTON_SELECTORS.deleteButton) + .click() + .get(BUTTON_SELECTORS.submit) + .click() + .wait("@VoucherDelete"); + dataForCheckout.voucherCode = voucher.code; + createCheckoutWithVoucher(dataForCheckout); + }) + .then(({ addPromoCodeResp }) => { + const errorField = addPromoCodeResp.errors[0].field; + expect(errorField).to.be.eq("promoCode"); + }); + }); + + it("should update voucher. TC: SALEOR_1906", () => { + const name = `${startsWith}${faker.datatype.number()}`; + const voucherValue = 50; + const voucherUpdatedValue = 20; + const expectedOrderAmount = + productPrice + + shippingPrice - + (productPrice * voucherUpdatedValue) / 100; + + let voucher; + + cy.clearSessionData().loginUserViaRequest(); + createVoucherInChannel({ + name, + productId: product.id, + channelId: defaultChannel.id, + value: voucherValue + }) + .then(voucherResp => { + voucher = voucherResp; + expect(voucher.id).to.be.ok; + cy.visit(voucherDetailsUrl(voucher.id)) + .addAliasToGraphRequest("VoucherUpdate") + .get(VOUCHERS_SELECTORS.percentageDiscountRadioButton) + .click() + .get(VOUCHERS_SELECTORS.discountValueInputs) + .clearAndType(voucherUpdatedValue) + .get(BUTTON_SELECTORS.confirm) + .click() + .wait("@VoucherUpdate"); + dataForCheckout.voucherCode = voucher.code; + createCheckoutWithVoucher(dataForCheckout); + }) + .then(({ addPromoCodeResp }) => { + const amount = addPromoCodeResp.checkout.totalPrice.gross.amount; + expect(amount).to.be.eq(expectedOrderAmount); + }); + }); + + it("should set date on voucher. TC: SALEOR_1912", () => { + const name = `${startsWith}${faker.datatype.number()}`; + const voucherValue = 50; + const today = new Date(); + const tomorrow = new Date(today); + const todayDate = formatDate(today); + const tomorrowDate = formatDate(tomorrow.setDate(tomorrow.getDate() + 1)); + + let voucher; + + cy.clearSessionData().loginUserViaRequest(); + createVoucherInChannel({ + name, + productId: product.id, + channelId: defaultChannel.id, + value: voucherValue + }) + .then(voucherResp => { + voucher = voucherResp; + expect(voucher.id).to.be.ok; + setVoucherDate({ voucherId: voucher.id, startDate: tomorrowDate }); + dataForCheckout.voucherCode = voucher.code; + createCheckoutWithVoucher(dataForCheckout); + }) + .then(({ addPromoCodeResp }) => { + const errorField = addPromoCodeResp.errors[0].field; + expect(errorField).to.be.eq("promoCode"); + setVoucherDate({ voucherId: voucher.id, startDate: todayDate }); + dataForCheckout.voucherCode = voucher.code; + createCheckoutWithVoucher(dataForCheckout); + }) + .then(({ addPromoCodeResp }) => { + expect(addPromoCodeResp.errors).to.be.empty; + }); + }); + + it("should set end date on voucher. TC: SALEOR_1913", () => { + const name = `${startsWith}${faker.datatype.number()}`; + const voucherValue = 50; + const today = new Date(); + const todayDate = formatDate(today); + const tomorrow = new Date(today); + const tomorrowDate = formatDate(tomorrow.setDate(tomorrow.getDate() + 1)); + + let voucher; + + cy.clearSessionData().loginUserViaRequest(); + createVoucherInChannel({ + name, + productId: product.id, + channelId: defaultChannel.id, + value: voucherValue + }) + .then(voucherResp => { + voucher = voucherResp; + expect(voucher.id).to.be.ok; + setVoucherDate({ + voucherId: voucher.id, + endDate: todayDate, + endTime: formatTime(today), + hasEndDate: true + }); + dataForCheckout.voucherCode = voucher.code; + createCheckoutWithVoucher(dataForCheckout); + }) + .then(({ addPromoCodeResp }) => { + const errorField = addPromoCodeResp.errors[0].field; + expect(errorField).to.be.eq("promoCode"); + setVoucherDate({ + voucherId: voucher.id, + endDate: tomorrowDate, + endTime: formatTime(tomorrow) + }); + dataForCheckout.voucherCode = voucher.code; + createCheckoutWithVoucher(dataForCheckout); + }) + .then(({ addPromoCodeResp }) => { + expect(addPromoCodeResp.errors).to.be.empty; + }); + }); + + it("should set country on voucher. TC: SALEOR_1914", () => { + const name = `${startsWith}${faker.datatype.number()}`; + const voucherValue = 50; + + let voucher; + + cy.clearSessionData().loginUserViaRequest(); + createVoucherInChannel({ + name, + productId: product.id, + channelId: defaultChannel.id, + value: voucherValue, + type: "SHIPPING", + country: "US" + }) + .then(voucherResp => { + voucher = voucherResp; + expect(voucher.id).to.be.ok; + dataForCheckout.voucherCode = voucher.code; + createCheckoutWithVoucher(dataForCheckout); + }) + .then(({ addPromoCodeResp }) => { + expect(addPromoCodeResp.errors).to.be.empty; + cy.visit(voucherDetailsUrl(voucher.id)) + .get(VOUCHERS_SELECTORS.shippingDiscountRadioButton) + .click() + .get(VOUCHERS_SELECTORS.countriesDropdownIcon) + .click() + .get(BUTTON_SELECTORS.deleteIcon) + .click() + .get(BUTTON_SELECTORS.deleteIcon) + .should("not.exist") + .get(VOUCHERS_SELECTORS.assignCountryButton) + .click() + .assignElements("Poland", false) + .addAliasToGraphRequest("VoucherUpdate") + .get(BUTTON_SELECTORS.confirm) + .click() + .wait("@VoucherUpdate"); + createCheckoutWithVoucher(dataForCheckout); + }) + .then(({ addPromoCodeResp }) => { + const errorField = addPromoCodeResp.errors[0].field; + expect(errorField).to.be.eq("promoCode"); + }); + }); + }); +}); diff --git a/cypress/integration/discounts/vouchers/vouchers.js b/cypress/integration/discounts/vouchers/vouchers.js deleted file mode 100644 index 18bfd52d0..000000000 --- a/cypress/integration/discounts/vouchers/vouchers.js +++ /dev/null @@ -1,101 +0,0 @@ -// / -// / - -import faker from "faker"; - -import { BUTTON_SELECTORS } from "../../../elements/shared/button-selectors"; -import { voucherDetailsUrl } from "../../../fixtures/urlList"; -import { createChannel } from "../../../support/api/requests/Channels"; -import * as channelsUtils from "../../../support/api/utils/channelsUtils"; -import { - createVoucherInChannel, - deleteVouchersStartsWith -} from "../../../support/api/utils/discounts/vouchersUtils"; -import { createCheckoutWithVoucher } from "../../../support/api/utils/ordersUtils"; -import * as productsUtils from "../../../support/api/utils/products/productsUtils"; -import filterTests from "../../../support/filterTests"; - -filterTests({ definedTags: ["all"] }, () => { - describe("Vouchers discounts", () => { - const startsWith = "CyVou-"; - const productPrice = 100; - const shippingPrice = 100; - - let defaultChannel; - let createdChannel; - let shippingMethod; - let variants; - let product; - let address; - - before(() => { - cy.clearSessionData().loginUserViaRequest(); - channelsUtils.deleteChannelsStartsWith(startsWith); - deleteVouchersStartsWith(startsWith); - const name = `${startsWith}${faker.datatype.number()}`; - productsUtils - .createProductWithShipping({ name, productPrice, shippingPrice }) - .then( - ({ - variantsList: variantsResp, - defaultChannel: channel, - shippingMethod: shippingMethodResp, - address: addressResp, - product: productResp - }) => { - variants = variantsResp; - defaultChannel = channel; - shippingMethod = shippingMethodResp; - address = addressResp; - product = productResp; - createChannel({ name }); - } - ) - .then(channel => { - createdChannel = channel; - }); - }); - - it("should delete voucher", () => { - const name = `${startsWith}${faker.datatype.number()}`; - const voucherValue = 50; - - let voucher; - - cy.clearSessionData().loginUserViaRequest(); - createVoucherInChannel({ - name, - productId: product.id, - channelId: defaultChannel.id, - value: voucherValue - }) - .then(voucherResp => { - voucher = voucherResp; - expect(voucher.id).to.be.ok; - cy.visit(voucherDetailsUrl(voucher.id)) - .addAliasToGraphRequest("VoucherDelete") - .get(BUTTON_SELECTORS.deleteButton) - .click() - .get(BUTTON_SELECTORS.submit) - .click() - .wait("@VoucherDelete"); - createCheckoutForCreatedVoucher(voucher.code); - }) - .then(({ addPromoCodeResp }) => { - const errorField = addPromoCodeResp.errors[0].field; - expect(errorField).to.be.eq("promoCode"); - }); - }); - - function createCheckoutForCreatedVoucher(voucherCode) { - return createCheckoutWithVoucher({ - channelSlug: defaultChannel.slug, - variantsList: variants, - address, - shippingMethodName: shippingMethod.name, - voucherCode, - auth: "token" - }); - } - }); -}); diff --git a/cypress/support/api/requests/Discounts/Vouchers.js b/cypress/support/api/requests/Discounts/Vouchers.js index bd0cd669b..c30279050 100644 --- a/cypress/support/api/requests/Discounts/Vouchers.js +++ b/cypress/support/api/requests/Discounts/Vouchers.js @@ -1,3 +1,5 @@ +import { getValueWithDefault } from "../utils/Utils"; + export function getVouchers(first, startsWith) { const query = `query getVouchers{ vouchers(first:${first}, filter:{ @@ -28,9 +30,14 @@ export function deleteVouchers(voucherId) { return cy.sendRequestWithQuery(mutation); } -export function createVoucher({ name, productId, code = name }) { +export function createVoucher({ name, productId, code = name, type, country }) { + const discountTypeLines = getValueWithDefault(type, `type:${type}`); + const countryLine = getValueWithDefault(country, `countries:["${country}"]`); + const mutation = `mutation{ voucherCreate(input:{ + ${discountTypeLines} + ${countryLine} name:"${name}", code:"${code}" products:["${productId}"] diff --git a/cypress/support/api/utils/catalog/giftCardUtils.js b/cypress/support/api/utils/catalog/giftCardUtils.js index d4aa93b02..1039aea8c 100644 --- a/cypress/support/api/utils/catalog/giftCardUtils.js +++ b/cypress/support/api/utils/catalog/giftCardUtils.js @@ -63,7 +63,7 @@ export function createCheckoutWithDisabledGiftCard({ voucherCode, auth }).then(({ addPromoCodeResp, checkout }) => { - expect(addPromoCodeResp.checkoutErrors[0].field).to.eq("promoCode"); + expect(addPromoCodeResp.errors[0].field).to.eq("promoCode"); return checkout; }); } diff --git a/cypress/support/api/utils/discounts/vouchersUtils.js b/cypress/support/api/utils/discounts/vouchersUtils.js index 63689b254..e31cef6ce 100644 --- a/cypress/support/api/utils/discounts/vouchersUtils.js +++ b/cypress/support/api/utils/discounts/vouchersUtils.js @@ -14,10 +14,12 @@ export function createVoucherInChannel({ productId, channelId, value, - code = name + code = name, + type, + country }) { let voucher; - return createVoucher({ name, productId, code }) + return createVoucher({ name, productId, code, type, country }) .then(({ voucher: voucherResp }) => { voucher = voucherResp; addChannelToVoucher(voucher.id, channelId, value); diff --git a/cypress/support/formatData/formatDate.js b/cypress/support/formatData/formatDate.js index 3ae558ac4..2a2644553 100644 --- a/cypress/support/formatData/formatDate.js +++ b/cypress/support/formatData/formatDate.js @@ -12,9 +12,9 @@ function getPeriodValue(date, option) { } export function formatTime(date) { - const formatter = new Intl.DateTimeFormat(["pl-Pl"], { - hour: "numeric", - minute: "numeric" - }); - return formatter.format(date); + const hour = getPeriodValue(date, { hour: "2-digit", hour12: false }); + const minute = getPeriodValue(date, { minute: "2-digit" }); + const formattedMinute = minute.length === 1 ? `0${minute}` : minute; + + return new Array(hour, formattedMinute).join(":"); } diff --git a/cypress/support/pages/discounts/vouchersPage.js b/cypress/support/pages/discounts/vouchersPage.js index b834d0353..d03c67780 100644 --- a/cypress/support/pages/discounts/vouchersPage.js +++ b/cypress/support/pages/discounts/vouchersPage.js @@ -1,5 +1,6 @@ import { VOUCHERS_SELECTORS } from "../../../elements/discounts/vouchers"; import { BUTTON_SELECTORS } from "../../../elements/shared/button-selectors"; +import { voucherDetailsUrl } from "../../../fixtures/urlList"; import { urlList } from "../../../fixtures/urlList"; import { ONE_PERMISSION_USERS } from "../../../fixtures/users"; import { createCheckoutWithVoucher } from "../../api/utils/ordersUtils"; @@ -59,6 +60,32 @@ export function createVoucher({ .confirmationMessageShouldDisappear(); } +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, diff --git a/src/components/CountryList/CountryList.tsx b/src/components/CountryList/CountryList.tsx index 8f89ce6e4..a7e3d6557 100644 --- a/src/components/CountryList/CountryList.tsx +++ b/src/components/CountryList/CountryList.tsx @@ -122,6 +122,7 @@ const CountryList: React.FC = props => { > = props => { className={classNames(classes.textRight, classes.iconCell)} > onCountryUnassign(country.code)} diff --git a/src/storybook/__snapshots__/Stories.test.ts.snap b/src/storybook/__snapshots__/Stories.test.ts.snap index 0c2e6d573..07fb8117b 100644 --- a/src/storybook/__snapshots__/Stories.test.ts.snap +++ b/src/storybook/__snapshots__/Stories.test.ts.snap @@ -227090,6 +227090,7 @@ exports[`Storyshots Views / Shipping / Create shipping zone default 1`] = `