diff --git a/lib/open_food_network/permissions.rb b/lib/open_food_network/permissions.rb index 2ea099c07c..b917d1fc7d 100644 --- a/lib/open_food_network/permissions.rb +++ b/lib/open_food_network/permissions.rb @@ -20,6 +20,11 @@ module OpenFoodNetwork managed_and_related_enterprises_with :edit_profile end + def variant_override_producers + producer_ids = variant_override_enterprises_per_hub.values.flatten.uniq + Enterprise.where(id: producer_ids) + end + # For every hub that an admin manages, show all the producers for which that hub may # override variants # {hub1_id => [producer1_id, producer2_id, ...], ...} diff --git a/spec/lib/open_food_network/permissions_spec.rb b/spec/lib/open_food_network/permissions_spec.rb index edb87b8379..f28956d34b 100644 --- a/spec/lib/open_food_network/permissions_spec.rb +++ b/spec/lib/open_food_network/permissions_spec.rb @@ -34,6 +34,19 @@ module OpenFoodNetwork end end + describe "finding all producers for which we can create variant overrides" do + let(:e1) { create(:supplier_enterprise) } + let(:e2) { create(:supplier_enterprise) } + + it "compiles the list from variant_override_enterprises_per_hub" do + permissions.stub(:variant_override_enterprises_per_hub) do + {1 => [e1.id], 2 => [e1.id, e2.id]} + end + + permissions.variant_override_producers.sort.should == [e1, e2].sort + end + end + describe "finding enterprises for which variant overrides can be created, for each hub" do let!(:hub) { create(:distributor_enterprise) } let!(:producer) { create(:supplier_enterprise) }