From 3b28981400fa8eccc1bf16f6c945622313b4e30e Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Wed, 23 Jul 2014 14:54:09 +1000 Subject: [PATCH] Adapt cancel redirect for better spree paypal express --- app/controllers/checkout_controller.rb | 8 -------- app/controllers/spree/paypal_controller_decorator.rb | 6 ++++++ spec/controllers/checkout_controller_spec.rb | 7 +------ spec/controllers/spree/paypal_controller_spec.rb | 10 ++++++++++ 4 files changed, 17 insertions(+), 14 deletions(-) create mode 100644 app/controllers/spree/paypal_controller_decorator.rb create mode 100644 spec/controllers/spree/paypal_controller_spec.rb diff --git a/app/controllers/checkout_controller.rb b/app/controllers/checkout_controller.rb index 77137f5940..dabc6b47c9 100644 --- a/app/controllers/checkout_controller.rb +++ b/app/controllers/checkout_controller.rb @@ -141,12 +141,4 @@ class CheckoutController < Spree::CheckoutController render json: {path: main_app.paypal_payment_url(@order, :payment_method_id => payment_method.id)}, status: 200 true end - - # Overriding to customize the cancel url - def order_opts_with_new_cancel_return_url(order, payment_method_id, stage) - opts = order_opts_without_new_cancel_return_url(order, payment_method_id, stage) - opts[:cancel_return_url] = main_app.checkout_url - opts - end - alias_method_chain :order_opts, :new_cancel_return_url end diff --git a/app/controllers/spree/paypal_controller_decorator.rb b/app/controllers/spree/paypal_controller_decorator.rb new file mode 100644 index 0000000000..25f5b50cf3 --- /dev/null +++ b/app/controllers/spree/paypal_controller_decorator.rb @@ -0,0 +1,6 @@ +Spree::PaypalController.class_eval do + def cancel + flash[:notice] = t('flash.cancel', :scope => 'paypal') + redirect_to main_app.checkout_path + end +end diff --git a/spec/controllers/checkout_controller_spec.rb b/spec/controllers/checkout_controller_spec.rb index e46b9688a2..86e9689aa2 100644 --- a/spec/controllers/checkout_controller_spec.rb +++ b/spec/controllers/checkout_controller_spec.rb @@ -108,7 +108,7 @@ describe CheckoutController do end describe "Paypal routing" do - let(:payment_method) { create(:payment_method, type: "Spree::BillingIntegration::PaypalExpress") } + let(:payment_method) { create(:payment_method, type: "Spree::Gateway::PayPalExpress") } before do controller.stub(:current_distributor).and_return(distributor) controller.stub(:current_order_cycle).and_return(order_cycle) @@ -121,10 +121,5 @@ describe CheckoutController do order.stub(:state).and_return "payment" spree_post :update, order: {payments_attributes: [{payment_method_id: payment_method.id}]} end - - it "should override the cancel return url" do - controller.stub(:params).and_return({payment_method_id: payment_method.id}) - controller.send(:order_opts, order, payment_method.id, 'payment')[:cancel_return_url].should == checkout_url - end end end diff --git a/spec/controllers/spree/paypal_controller_spec.rb b/spec/controllers/spree/paypal_controller_spec.rb new file mode 100644 index 0000000000..200f4a9ff1 --- /dev/null +++ b/spec/controllers/spree/paypal_controller_spec.rb @@ -0,0 +1,10 @@ +require 'spec_helper' + +module Spree + describe PaypalController do + it "should redirect back to checkout after cancel" do + spree_get :cancel + response.should redirect_to checkout_path + end + end +end