Skip to content

Commit 96aa6b2

Browse files
committed
MC-37820: [UX] Payment methods list is not refreshed on billing address change
1 parent be82efb commit 96aa6b2

File tree

3 files changed

+116
-2
lines changed

3 files changed

+116
-2
lines changed

app/code/Magento/Checkout/Test/Mftf/Section/CheckoutPaymentSection.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,5 +65,6 @@
6565
<element name="billingAddressSelectShared" type="select" selector=".checkout-billing-address select[name='billing_address_id']"/>
6666
<element name="discount" type="block" selector="tr.totals.discount"/>
6767
<element name="discountPrice" type="text" selector=".discount .price"/>
68+
<element name="paymentMethodName" type="text" selector="//div[contains(@class, 'payment-method-title')]//span[contains(text(),'{{paymentMethodTitle}}')]" timeout="30" parameterized="true"/>
6869
</section>
6970
</sections>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
11+
<test name="StorefrontGuestCheckoutWithDifferentShippingAndBillingAddressWithRestrictedCountriesForPaymentTest">
12+
<annotations>
13+
<features value="Checkout"/>
14+
<stories value="Check payment methods on checkout"/>
15+
<title value="Check payment methods update on checkout payment step"/>
16+
<description value="Check that payment methods will update on checkout payment step after updating customer billing address"/>
17+
<severity value="AVERAGE"/>
18+
<testCaseId value="MC-41743"/>
19+
<useCaseId value="MC-37820"/>
20+
<group value="checkout"/>
21+
</annotations>
22+
23+
<before>
24+
<magentoCLI command="config:set {{BankTransferEnableConfigData.path}} {{BankTransferEnableConfigData.value}}" stepKey="enableBankTransfer"/>
25+
<magentoCLI command="config:set payment/checkmo/allowspecific 1" stepKey="allowSpecificValue"/>
26+
<magentoCLI command="config:set payment/checkmo/specificcountry GB" stepKey="allowBankTransferOnlyForGB"/>
27+
<createData entity="SimpleProduct2" stepKey="createProduct"/>
28+
</before>
29+
30+
<after>
31+
<magentoCLI command="config:set {{BankTransferDisabledConfigData.path}} {{BankTransferDisabledConfigData.value}}" stepKey="disableBankTransfer"/>
32+
<magentoCLI command="config:set payment/checkmo/allowspecific 0" stepKey="disallowSpecificValue" />
33+
<magentoCLI command="config:set payment/checkmo/specificcountry ''" stepKey="defaultCountryValue"/>
34+
<deleteData createDataKey="createProduct" stepKey="deleteProduct"/>
35+
</after>
36+
37+
<actionGroup ref="StorefrontOpenProductPageActionGroup" stepKey="openProductPage">
38+
<argument name="productUrl" value="$createProduct.custom_attributes[url_key]$"/>
39+
</actionGroup>
40+
<actionGroup ref="AddToCartFromStorefrontProductPageActionGroup" stepKey="addToCartFromStorefrontProductPage">
41+
<argument name="productName" value="$createProduct.name$"/>
42+
</actionGroup>
43+
<actionGroup ref="GoToCheckoutFromMinicartActionGroup" stepKey="goToCheckoutFromMinicart"/>
44+
<actionGroup ref="GuestCheckoutFillingShippingSectionActionGroup" stepKey="fillShippingSectionAsGuest">
45+
<argument name="customerVar" value="CustomerEntityOne"/>
46+
<argument name="customerAddressVar" value="CustomerAddressSimple"/>
47+
</actionGroup>
48+
<dontSeeElement selector="{{CheckoutPaymentSection.paymentMethodName('Check / Money order')}}" stepKey="assertNoCheckMoneyOrderPaymentMethod"/>
49+
<waitForElementVisible selector="{{CheckoutPaymentSection.billingAddressNotSameBankTransferCheckbox}}" stepKey="waitForBillingAddressNotSameAsShippingCheckbox"/>
50+
<uncheckOption selector="{{CheckoutPaymentSection.billingAddressNotSameBankTransferCheckbox}}" stepKey="uncheckSameBillingAndShippingAddress"/>
51+
<conditionalClick selector="{{CheckoutPaymentSection.editAddress}}" dependentSelector="{{CheckoutShippingSection.editAddressButton}}" visible="true" stepKey="clickEditBillingAddressButton"/>
52+
<waitForLoadingMaskToDisappear stepKey="waitForBillingAddressFormLoads"/>
53+
54+
<!-- Fill Billing Address -->
55+
<actionGroup ref="StorefrontFillBillingAddressActionGroup" stepKey="fillBillingAddress"/>
56+
<click selector="{{CheckoutPaymentSection.update}}" stepKey="clickOnUpdateButton"/>
57+
<waitForLoadingMaskToDisappear stepKey="waitForLoadingMaskDisappear" />
58+
<seeElement selector="{{CheckoutPaymentSection.paymentMethodName('Check / Money order')}}" stepKey="assertCheckMoneyOrderPaymentMethod"/>
59+
</test>
60+
</tests>

