From de91ed659153c5f6bc6c2f6da143aabada766b30 Mon Sep 17 00:00:00 2001 From: Wojciech Date: Fri, 12 Apr 2024 14:50:23 +0200 Subject: [PATCH 1/4] fix channel creation flow settings --- .changeset/old-pianos-hope.md | 5 +++++ .../ChannelDetailsPage/ChannelDetailsPage.tsx | 14 +++++++++++- .../views/ChannelCreate/ChannelCreate.tsx | 22 +++++++++++-------- .../views/ChannelDetails/ChannelDetails.tsx | 18 +++++++-------- 4 files changed, 40 insertions(+), 19 deletions(-) create mode 100644 .changeset/old-pianos-hope.md diff --git a/.changeset/old-pianos-hope.md b/.changeset/old-pianos-hope.md new file mode 100644 index 00000000000..acf3d6fb235 --- /dev/null +++ b/.changeset/old-pianos-hope.md @@ -0,0 +1,5 @@ +--- +"saleor-dashboard": patch +--- + +Flow settings in channel creation will now persist after channel is created diff --git a/src/channels/pages/ChannelDetailsPage/ChannelDetailsPage.tsx b/src/channels/pages/ChannelDetailsPage/ChannelDetailsPage.tsx index bd2a6563746..858a0936f9c 100644 --- a/src/channels/pages/ChannelDetailsPage/ChannelDetailsPage.tsx +++ b/src/channels/pages/ChannelDetailsPage/ChannelDetailsPage.tsx @@ -208,9 +208,13 @@ const ChannelDetailsPage = function ({ ); const reorderWarehouse = createWarehouseReorderHandler(data, set); const handleMarkAsPaidStrategyChange = () => { + if (!data.markAsPaidStrategy) { + set({ markAsPaidStrategy: MarkAsPaidStrategyEnum.PAYMENT_FLOW }); + return; + } + set({ markAsPaidStrategy: - // Swap enum values data.markAsPaidStrategy === MarkAsPaidStrategyEnum.PAYMENT_FLOW ? MarkAsPaidStrategyEnum.TRANSACTION_FLOW : MarkAsPaidStrategyEnum.PAYMENT_FLOW, @@ -218,6 +222,14 @@ const ChannelDetailsPage = function ({ }; const handleTransactionFlowStrategyChange = () => { + if (!data.defaultTransactionFlowStrategy) { + set({ + defaultTransactionFlowStrategy: + TransactionFlowStrategyEnum.AUTHORIZATION, + }); + return; + } + set({ defaultTransactionFlowStrategy: data.defaultTransactionFlowStrategy === diff --git a/src/channels/views/ChannelCreate/ChannelCreate.tsx b/src/channels/views/ChannelCreate/ChannelCreate.tsx index 30be6529b25..2f157f59e15 100644 --- a/src/channels/views/ChannelCreate/ChannelCreate.tsx +++ b/src/channels/views/ChannelCreate/ChannelCreate.tsx @@ -66,28 +66,32 @@ export const ChannelCreateView = () => { }); const handleSubmit = async ({ - shippingZonesIdsToAdd, - warehousesIdsToAdd, - warehousesToDisplay, - currencyCode, allocationStrategy, - name, - slug, + allowUnpaidOrders, + currencyCode, defaultCountry, - markAsPaidStrategy, + defaultTransactionFlowStrategy, deleteExpiredOrdersAfter, - allowUnpaidOrders, + markAsPaidStrategy, + name, + shippingZonesIdsToAdd, + slug, + warehousesIdsToAdd, + warehousesToDisplay, }: FormData) => { const input: ChannelCreateInput = { - defaultCountry, name, slug, + defaultCountry, currencyCode: currencyCode.toUpperCase(), addShippingZones: shippingZonesIdsToAdd, addWarehouses: warehousesIdsToAdd, stockSettings: { allocationStrategy, }, + paymentSettings: { + defaultTransactionFlowStrategy, + }, orderSettings: { markAsPaidStrategy, deleteExpiredOrdersAfter, diff --git a/src/channels/views/ChannelDetails/ChannelDetails.tsx b/src/channels/views/ChannelDetails/ChannelDetails.tsx index f31775e4132..f8fb8fc3ee4 100644 --- a/src/channels/views/ChannelDetails/ChannelDetails.tsx +++ b/src/channels/views/ChannelDetails/ChannelDetails.tsx @@ -106,19 +106,19 @@ export const ChannelDetails: React.FC = ({ }); const handleSubmit = async ({ + allocationStrategy, + allowUnpaidOrders, + defaultCountry, + defaultTransactionFlowStrategy, + deleteExpiredOrdersAfter, + markAsPaidStrategy, name, - slug, - shippingZonesIdsToRemove, shippingZonesIdsToAdd, - warehousesIdsToRemove, + shippingZonesIdsToRemove, + slug, warehousesIdsToAdd, + warehousesIdsToRemove, warehousesToDisplay, - defaultCountry, - allocationStrategy, - markAsPaidStrategy, - deleteExpiredOrdersAfter, - allowUnpaidOrders, - defaultTransactionFlowStrategy, }: FormData) => { const updateChannelMutation = updateChannel({ variables: { From 7a9c818feab5af132c24466cdf4f0e159e5c2327 Mon Sep 17 00:00:00 2001 From: Wojciech Date: Thu, 18 Apr 2024 11:42:02 +0200 Subject: [PATCH 2/4] add pw tests and small improvements --- playwright/tests/channels.spec.ts | 30 ++++++++++++++++++- .../components/ChannelForm/ChannelForm.tsx | 2 +- .../components/ChannelForm/MarkAsPaid.tsx | 6 ++-- .../ChannelDetailsPage/ChannelDetailsPage.tsx | 4 ++- 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/playwright/tests/channels.spec.ts b/playwright/tests/channels.spec.ts index a29b6e46379..9065409e09e 100644 --- a/playwright/tests/channels.spec.ts +++ b/playwright/tests/channels.spec.ts @@ -3,7 +3,7 @@ import { ChannelPage } from "@pages/channelsPage"; import { ConfigurationPage } from "@pages/configurationPage"; import { expect, test } from "@playwright/test"; -test.use({ storageState: "./playwright/.auth/admin.json" }); +test.use({ storageState: "./playwright/.auth/admin.json", locale: "en" }); let configurationPage: ConfigurationPage; let channelPage: ChannelPage; @@ -25,6 +25,34 @@ test("TC: SALEOR_97 Create basic channel @e2e @channels", async () => { await channelPage.expectSuccessBanner(); }); +test("TC: SALEOR_208 Create channel with all settings @e2e @channels", async () => { + const slugName = new Date().toISOString(); + await configurationPage.gotoConfigurationView(); + await configurationPage.openChannels(); + await channelPage.clickCreateChannelButton(); + await channelPage.typeChannelName(); + await channelPage.typeSlugName(slugName); + await channelPage.selectCurrency("AFN - Afghanistan"); + await channelPage.selectCountry("Afghanistan"); + await channelPage.clickTransactionFlowCheckbox(); + // Checking before save because checkboxes used to not work properly + await expect(channelPage.transactionFlowCheckbox).toBeChecked(); + await channelPage.clickAllowUnpaidOrdersCheckbox(); + await expect(channelPage.allowUnpaidOrdersCheckbox).toBeChecked(); + await channelPage.clickAuthorizeInsteadOfChargingCheckbox(); + await expect(channelPage.authorizeInsteadOfChargingCheckbox).toBeChecked(); + await channelPage.clickSaveButton(); + await channelPage.expectSuccessBanner(); + + // Checking again after save because state wasn't saved properly + await channelPage.page.waitForURL( + (url: URL) => !url.pathname.includes("add"), + ); + await expect(channelPage.transactionFlowCheckbox).toBeChecked(); + await expect(channelPage.authorizeInsteadOfChargingCheckbox).toBeChecked(); + await expect(channelPage.allowUnpaidOrdersCheckbox).toBeChecked(); +}); + test("TC: SALEOR_98 Edit channel - transaction flow, allow unpaid, authorize, prio high stock @e2e @channels", async () => { await channelPage.gotoChannelDetails(CHANNELS.channelToBeEditedSettings.id); await channelPage.clickTransactionFlowCheckbox(); diff --git a/src/channels/components/ChannelForm/ChannelForm.tsx b/src/channels/components/ChannelForm/ChannelForm.tsx index efa4abdaf63..51a1bfc810d 100644 --- a/src/channels/components/ChannelForm/ChannelForm.tsx +++ b/src/channels/components/ChannelForm/ChannelForm.tsx @@ -210,11 +210,11 @@ export const ChannelForm: React.FC = ({ /> void; } export const MarkAsPaid = ({ - isDiabled, + hasError, isChecked, onCheckedChange, }: MarkAsPaidProps) => ( ({ const reorderWarehouse = createWarehouseReorderHandler(data, set); const handleMarkAsPaidStrategyChange = () => { if (!data.markAsPaidStrategy) { - set({ markAsPaidStrategy: MarkAsPaidStrategyEnum.PAYMENT_FLOW }); + set({ + markAsPaidStrategy: MarkAsPaidStrategyEnum.TRANSACTION_FLOW, + }); return; } From a6e8a0a49427fed59f72226071377b959cc7de0d Mon Sep 17 00:00:00 2001 From: Wojciech Date: Thu, 18 Apr 2024 14:37:10 +0200 Subject: [PATCH 3/4] add disabled to checkboxes --- src/channels/components/ChannelForm/AllowUnpaidOrders.tsx | 3 +++ src/channels/components/ChannelForm/ChannelForm.tsx | 3 +++ .../components/ChannelForm/DefaultTransactionFlowStrategy.tsx | 3 +++ src/channels/components/ChannelForm/MarkAsPaid.tsx | 3 +++ 4 files changed, 12 insertions(+) diff --git a/src/channels/components/ChannelForm/AllowUnpaidOrders.tsx b/src/channels/components/ChannelForm/AllowUnpaidOrders.tsx index fb0d3365f41..305499d7ea5 100644 --- a/src/channels/components/ChannelForm/AllowUnpaidOrders.tsx +++ b/src/channels/components/ChannelForm/AllowUnpaidOrders.tsx @@ -10,12 +10,14 @@ interface AllowUnpaidOrdersProps { onChange: FormChange; isChecked: boolean; hasError: boolean; + disabled?: boolean; } export const AllowUnpaidOrders = ({ onChange, isChecked, hasError, + disabled, }: AllowUnpaidOrdersProps) => ( onChange({ target: { name: "allowUnpaidOrders", value } }) } + disabled={disabled} > diff --git a/src/channels/components/ChannelForm/ChannelForm.tsx b/src/channels/components/ChannelForm/ChannelForm.tsx index 51a1bfc810d..bc1a1d9fe41 100644 --- a/src/channels/components/ChannelForm/ChannelForm.tsx +++ b/src/channels/components/ChannelForm/ChannelForm.tsx @@ -215,12 +215,14 @@ export const ChannelForm: React.FC = ({ } onCheckedChange={onMarkAsPaidStrategyChange} hasError={!!formErrors.markAsPaidStrategy} + disabled={disabled} /> = ({ TransactionFlowStrategyEnum.AUTHORIZATION } hasError={!!formErrors.defaultTransactionFlowStrategy} + disabled={disabled} /> diff --git a/src/channels/components/ChannelForm/DefaultTransactionFlowStrategy.tsx b/src/channels/components/ChannelForm/DefaultTransactionFlowStrategy.tsx index 5be30fbd996..c20318f1a78 100644 --- a/src/channels/components/ChannelForm/DefaultTransactionFlowStrategy.tsx +++ b/src/channels/components/ChannelForm/DefaultTransactionFlowStrategy.tsx @@ -11,12 +11,14 @@ interface AllowUnpaidOrdersProps { onChange: FormChange; isChecked: boolean; hasError: boolean; + disabled?: boolean; } export const DefaultTransactionFlowStrategy = ({ onChange, isChecked, hasError, + disabled, }: AllowUnpaidOrdersProps) => ( onChange({ target: { name: "defaultTransactionFlowStrategy", value } }) } + disabled={disabled} > diff --git a/src/channels/components/ChannelForm/MarkAsPaid.tsx b/src/channels/components/ChannelForm/MarkAsPaid.tsx index 7034de125ac..4e2ca23330d 100644 --- a/src/channels/components/ChannelForm/MarkAsPaid.tsx +++ b/src/channels/components/ChannelForm/MarkAsPaid.tsx @@ -10,18 +10,21 @@ interface MarkAsPaidProps { hasError: boolean; isChecked: boolean; onCheckedChange: () => void; + disabled?: boolean; } export const MarkAsPaid = ({ hasError, isChecked, onCheckedChange, + disabled, }: MarkAsPaidProps) => ( From 3b25203153b99b1bc326b99f896a9300c86c73b2 Mon Sep 17 00:00:00 2001 From: Wojciech Date: Mon, 22 Apr 2024 14:06:53 +0200 Subject: [PATCH 4/4] trigger