From 01036ec7309738f67939ae725770bb1d6f40d007 Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Fri, 27 Sep 2013 14:11:12 +1000 Subject: [PATCH] Add LineItem#supplied_by scope, fixes orders and fulfillment report supplier filtering --- app/models/spree/line_item_decorator.rb | 5 +++++ spec/models/line_item_spec.rb | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/app/models/spree/line_item_decorator.rb b/app/models/spree/line_item_decorator.rb index b99ca31dd1..32e54b6175 100644 --- a/app/models/spree/line_item_decorator.rb +++ b/app/models/spree/line_item_decorator.rb @@ -13,4 +13,9 @@ Spree::LineItem.class_eval do select('spree_line_items.*') end } + + scope :supplied_by, lambda { |enterprise| + joins(:product). + where('spree_products.supplier_id = ?', enterprise) + } end diff --git a/spec/models/line_item_spec.rb b/spec/models/line_item_spec.rb index b238500b8e..1486b92aeb 100644 --- a/spec/models/line_item_spec.rb +++ b/spec/models/line_item_spec.rb @@ -2,5 +2,22 @@ require 'spec_helper' module Spree describe LineItem do + describe "scopes" do + it "finds line items for products supplied by a particular enterprise" do + o = create(:order) + + s1 = create(:supplier_enterprise) + s2 = create(:supplier_enterprise) + + p1 = create(:simple_product, supplier: s1) + p2 = create(:simple_product, supplier: s2) + + li1 = create(:line_item, order: o, product: p1) + li2 = create(:line_item, order: o, product: p2) + + LineItem.supplied_by(s1).should == [li1] + LineItem.supplied_by(s2).should == [li2] + end + end end end