Skip to content

Commit

Permalink
BaseController does not attempt to merge incomplete and current order…
Browse files Browse the repository at this point in the history
…s when they have differing distributors
  • Loading branch information
RohanM committed Oct 1, 2012
1 parent bc408d8 commit 27b7d59
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
20 changes: 20 additions & 0 deletions app/controllers/spree/base_controller_decorator.rb
@@ -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
18 changes: 18 additions & 0 deletions spec/controllers/home_controller_spec.rb
Expand Up @@ -25,4 +25,22 @@
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

0 comments on commit 27b7d59

Please sign in to comment.