Test #supplied_properties helper methods

This commit is contained in:
Pau Perez
2018-11-26 13:54:41 +01:00
parent 23f629cfd6
commit bc7258d43b
2 changed files with 44 additions and 4 deletions

View File

@@ -74,11 +74,16 @@ class Api::CachedEnterpriseSerializer < ActiveModel::Serializer
ids_to_objs options[:data].supplied_taxons[object.id]
end
def supplied_properties
# This results in 3 queries per enterprise
product_properties = Spree::Property.applied_by(object)
producer_properties = object.properties
def product_properties
Spree::Property.applied_by(object)
end
def producer_properties
enterprise.properties
end
# This results in 3 queries per enterprise
def supplied_properties
OpenFoodNetwork::PropertyMerge.merge product_properties, producer_properties
end
@@ -140,4 +145,10 @@ class Api::CachedEnterpriseSerializer < ActiveModel::Serializer
}
icon_fonts[object.category]
end
private
def enterprise
object
end
end

View File

@@ -0,0 +1,29 @@
require 'spec_helper'
describe Api::CachedEnterpriseSerializer do
let(:cached_enterprise_serializer) { described_class.new(enterprise) }
let(:enterprise) { create(:enterprise) }
describe '#product_properties' do
let(:property) { create(:property) }
before do
product = create(:product, properties: [property])
enterprise.supplied_products << product
end
it 'returns the properties of the products supplied by the enterprise' do
expect(cached_enterprise_serializer.product_properties).to eq([property])
end
end
describe '#producer_properties' do
let(:property) { create(:property) }
before { enterprise.properties << property }
it 'returns the properties of the enterprise' do
expect(cached_enterprise_serializer.producer_properties).to eq([property])
end
end
end