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