From 3be437485aa3b67b217ffd9fd060bdd2d7d1c4f7 Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Thu, 11 Dec 2014 14:53:11 +1100 Subject: [PATCH] Redirecting any spree checkout_state redirects to our checkout controller --- .../spree/checkout_controller_decorator.rb | 7 ++++++- .../controllers/spree/checkout_controller_spec.rb | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/app/controllers/spree/checkout_controller_decorator.rb b/app/controllers/spree/checkout_controller_decorator.rb index 5f6f7826e1..061599870f 100644 --- a/app/controllers/spree/checkout_controller_decorator.rb +++ b/app/controllers/spree/checkout_controller_decorator.rb @@ -2,6 +2,11 @@ Spree::CheckoutController.class_eval do include CheckoutHelper + def edit + flash.keep + redirect_to main_app.checkout_path + end + private def before_payment @@ -18,7 +23,7 @@ Spree::CheckoutController.class_eval do preferred_bill_address, preferred_ship_address = spree_current_user.bill_address, spree_current_user.ship_address if spree_current_user.respond_to?(:bill_address) && spree_current_user.respond_to?(:ship_address) @order.bill_address ||= preferred_bill_address || last_used_bill_address || Spree::Address.default - @order.ship_address ||= preferred_ship_address || last_used_ship_address || nil + @order.ship_address ||= preferred_ship_address || last_used_ship_address || nil end def after_complete diff --git a/spec/controllers/spree/checkout_controller_spec.rb b/spec/controllers/spree/checkout_controller_spec.rb index 08817a01b9..b9b85c92fa 100644 --- a/spec/controllers/spree/checkout_controller_spec.rb +++ b/spec/controllers/spree/checkout_controller_spec.rb @@ -1,8 +1,11 @@ require 'spec_helper' require 'spree/api/testing_support/helpers' +require 'support/request/authentication_workflow' describe Spree::CheckoutController do + include AuthenticationWorkflow + context "After completing an order" do it "should create a new empty order" do controller.current_order(true) @@ -34,6 +37,18 @@ describe Spree::CheckoutController do controller.current_order.token.should == order.token session[:access_token].should == order.token end + end + context "rendering edit from within spree for the current checkout state" do + let!(:order) { controller.current_order(true) } + let!(:line_item) { create(:line_item, order: order) } + let!(:user) { create_enterprise_user } + + it "redirects to the OFN checkout page" do + controller.stub(:skip_state_validation?) { true } + controller.stub(:spree_current_user) { user } + spree_get :edit + response.should redirect_to checkout_path + end end end