diff --git a/app/models/exchange.rb b/app/models/exchange.rb index fe7f04933c..8ad87d5302 100644 --- a/app/models/exchange.rb +++ b/app/models/exchange.rb @@ -17,4 +17,5 @@ class Exchange < ActiveRecord::Base scope :incoming, joins(:order_cycle).where('exchanges.receiver_id = order_cycles.coordinator_id') scope :outgoing, joins(:order_cycle).where('exchanges.sender_id = order_cycles.coordinator_id') + scope :with_variant, lambda { |variant| joins(:exchange_variants).where('exchange_variants.variant_id = ?', variant) } end diff --git a/spec/models/exchange_spec.rb b/spec/models/exchange_spec.rb index 523ee23e5e..ff3829ec67 100644 --- a/spec/models/exchange_spec.rb +++ b/spec/models/exchange_spec.rb @@ -60,5 +60,13 @@ describe Exchange do it "finds outgoing exchanges" do Exchange.outgoing.should == [outgoing_exchange] end + + it "finds exchanges with a particular variant" do + v = create(:variant) + ex = create(:exchange) + ex.variants << v + + Exchange.with_variant(v).should == [ex] + end end end