diff --git a/lib/open_food_network/cached_products_renderer.rb b/lib/open_food_network/cached_products_renderer.rb index eef3d000b2..2174bf4094 100644 --- a/lib/open_food_network/cached_products_renderer.rb +++ b/lib/open_food_network/cached_products_renderer.rb @@ -14,6 +14,8 @@ module OpenFoodNetwork end def products_json + raise NoProducts.new if @distributor.nil? || @order_cycle.nil? + products_json = Rails.cache.fetch("products-json-#{@distributor.id}-#{@order_cycle.id}") do log_warning diff --git a/spec/lib/open_food_network/cached_products_renderer_spec.rb b/spec/lib/open_food_network/cached_products_renderer_spec.rb index a203d66c1d..03b0ab05d5 100644 --- a/spec/lib/open_food_network/cached_products_renderer_spec.rb +++ b/spec/lib/open_food_network/cached_products_renderer_spec.rb @@ -8,6 +8,14 @@ module OpenFoodNetwork let(:order_cycle) { double(:order_cycle, id: 456) } let(:cpr) { CachedProductsRenderer.new(distributor, order_cycle) } + describe "when the distribution is not set" do + let(:cpr) { CachedProductsRenderer.new(nil, nil) } + + it "raises an exception and returns no products" do + expect { cpr.products_json }.to raise_error CachedProductsRenderer::NoProducts + end + end + describe "when the products JSON is already cached" do before do Rails.cache.write "products-json-#{distributor.id}-#{order_cycle.id}", 'products'