app/code/Magento/Checkout/view/frontend/web/js/view/billing-address.js

Lines changed: 55 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,14 @@ define([
1818
'Magento_Checkout/js/action/set-billing-address',
1919
'Magento_Ui/js/model/messageList',
2020
'mage/translate',
21-
'Magento_Checkout/js/model/billing-address-postcode-validator'
21+
'Magento_Checkout/js/model/billing-address-postcode-validator',
22+
'mage/storage',
23+
'Magento_Checkout/js/model/resource-url-manager',
24+
'Magento_Checkout/js/model/payment-service',
25+
'Magento_Checkout/js/model/payment/method-converter',
26+
'Magento_Checkout/js/model/shipping-save-processor/payload-extender',
27+
'Magento_Checkout/js/model/full-screen-loader',
28+
'Magento_Checkout/js/model/error-processor'
2229
],
2330
function (
2431
ko,
@@ -35,7 +42,14 @@ function (
3542
setBillingAddressAction,
3643
globalMessageList,
3744
$t,
38-
billingAddressPostcodeValidator
45+
billingAddressPostcodeValidator,
46+
storage,
47+
resourceUrlManager,
48+
paymentService,
49+
methodConverter,
50+
payloadExtender,
51+
fullScreenLoader,
52+
errorProcessor
3953
) {
4054
'use strict';
4155

@@ -165,6 +179,7 @@ function (
165179
checkoutData.setNewCustomerBillingAddress(addressData);
166180
}
167181
}
182+
this.updatePaymentMethods();
168183
this.updateAddresses();
169184
},
170185

@@ -289,6 +304,44 @@ function (
289304
}
290305

291306
return label;
307+
},
308+
309+
/**
310+
* Updates payment methods list
311+
*
312+
* @returns {*}
313+
*/
314+
updatePaymentMethods: function () {
315+
var payload;
316+
317+
payload = {
318+
addressInformation: {
319+
'shipping_address': quote.shippingAddress(),
320+
'billing_address': quote.billingAddress(),
321+
'shipping_method_code': quote.shippingMethod()['method_code'],
322+
'shipping_carrier_code': quote.shippingMethod()['carrier_code']
323+
}
324+
};
325+
326+
payloadExtender(payload);
327+
328+
fullScreenLoader.startLoader();
329+
330+
return storage.post(
331+
resourceUrlManager.getUrlForSetShippingInformation(quote),
332+
JSON.stringify(payload)
333+
).done(
334+
function (response) {
335+
quote.setTotals(response.totals);
336+
paymentService.setPaymentMethods(methodConverter(response['payment_methods']));
337+
fullScreenLoader.stopLoader();
338+
}
339+
).fail(
340+
function (response) {
341+
errorProcessor.process(response);
342+
fullScreenLoader.stopLoader();
343+
}
344+
);
292345
}
293346
});
294347
});

0 commit comments

Comments
 (0)