From beb6110bc3271eb473928565856db42a13cf5bab Mon Sep 17 00:00:00 2001 From: Will Marshall Date: Thu, 21 Nov 2013 14:53:17 +1100 Subject: [PATCH] Fixing up a bug in the aggregate filtering --- .../products_and_inventory_report.rb | 4 +++- .../products_and_inventory_report_spec.rb | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/open_food_network/products_and_inventory_report.rb b/lib/open_food_network/products_and_inventory_report.rb index 32771ba425..71cc4266ef 100644 --- a/lib/open_food_network/products_and_inventory_report.rb +++ b/lib/open_food_network/products_and_inventory_report.rb @@ -42,7 +42,9 @@ module OpenFoodNetwork end def filter(variants) - filter_on_hand filter_to_supplier filter_to_distributor filter_to_order_cycle variants + # NOTE: Ordering matters. + # filter_to_order_cycle and filter_to_distributor return Arrays not Arel + filter_to_distributor filter_to_order_cycle filter_on_hand filter_to_supplier variants end def filter_on_hand(variants) diff --git a/spec/lib/open_food_network/products_and_inventory_report_spec.rb b/spec/lib/open_food_network/products_and_inventory_report_spec.rb index fd67afe1f3..514dfd0ac1 100644 --- a/spec/lib/open_food_network/products_and_inventory_report_spec.rb +++ b/spec/lib/open_food_network/products_and_inventory_report_spec.rb @@ -130,6 +130,20 @@ module OpenFoodNetwork subject.stub(:params).and_return(order_cycle_id: order_cycle.id) subject.filter(variants).should == [product1.master] end + + it "should do all the filters at once" do + distributor = create(:distributor_enterprise) + product1 = create(:simple_product, supplier: supplier, distributors: [distributor]) + product2 = create(:simple_product, supplier: supplier, distributors: [distributor]) + order_cycle = create(:simple_order_cycle, suppliers: [supplier], distributors: [distributor], variants: [product1.master]) + + subject.stub(:params).and_return( + order_cycle_id: order_cycle.id, + supplier_id: supplier.id, + distributor_id: distributor.id, + report_type: 'inventory') + subject.filter(variants) + end end end end