When looking up distributors for sidebar, include both those in ProductDistributions and in OrderCycles

This commit is contained in:
Rohan Mitchell
2013-02-20 11:25:24 +11:00
parent 1285d507eb
commit 265336b70c
3 changed files with 35 additions and 1 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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