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