Do not merge current and incomplete orders when logging in - fixes #20

This commit is contained in:
Rohan Mitchell
2013-08-14 10:44:02 +10:00
parent 8ff749d0eb
commit 5fac29d2ed
2 changed files with 23 additions and 48 deletions

View File

@@ -27,9 +27,25 @@ describe Spree::HomeController do
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, order_cycle: 3)
current_order = double(:order, distributor: 2, order_cycle: 3)
it "loads the incomplete order when there is no current order" do
incomplete_order = double(:order, id: 1, distributor: 2, order_cycle: 3)
current_order = nil
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).never
incomplete_order.should_receive(:merge!).never
session[:order_id] = nil
spree_get :index
session[:order_id].should == incomplete_order.id
end
it "destroys the incomplete order when there is a current order" do
incomplete_order = double(:order, distributor: 1, order_cycle: 1)
current_order = double(:order, distributor: 1, order_cycle: 1)
user = double(:user, last_incomplete_spree_order: incomplete_order)
controller.stub(:try_spree_current_user).and_return(user)
@@ -43,39 +59,5 @@ describe Spree::HomeController do
spree_get :index
end
it "does not attempt to merge incomplete and current orders when they have differing order cycles" do
incomplete_order = double(:order, distributor: 1, order_cycle: 2)
current_order = double(:order, distributor: 1, order_cycle: 3)
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)
incomplete_order.should_receive(:merge!).never
current_order.should_receive(:merge!).never
session[:order_id] = 123
spree_get :index
end
it "sets the distributor and order cycle when the target order does not have these" do
incomplete_order = double(:order, distributor: 1, order_cycle: 2)
current_order = double(:order, distributor: nil, order_cycle: nil)
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)
current_order.should_receive(:set_order_cycle!).with(2)
current_order.should_receive(:merge!)
session[:order_id] = 123
spree_get :index
end
end
end