From c82c54873c34aafc348bc63aeff9331043b7fe3e Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Mon, 23 Mar 2020 16:23:14 +0100 Subject: [PATCH] Pluck :id when querying active distributors for serializer data --- app/serializers/api/cached_enterprise_serializer.rb | 2 +- app/serializers/api/uncached_enterprise_serializer.rb | 2 +- lib/open_food_network/enterprise_injection_data.rb | 5 +++-- spec/controllers/shops_controller_spec.rb | 2 +- spec/serializers/api/cached_enterprise_serializer_spec.rb | 4 ++-- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/app/serializers/api/cached_enterprise_serializer.rb b/app/serializers/api/cached_enterprise_serializer.rb index 26a6f351d8..05677720db 100644 --- a/app/serializers/api/cached_enterprise_serializer.rb +++ b/app/serializers/api/cached_enterprise_serializer.rb @@ -107,7 +107,7 @@ module Api end def active - data.active_distributors.andand.include? enterprise + data.active_distributor_ids.andand.include? enterprise.id end # Map svg icons. diff --git a/app/serializers/api/uncached_enterprise_serializer.rb b/app/serializers/api/uncached_enterprise_serializer.rb index bad8808533..1bbae872ba 100644 --- a/app/serializers/api/uncached_enterprise_serializer.rb +++ b/app/serializers/api/uncached_enterprise_serializer.rb @@ -9,7 +9,7 @@ module Api end def active - options[:data].active_distributors.andand.include? object + options[:data].active_distributor_ids.andand.include? object.id end end end diff --git a/lib/open_food_network/enterprise_injection_data.rb b/lib/open_food_network/enterprise_injection_data.rb index 3f23ff7a0a..8bc386b2a6 100644 --- a/lib/open_food_network/enterprise_injection_data.rb +++ b/lib/open_food_network/enterprise_injection_data.rb @@ -1,7 +1,8 @@ module OpenFoodNetwork class EnterpriseInjectionData - def active_distributors - @active_distributors ||= Enterprise.distributors_with_active_order_cycles.ready_for_checkout + def active_distributor_ids + @active_distributor_ids ||= + Enterprise.distributors_with_active_order_cycles.ready_for_checkout.pluck(:id) end def earliest_closing_times diff --git a/spec/controllers/shops_controller_spec.rb b/spec/controllers/shops_controller_spec.rb index 2cecfc2c96..023e7b0245 100644 --- a/spec/controllers/shops_controller_spec.rb +++ b/spec/controllers/shops_controller_spec.rb @@ -7,7 +7,7 @@ describe ShopsController, type: :controller do let!(:distributor) { create(:distributor_enterprise) } before do - allow(Enterprise).to receive_message_chain(:distributors_with_active_order_cycles, :ready_for_checkout) { [distributor] } + allow(OpenFoodNetwork::EnterpriseInjectionData).to receive(:active_distributor_ids) { [distributor.id] } end it 'renders distributed product properties' do diff --git a/spec/serializers/api/cached_enterprise_serializer_spec.rb b/spec/serializers/api/cached_enterprise_serializer_spec.rb index e46b0006b9..c4e5624fa8 100644 --- a/spec/serializers/api/cached_enterprise_serializer_spec.rb +++ b/spec/serializers/api/cached_enterprise_serializer_spec.rb @@ -50,7 +50,7 @@ describe Api::CachedEnterpriseSerializer do context 'when the enterprise is not an active distributor' do let(:enterprise_injection_data) do - instance_double(OpenFoodNetwork::EnterpriseInjectionData, active_distributors: []) + instance_double(OpenFoodNetwork::EnterpriseInjectionData, active_distributor_ids: []) end it 'does not duplicate properties' do @@ -69,7 +69,7 @@ describe Api::CachedEnterpriseSerializer do context 'when the enterprise is an active distributor' do let(:enterprise_injection_data) do - instance_double(OpenFoodNetwork::EnterpriseInjectionData, active_distributors: [shop]) + instance_double(OpenFoodNetwork::EnterpriseInjectionData, active_distributor_ids: [shop.id]) end it 'does not duplicate properties' do