From c956706d7844d65636d97d76320b9ef922ed2acf Mon Sep 17 00:00:00 2001 From: Rob H Date: Thu, 14 Feb 2013 15:12:50 +1100 Subject: [PATCH] Move set_current_order override to new location in lib (Spree 1.3 Upgrade), and update home controller test --- .../spree/base_controller_decorator.rb | 25 ------------------- .../controller_helpers/order_decorator.rb | 20 +++++++++++++++ spec/controllers/home_controller_spec.rb | 8 +++--- 3 files changed, 24 insertions(+), 29 deletions(-) delete mode 100644 app/controllers/spree/base_controller_decorator.rb create mode 100644 lib/spree/core/controller_helpers/order_decorator.rb diff --git a/app/controllers/spree/base_controller_decorator.rb b/app/controllers/spree/base_controller_decorator.rb deleted file mode 100644 index f745df6582..0000000000 --- a/app/controllers/spree/base_controller_decorator.rb +++ /dev/null @@ -1,25 +0,0 @@ -module Spree - BaseController.class_eval do - - # Override definition in spree/auth/app/controllers/spree/base_controller_decorator.rb - # Do not attempt to merge incomplete and current orders when they have differing distributors - # Instead, destroy the incomplete orders, otherwise they are restored after checkout, causing much confusion - def set_current_order - if current_user - if current_user.respond_to?(:last_incomplete_order) - last_incomplete_order = current_user.last_incomplete_order - if session[:order_id].nil? && last_incomplete_order - session[:order_id] = last_incomplete_order.id - elsif current_order && last_incomplete_order && current_order != last_incomplete_order - if current_order.distributor.nil? || current_order.distributor == last_incomplete_order.distributor - current_order.set_distributor! last_incomplete_order.distributor if current_order.distributor.nil? - current_order.merge!(last_incomplete_order) - else - last_incomplete_order.destroy - end - end - end - end - end - end -end diff --git a/lib/spree/core/controller_helpers/order_decorator.rb b/lib/spree/core/controller_helpers/order_decorator.rb new file mode 100644 index 0000000000..5bc52358fe --- /dev/null +++ b/lib/spree/core/controller_helpers/order_decorator.rb @@ -0,0 +1,20 @@ +Spree::Core::ControllerHelpers::Order.class_eval do + # Override definition in spree/auth/app/controllers/spree/base_controller_decorator.rb + # Do not attempt to merge incomplete and current orders when they have differing distributors + # Instead, destroy the incomplete orders, otherwise they are restored after checkout, causing much confusion + def set_current_order + if user = try_spree_current_user + last_incomplete_order = user.last_incomplete_spree_order + if session[:order_id].nil? && last_incomplete_order + session[:order_id] = last_incomplete_order.id + elsif current_order && last_incomplete_order && current_order != last_incomplete_order + if current_order.distributor.nil? || current_order.distributor == last_incomplete_order.distributor + current_order.set_distributor! last_incomplete_order.distributor if current_order.distributor.nil? + current_order.merge!(last_incomplete_order) + else + last_incomplete_order.destroy + end + end + end + end +end \ No newline at end of file diff --git a/spec/controllers/home_controller_spec.rb b/spec/controllers/home_controller_spec.rb index b52dcae435..11569269fd 100644 --- a/spec/controllers/home_controller_spec.rb +++ b/spec/controllers/home_controller_spec.rb @@ -31,8 +31,8 @@ describe Spree::HomeController do incomplete_order = double(:order, distributor: 1) current_order = double(:order, distributor: 2) - user = double(:user, last_incomplete_order: incomplete_order) - controller.stub(:current_user).and_return(user) + user = double(:user, last_incomplete_spree_order: incomplete_order) + controller.stub(:try_spree_current_user).and_return(user) controller.stub(:current_order).and_return(current_order) incomplete_order.should_receive(:destroy) @@ -48,8 +48,8 @@ describe Spree::HomeController do incomplete_order = double(:order, distributor: 1) current_order = double(:order, distributor: nil) - user = double(:user, last_incomplete_order: incomplete_order) - controller.stub(:current_user).and_return(user) + user = double(:user, last_incomplete_spree_order: incomplete_order) + controller.stub(:try_spree_current_user).and_return(user) controller.stub(:current_order).and_return(current_order) current_order.should_receive(:set_distributor!).with(1)