BaseController does not attempt to merge incomplete and current orders when they have differing distributors

This commit is contained in:
Rohan Mitchell
2012-10-02 09:44:51 +10:00
parent bc408d8b6e
commit 27b7d59f46
2 changed files with 38 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
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
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 &&
(current_order.distributor.nil? || current_order.distributor == last_incomplete_order.distributor)
current_order.merge!(last_incomplete_order)
end
end
end
end
end
end

View File

@@ -25,4 +25,22 @@ describe Spree::HomeController do
assigns(:products_local).should == [p1]
assigns(:products_remote).should == [p2]
end
context "BaseController: merging incomplete orders" do
it "does not attempt to merge incomplete and current orders when they have differing distributors" 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)
controller.stub(:current_order).and_return(current_order)
incomplete_order.should_receive(:merge!).never
current_order.should_receive(:merge!).never
session[:order_id] = 123
spree_get :index
end
end
end