diff --git a/app/assets/javascripts/darkswarm/all.js.coffee b/app/assets/javascripts/darkswarm/all.js.coffee index b32228b7ad..700ca28181 100644 --- a/app/assets/javascripts/darkswarm/all.js.coffee +++ b/app/assets/javascripts/darkswarm/all.js.coffee @@ -1,5 +1,4 @@ #= require jquery2 -#= require jquery_ujs #= require jquery.ui.all # #= require angular diff --git a/app/assets/javascripts/darkswarm/controllers/credit_cards_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/credit_cards_controller.js.coffee index 72e63f4694..1b1ee5fd97 100644 --- a/app/assets/javascripts/darkswarm/controllers/credit_cards_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/credit_cards_controller.js.coffee @@ -1,4 +1,4 @@ -angular.module('Darkswarm').controller "CreditCardsCtrl", ($scope, CreditCard, CreditCards, $controller) -> +angular.module('Darkswarm').controller "CreditCardsCtrl", ($scope, $http, CreditCard, CreditCards, $controller) -> angular.extend this, $controller('FieldsetMixin', {$scope: $scope}) $scope.savedCreditCards = CreditCards.saved @@ -12,3 +12,11 @@ angular.module('Darkswarm').controller "CreditCardsCtrl", ($scope, CreditCard, C $scope.allow_name_change = true $scope.disable_fields = false + + $scope.deleteCard = (id) -> + $http( + method: "DELETE" + url: "/credit_cards/#{id}" + ).finally -> + window.location.reload() + diff --git a/app/controllers/spree/credit_cards_controller.rb b/app/controllers/spree/credit_cards_controller.rb index af52f171fb..3dfe778e81 100644 --- a/app/controllers/spree/credit_cards_controller.rb +++ b/app/controllers/spree/credit_cards_controller.rb @@ -54,10 +54,11 @@ module Spree else flash[:error] = I18n.t(:card_could_not_be_removed) end - redirect_to spree.account_path(anchor: 'cards') + + head :ok rescue Stripe::CardError flash[:error] = I18n.t(:card_could_not_be_removed) - redirect_to spree.account_path(anchor: 'cards') + head :unprocessable_entity end private diff --git a/app/views/spree/users/_saved_cards.html.haml b/app/views/spree/users/_saved_cards.html.haml index 6cb9fe3682..853642762b 100644 --- a/app/views/spree/users/_saved_cards.html.haml +++ b/app/views/spree/users/_saved_cards.html.haml @@ -12,5 +12,5 @@ %td.is-default %input{ type: 'radio', name: 'default_card', ng: { model: 'card.is_default', click: 'confirmSetDefault(card, $event)', value: "true"} } %td.actions - %a{"rel" => "nofollow", "data-method" => "delete", "ng-href" => "{{card.delete_link}}" } + %button.tiny.alert.no-margin{ "ng-click": "deleteCard(card.id)" } = t(:delete) diff --git a/app/webpacker/css/shared/variables/layout.scss b/app/webpacker/css/shared/variables/layout.scss index 69fe05af79..38070016f9 100644 --- a/app/webpacker/css/shared/variables/layout.scss +++ b/app/webpacker/css/shared/variables/layout.scss @@ -4,3 +4,6 @@ $tablet_breakpoint: 768px; $phablet_breakpoint: 640px; $mobile_breakpoint: 480px; +.no-margin { + margin: 0; +} diff --git a/spec/controllers/spree/credit_cards_controller_spec.rb b/spec/controllers/spree/credit_cards_controller_spec.rb index 15a69cbd30..2a9d5ae2ad 100644 --- a/spec/controllers/spree/credit_cards_controller_spec.rb +++ b/spec/controllers/spree/credit_cards_controller_spec.rb @@ -146,7 +146,7 @@ describe Spree::CreditCardsController, type: :controller do expect(controller).to_not receive(:destroy_at_stripe) spree_delete :destroy, params expect(flash[:error]).to eq I18n.t(:card_could_not_be_removed) - expect(response).to redirect_to spree.account_path(anchor: 'cards') + expect(response.status).to eq 200 end end @@ -178,7 +178,7 @@ describe Spree::CreditCardsController, type: :controller do it "doesn't delete the card" do expect{ spree_delete :destroy, params }.to_not change(Spree::CreditCard, :count) expect(flash[:error]).to eq I18n.t(:card_could_not_be_removed) - expect(response).to redirect_to spree.account_path(anchor: 'cards') + expect(response.status).to eq 422 end end @@ -192,7 +192,7 @@ describe Spree::CreditCardsController, type: :controller do expect{ spree_delete :destroy, params }.to change(Spree::CreditCard, :count).by(-1) expect(flash[:success]).to eq I18n.t(:card_has_been_removed, number: "x-#{card.last_digits}") - expect(response).to redirect_to spree.account_path(anchor: 'cards') + expect(response.status).to eq 200 end context "the card is the default card and there are existing authorizations for the user" do diff --git a/spec/system/consumer/account/cards_spec.rb b/spec/system/consumer/account/cards_spec.rb index 2b5538fe06..c1b1c5980a 100644 --- a/spec/system/consumer/account/cards_spec.rb +++ b/spec/system/consumer/account/cards_spec.rb @@ -90,7 +90,7 @@ describe "Credit Cards", js: true do # Allows deletion of cards within(".card#card#{default_card.id}") do - click_link I18n.t(:delete) + click_button I18n.t(:delete) end expect(page).to have_content I18n.t(:card_has_been_removed,