diff --git a/app/code/Magento/Checkout/view/frontend/web/js/model/cart/totals-processor/default.js b/app/code/Magento/Checkout/view/frontend/web/js/model/cart/totals-processor/default.js index e269462047748..0e94232786c65 100644 --- a/app/code/Magento/Checkout/view/frontend/web/js/model/cart/totals-processor/default.js +++ b/app/code/Magento/Checkout/view/frontend/web/js/model/cart/totals-processor/default.js @@ -38,7 +38,7 @@ define([ payload.addressInformation['shipping_carrier_code'] = quote.shippingMethod()['carrier_code']; } - storage.post( + return storage.post( serviceUrl, JSON.stringify(payload), false ).done(function (result) { var data = { @@ -96,7 +96,7 @@ define([ ) { quote.setTotals(cartCache.get('totals')); } else { - loadFromServer(address); + return loadFromServer(address); } } }; diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Checkout/frontend/js/model/cart/totals-processor/default.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Checkout/frontend/js/model/cart/totals-processor/default.test.js index 47518bef19e56..184118f1d02ec 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/Checkout/frontend/js/model/cart/totals-processor/default.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/Checkout/frontend/js/model/cart/totals-processor/default.test.js @@ -113,6 +113,8 @@ define([ }); it('estimateTotals if data wasn\'t cached and request was successfully sent', function () { + var deferral = new $.Deferred(); + spyOn(mocks['Magento_Checkout/js/model/cart/cache'], 'isChanged').and.returnValue(true); spyOn(mocks['Magento_Customer/js/customer-data'], 'get').and.returnValue( ko.observable({ @@ -124,9 +126,9 @@ define([ data.shippingMethodCode = mocks['Magento_Checkout/js/model/quote'].shippingMethod()['method_code']; data.shippingCarrierCode = mocks['Magento_Checkout/js/model/quote'].shippingMethod()['carrier_code']; - return new $.Deferred().resolve(result); + return deferral.resolve(result); }); - expect(defaultProcessor.estimateTotals(address)).toBeUndefined(); + expect(defaultProcessor.estimateTotals(address)).toBe(deferral); expect(mocks['Magento_Checkout/js/model/quote'].setTotals).toHaveBeenCalledWith(totals); expect(mocks['Magento_Checkout/js/model/totals'].isLoading.calls.argsFor(0)[0]).toBe(true); expect(mocks['Magento_Checkout/js/model/totals'].isLoading.calls.argsFor(1)[0]).toBe(false); @@ -136,6 +138,8 @@ define([ }); it('estimateTotals if data wasn\'t cached and request returns error', function () { + var deferral = new $.Deferred(); + spyOn(mocks['Magento_Checkout/js/model/cart/cache'], 'isChanged').and.returnValue(true); spyOn(mocks['Magento_Customer/js/customer-data'], 'get').and.returnValue( ko.observable({ @@ -144,9 +148,9 @@ define([ ); spyOn(mocks['Magento_Checkout/js/model/cart/cache'], 'get'); spyOn(mocks['mage/storage'], 'post').and.callFake(function () { - return new $.Deferred().reject('Error Message'); + return deferral.reject('Error Message'); }); - expect(defaultProcessor.estimateTotals(address)).toBeUndefined(); + expect(defaultProcessor.estimateTotals(address)).toBe(deferral); expect(mocks['Magento_Checkout/js/model/totals'].isLoading.calls.argsFor(0)[0]).toBe(true); expect(mocks['Magento_Checkout/js/model/totals'].isLoading.calls.argsFor(1)[0]).toBe(false); expect(mocks['mage/storage'].post).toHaveBeenCalled();