From e9acf6e0de026f4fd8e500512173dfa811cbb8be Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Sun, 29 Sep 2019 14:14:52 +0100 Subject: [PATCH] Refactor #load_products and memoize --- lib/open_food_network/products_renderer.rb | 10 ++++------ spec/lib/open_food_network/products_renderer_spec.rb | 4 ++-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/lib/open_food_network/products_renderer.rb b/lib/open_food_network/products_renderer.rb index 3de2177d3b..4c2e876c08 100644 --- a/lib/open_food_network/products_renderer.rb +++ b/lib/open_food_network/products_renderer.rb @@ -10,12 +10,10 @@ module OpenFoodNetwork end def products_json - products = load_products - - if products + if shop_products enterprise_fee_calculator = EnterpriseFeeCalculator.new @distributor, @order_cycle - ActiveModel::ArraySerializer.new(products, + ActiveModel::ArraySerializer.new(shop_products, each_serializer: Api::ProductSerializer, current_order_cycle: @order_cycle, current_distributor: @distributor, @@ -29,10 +27,10 @@ module OpenFoodNetwork private - def load_products + def shop_products return unless @order_cycle - ShopProductsService.new(@distributor, @order_cycle).relation. + @shop_products ||= ShopProductsService.new(@distributor, @order_cycle).relation. order(taxon_order). each { |product| scoper.scope(product) } end diff --git a/spec/lib/open_food_network/products_renderer_spec.rb b/spec/lib/open_food_network/products_renderer_spec.rb index e7ee727c41..1c970443d0 100644 --- a/spec/lib/open_food_network/products_renderer_spec.rb +++ b/spec/lib/open_food_network/products_renderer_spec.rb @@ -25,13 +25,13 @@ module OpenFoodNetwork it "sorts products by the distributor's preferred taxon list" do allow(distributor).to receive(:preferred_shopfront_taxon_order) { "#{t1.id},#{t2.id}" } - products = pr.send(:load_products) + products = pr.send(:shop_products) expect(products).to eq([p2, p4, p1, p3]) end it "alphabetizes products by name when taxon list is not set" do allow(distributor).to receive(:preferred_shopfront_taxon_order) { "" } - products = pr.send(:load_products) + products = pr.send(:shop_products) expect(products).to eq([p1, p2, p3, p4]) end end