diff --git a/app/jobs/refresh_products_cache_job.rb b/app/jobs/refresh_products_cache_job.rb new file mode 100644 index 0000000000..be7fccfb86 --- /dev/null +++ b/app/jobs/refresh_products_cache_job.rb @@ -0,0 +1,15 @@ +require 'open_food_network/products_renderer' + +RefreshProductsCacheJob = Struct.new(:distributor_id, :order_cycle_id) do + def perform + Rails.cache.write "products-json-#{distributor_id}-#{order_cycle_id}", products_json + end + + + private + + def products_json + OpenFoodNetwork::ProductsRenderer.new(distributor_id, order_cycle_id).products_json + end + +end diff --git a/spec/jobs/refresh_products_cache_job_spec.rb b/spec/jobs/refresh_products_cache_job_spec.rb new file mode 100644 index 0000000000..bf70e33e28 --- /dev/null +++ b/spec/jobs/refresh_products_cache_job_spec.rb @@ -0,0 +1,15 @@ +require 'spec_helper' +require 'open_food_network/products_renderer' + +describe RefreshProductsCacheJob do + let(:distributor_id) { 123 } + let(:order_cycle_id) { 456 } + + it "renders products and writes them to cache" do + OpenFoodNetwork::ProductsRenderer.any_instance.stub(:products_json) { 'products' } + + run_job RefreshProductsCacheJob.new distributor_id, order_cycle_id + + expect(Rails.cache.read("products-json-123-456")).to eq 'products' + end +end