From 265336b70cee7f3a69ee8f78bc6f1133af2bec35 Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Wed, 20 Feb 2013 11:25:24 +1100 Subject: [PATCH] When looking up distributors for sidebar, include both those in ProductDistributions and in OrderCycles --- app/controllers/application_controller.rb | 2 +- .../queries_product_distribution.rb | 19 +++++++++++++++++++ .../queries_product_distribution_spec.rb | 15 +++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 lib/open_food_web/queries_product_distribution.rb create mode 100644 spec/lib/open_food_web/queries_product_distribution_spec.rb diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 1fcf2bb7b2..ef345ba390 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -12,7 +12,7 @@ class ApplicationController < ActionController::Base def load_data_for_sidebar @suppliers = Enterprise.is_primary_producer @order_cycles = OrderCycle.active - @distributors = @order_cycles.map { |oc| oc.distributors }.flatten.uniq + @distributors = QueriesProductDistribution.active_distributors end # All render calls within the block will be performed with the specified format diff --git a/lib/open_food_web/queries_product_distribution.rb b/lib/open_food_web/queries_product_distribution.rb new file mode 100644 index 0000000000..fe5f73d522 --- /dev/null +++ b/lib/open_food_web/queries_product_distribution.rb @@ -0,0 +1,19 @@ +module OpenFoodWeb + class QueriesProductDistribution + def self.active_distributors + (active_distributors_for_product_distributions + active_distributors_for_order_cycles).sort_by { |d| d.name }.uniq + end + + + private + + def self.active_distributors_for_product_distributions + Enterprise.is_distributor.with_distributed_active_products_on_hand.by_name + end + + def self.active_distributors_for_order_cycles + OrderCycle.active.map { |oc| oc.distributors }.flatten.uniq + end + + end +end diff --git a/spec/lib/open_food_web/queries_product_distribution_spec.rb b/spec/lib/open_food_web/queries_product_distribution_spec.rb new file mode 100644 index 0000000000..b13de2f2dd --- /dev/null +++ b/spec/lib/open_food_web/queries_product_distribution_spec.rb @@ -0,0 +1,15 @@ +require 'open_food_web/queries_product_distribution' + +module OpenFoodWeb + describe QueriesProductDistribution do + it "fetches active distributors" do + d1 = double(:distributor_a, name: 'a') + d2 = double(:distributor_b, name: 'b') + d3 = double(:distributor_c, name: 'c') + + QueriesProductDistribution.should_receive(:active_distributors_for_product_distributions).and_return([d1, d3]) + QueriesProductDistribution.should_receive(:active_distributors_for_order_cycles).and_return([d1, d2]) + QueriesProductDistribution.active_distributors.should == [d1, d2, d3] + end + end +end