Find exchanges with any of a number of variants

This commit is contained in:
Rohan Mitchell
2014-02-26 13:49:10 +11:00
parent 5057e236a9
commit 9dec40703a
2 changed files with 10 additions and 0 deletions

View File

@@ -20,6 +20,7 @@ class Exchange < ActiveRecord::Base
scope :from_enterprises, lambda { |enterprises| where('exchanges.sender_id IN (?)', enterprises) }
scope :to_enterprises, lambda { |enterprises| where('exchanges.receiver_id IN (?)', enterprises) }
scope :with_variant, lambda { |variant| joins(:exchange_variants).where('exchange_variants.variant_id = ?', variant) }
scope :any_variant, lambda { |variants| joins(:exchange_variants).where('exchange_variants.variant_id IN (?)', variants) }
scope :with_product, lambda { |product| joins(:exchange_variants).where('exchange_variants.variant_id IN (?)', product.variants_including_master) }
def clone!(new_order_cycle)

View File

@@ -111,6 +111,15 @@ describe Exchange do
Exchange.with_variant(v).should == [ex]
end
it "finds exchanges with any of a number of variants" do
v1 = create(:variant)
v2 = create(:variant)
ex = create(:exchange)
ex.variants << v1
Exchange.any_variant([v1, v2]).should == [ex]
end
it "finds exchanges with a particular product's master variant" do
p = create(:simple_product)
ex = create(:exchange)