Skip to content

Commit 21b5750

Browse files
author
Stanislav Idolov
authored
ENGCOM-2635: [Forwardport] Allow 3rd party modules to perform actions after totals calculation #17328
2 parents 0a0313a + 538b192 commit 21b5750

File tree

2 files changed

+10
-6
lines changed
  • app/code/Magento/Checkout/view/frontend/web/js/model/cart/totals-processor
  • dev/tests/js/jasmine/tests/app/code/Magento/Checkout/frontend/js/model/cart/totals-processor

2 files changed

+10
-6
lines changed

app/code/Magento/Checkout/view/frontend/web/js/model/cart/totals-processor/default.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ define([
3838
payload.addressInformation['shipping_carrier_code'] = quote.shippingMethod()['carrier_code'];
3939
}
4040

41-
storage.post(
41+
return storage.post(
4242
serviceUrl, JSON.stringify(payload), false
4343
).done(function (result) {
4444
var data = {
@@ -96,7 +96,7 @@ define([
9696
) {
9797
quote.setTotals(cartCache.get('totals'));
9898
} else {
99-
loadFromServer(address);
99+
return loadFromServer(address);
100100
}
101101
}
102102
};

dev/tests/js/jasmine/tests/app/code/Magento/Checkout/frontend/js/model/cart/totals-processor/default.test.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ define([
113113
});
114114

115115
it('estimateTotals if data wasn\'t cached and request was successfully sent', function () {
116+
var deferral = new $.Deferred();
117+
116118
spyOn(mocks['Magento_Checkout/js/model/cart/cache'], 'isChanged').and.returnValue(true);
117119
spyOn(mocks['Magento_Customer/js/customer-data'], 'get').and.returnValue(
118120
ko.observable({
@@ -124,9 +126,9 @@ define([
124126
data.shippingMethodCode = mocks['Magento_Checkout/js/model/quote'].shippingMethod()['method_code'];
125127
data.shippingCarrierCode = mocks['Magento_Checkout/js/model/quote'].shippingMethod()['carrier_code'];
126128

127-
return new $.Deferred().resolve(result);
129+
return deferral.resolve(result);
128130
});
129-
expect(defaultProcessor.estimateTotals(address)).toBeUndefined();
131+
expect(defaultProcessor.estimateTotals(address)).toBe(deferral);
130132
expect(mocks['Magento_Checkout/js/model/quote'].setTotals).toHaveBeenCalledWith(totals);
131133
expect(mocks['Magento_Checkout/js/model/totals'].isLoading.calls.argsFor(0)[0]).toBe(true);
132134
expect(mocks['Magento_Checkout/js/model/totals'].isLoading.calls.argsFor(1)[0]).toBe(false);
@@ -136,6 +138,8 @@ define([
136138
});
137139

138140
it('estimateTotals if data wasn\'t cached and request returns error', function () {
141+
var deferral = new $.Deferred();
142+
139143
spyOn(mocks['Magento_Checkout/js/model/cart/cache'], 'isChanged').and.returnValue(true);
140144
spyOn(mocks['Magento_Customer/js/customer-data'], 'get').and.returnValue(
141145
ko.observable({
@@ -144,9 +148,9 @@ define([
144148
);
145149
spyOn(mocks['Magento_Checkout/js/model/cart/cache'], 'get');
146150
spyOn(mocks['mage/storage'], 'post').and.callFake(function () {
147-
return new $.Deferred().reject('Error Message');
151+
return deferral.reject('Error Message');
148152
});
149-
expect(defaultProcessor.estimateTotals(address)).toBeUndefined();
153+
expect(defaultProcessor.estimateTotals(address)).toBe(deferral);
150154
expect(mocks['Magento_Checkout/js/model/totals'].isLoading.calls.argsFor(0)[0]).toBe(true);
151155
expect(mocks['Magento_Checkout/js/model/totals'].isLoading.calls.argsFor(1)[0]).toBe(false);
152156
expect(mocks['mage/storage'].post).toHaveBeenCalled();

0 commit comments

Comments
 (0)