From 093004a460f418d1cc03e338e68f41bb6c60aa9a Mon Sep 17 00:00:00 2001 From: Will Marshall Date: Wed, 9 Apr 2014 15:40:02 +1000 Subject: [PATCH] Clearing the cart when order cycle is changed --- app/models/spree/order_decorator.rb | 1 + spec/models/spree/order_spec.rb | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/models/spree/order_decorator.rb b/app/models/spree/order_decorator.rb index 40c06c3132..ccc827ec57 100644 --- a/app/models/spree/order_decorator.rb +++ b/app/models/spree/order_decorator.rb @@ -85,6 +85,7 @@ Spree::Order.class_eval do def set_order_cycle!(order_cycle) self.order_cycle = order_cycle self.distributor = nil unless order_cycle.nil? || order_cycle.has_distributor?(distributor) + self.empty! save! end diff --git a/spec/models/spree/order_spec.rb b/spec/models/spree/order_spec.rb index 18ad347dc2..bbdb6e22b9 100644 --- a/spec/models/spree/order_spec.rb +++ b/spec/models/spree/order_spec.rb @@ -181,14 +181,19 @@ describe Spree::Order do end describe "setting the order cycle" do + let(:oc) { create(:simple_order_cycle) } + + it "empties the cart when changing the order cycle" do + subject.should_receive(:empty!) + subject.set_order_cycle! oc + end + it "sets the order cycle when no distributor is set" do - oc = create(:simple_order_cycle) subject.set_order_cycle! oc subject.order_cycle.should == oc end it "keeps the distributor when it is available in the new order cycle" do - oc = create(:simple_order_cycle) d = create(:distributor_enterprise) create(:exchange, order_cycle: oc, sender: oc.coordinator, receiver: d, incoming: false) @@ -200,7 +205,6 @@ describe Spree::Order do end it "clears the distributor if it is not available at that order cycle" do - oc = create(:simple_order_cycle) d = create(:distributor_enterprise) subject.distributor = d @@ -211,7 +215,6 @@ describe Spree::Order do end it "clears the order cycle when setting to nil" do - oc = create(:simple_order_cycle) d = create(:distributor_enterprise) subject.set_order_cycle! oc subject.distributor = d