From 7414047b924eb0cf241b7ceb108f88ddd8468a0c Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Fri, 10 Apr 2020 12:21:42 +0100 Subject: [PATCH] Switch from old success/error to modern then/catch structure Catch() will get a few more errors then errors() Also, add try/catch inside catch to detect any errors parsing the response error payload --- .../darkswarm/services/checkout.js.coffee | 22 +++++++++++-------- .../services/checkout_spec.js.coffee | 1 + 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/darkswarm/services/checkout.js.coffee b/app/assets/javascripts/darkswarm/services/checkout.js.coffee index 83cf018365..890d45c2e5 100644 --- a/app/assets/javascripts/darkswarm/services/checkout.js.coffee +++ b/app/assets/javascripts/darkswarm/services/checkout.js.coffee @@ -14,15 +14,19 @@ Darkswarm.factory 'Checkout', ($injector, CurrentOrder, ShippingMethods, StripeE submit: => Loading.message = t 'submitting_order' - $http.put('/checkout.json', {order: @preprocess()}).success (data, status)=> - Navigation.go data.path - .error (response, status)=> - if response.path - Navigation.go response.path - else - Loading.clear() - @errors = response.errors - RailsFlashLoader.loadFlash(response.flash) + $http.put('/checkout.json', {order: @preprocess()}) + .then (response) => + Navigation.go response.data.path + .catch (response) => + try + if response.data.path + Navigation.go response.data.path + else + Loading.clear() + @errors = response.data.errors + RailsFlashLoader.loadFlash(response.data.flash) + catch error + RailsFlashLoader.loadFlash("Unkown error occurred") # Rails wants our Spree::Address data to be provided with _attributes preprocess: -> diff --git a/spec/javascripts/unit/darkswarm/services/checkout_spec.js.coffee b/spec/javascripts/unit/darkswarm/services/checkout_spec.js.coffee index 4ff2f0d97a..6b1b7d6e40 100644 --- a/spec/javascripts/unit/darkswarm/services/checkout_spec.js.coffee +++ b/spec/javascripts/unit/darkswarm/services/checkout_spec.js.coffee @@ -119,6 +119,7 @@ describe 'Checkout service', -> it "puts errors into the scope", -> $httpBackend.expectPUT("/checkout.json").respond 400, {errors: {error: "frogs"}} Checkout.submit() + $httpBackend.flush() expect(Checkout.errors).toEqual {error: "frogs"}