Skip to content

Commit a722201

Browse files
author
Stanislav Idolov
authored
ENGCOM-2534: Allow 3rd party modules to perform actions after totals calculation #17127
2 parents 298321c + 74a182d commit a722201

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
@@ -106,6 +106,8 @@ define([
106106
});
107107

108108
it('estimateTotals if data wasn\'t cached and request was successfully sent', function () {
109+
var deferral = new $.Deferred();
110+
109111
spyOn(mocks['Magento_Checkout/js/model/cart/cache'], 'isChanged').and.returnValue(true);
110112
spyOn(mocks['Magento_Customer/js/customer-data'], 'get').and.returnValue(
111113
ko.observable({
@@ -117,9 +119,9 @@ define([
117119
data.shippingMethodCode = mocks['Magento_Checkout/js/model/quote'].shippingMethod()['method_code'];
118120
data.shippingCarrierCode = mocks['Magento_Checkout/js/model/quote'].shippingMethod()['carrier_code'];
119121

120-
return new $.Deferred().resolve(result);
122+
return deferral.resolve(result);
121123
});
122-
expect(defaultProcessor.estimateTotals(address)).toBeUndefined();
124+
expect(defaultProcessor.estimateTotals(address)).toBe(deferral);
123125
expect(mocks['Magento_Checkout/js/model/quote'].setTotals).toHaveBeenCalledWith(totals);
124126
expect(mocks['Magento_Checkout/js/model/totals'].isLoading.calls.argsFor(0)[0]).toBe(true);
125127
expect(mocks['Magento_Checkout/js/model/totals'].isLoading.calls.argsFor(1)[0]).toBe(false);
@@ -129,6 +131,8 @@ define([
129131
});
130132

131133
it('estimateTotals if data wasn\'t cached and request returns error', function () {
134+
var deferral = new $.Deferred();
135+
132136
spyOn(mocks['Magento_Checkout/js/model/cart/cache'], 'isChanged').and.returnValue(true);
133137
spyOn(mocks['Magento_Customer/js/customer-data'], 'get').and.returnValue(
134138
ko.observable({
@@ -137,9 +141,9 @@ define([
137141
);
138142
spyOn(mocks['Magento_Checkout/js/model/cart/cache'], 'get');
139143
spyOn(mocks['mage/storage'], 'post').and.callFake(function () {
140-
return new $.Deferred().reject('Error Message');
144+
return deferral.reject('Error Message');
141145
});
142-
expect(defaultProcessor.estimateTotals(address)).toBeUndefined();
146+
expect(defaultProcessor.estimateTotals(address)).toBe(deferral);
143147
expect(mocks['Magento_Checkout/js/model/totals'].isLoading.calls.argsFor(0)[0]).toBe(true);
144148
expect(mocks['Magento_Checkout/js/model/totals'].isLoading.calls.argsFor(1)[0]).toBe(false);
145149
expect(mocks['mage/storage'].post).toHaveBeenCalled();

0 commit comments

Comments
 (0)