From 27b5dc071a67d83bc3725acfd61f90f1c5ab7d2e Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Mon, 17 Jun 2013 14:58:13 +1000 Subject: [PATCH] Order cycle reports on the variants distributed by a particular distributor --- app/models/order_cycle.rb | 5 +++++ spec/models/order_cycle_spec.rb | 17 ++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/app/models/order_cycle.rb b/app/models/order_cycle.rb index 45736b2359..bec4f911db 100644 --- a/app/models/order_cycle.rb +++ b/app/models/order_cycle.rb @@ -36,6 +36,11 @@ class OrderCycle < ActiveRecord::Base self.exchanges.where(:sender_id => self.coordinator).map(&:variants).flatten.uniq end + def distributed_variants_by(distributor) + self.exchanges.where(:sender_id => self.coordinator, :receiver_id => distributor). + map(&:variants).flatten.uniq + end + def products self.variants.map(&:product).uniq end diff --git a/spec/models/order_cycle_spec.rb b/spec/models/order_cycle_spec.rb index ee55c70b74..77e03d0bb9 100644 --- a/spec/models/order_cycle_spec.rb +++ b/spec/models/order_cycle_spec.rb @@ -103,12 +103,15 @@ describe OrderCycle do before(:each) do @oc = create(:simple_order_cycle) + @d1 = create(:enterprise) + @d2 = create(:enterprise) + e0 = create(:exchange, order_cycle: @oc, sender: create(:enterprise), receiver: @oc.coordinator) e1 = create(:exchange, - order_cycle: @oc, sender: @oc.coordinator, receiver: create(:enterprise)) + order_cycle: @oc, sender: @oc.coordinator, receiver: @d1) e2 = create(:exchange, - order_cycle: @oc, sender: @oc.coordinator, receiver: create(:enterprise)) + order_cycle: @oc, sender: @oc.coordinator, receiver: @d2) @p0 = create(:product) @p1 = create(:product) @@ -122,15 +125,19 @@ describe OrderCycle do e2.variants << @p1.master end - it "reports on the variants exchanged in the order cycle" do + it "reports on the variants exchanged" do @oc.variants.sort.should == [@p0.master, @p1.master, @p2.master, @p2_v].sort end - it "reports on the variants distributed in the order cycle" do + it "reports on the variants distributed" do @oc.distributed_variants.sort.should == [@p1.master, @p2.master, @p2_v].sort end - it "reports on the products exchanged in the order cycle" do + it "reports on the variants distributed by a particular distributor" do + @oc.distributed_variants_by(@d2).should == [@p1.master] + end + + it "reports on the products exchanged" do @oc.products.sort.should == [@p0, @p1, @p2] end end