diff --git a/lib/tasks/etl.rake b/lib/tasks/etl.rake index b40b65e53..0bea177fd 100644 --- a/lib/tasks/etl.rake +++ b/lib/tasks/etl.rake @@ -83,9 +83,10 @@ namespace :etl do desc "Run ETL Main process across a range of dates" task :rerun_main, %i[from to] => [:environment] do |_t, args| from = args[:from].to_date - to = args[:to].to_date + to = args[:to]&.to_date date_range = (from..to) - date_range.each do |date| + + date_range.compact.each do |date| puts "Running Etl::Main process for #{date}" unless Etl::Main::MainProcessor.process(date:) abort("Etl::Main::MainProcessor failed") diff --git a/spec/tasks/etl_spec.rb b/spec/tasks/etl_spec.rb index a807caad3..1cfc2dabd 100644 --- a/spec/tasks/etl_spec.rb +++ b/spec/tasks/etl_spec.rb @@ -99,19 +99,34 @@ create :metric, edition:, date: "2018-11-02" create :metric, edition:, date: "2018-11-03" Rake::Task["etl:rerun_main"].reenable - Rake::Task["etl:rerun_main"].invoke("2018-10-31", "2018-11-02") end - it "calls Etl::Main::MainProcessor.process with each date" do + it "calls Etl::Main::MainProcessor.process with each date when a range is provided" do + Rake::Task["etl:rerun_main"].invoke("2018-10-31", "2018-11-02") + [Date.new(2018, 10, 31), Date.new(2018, 11, 1), Date.new(2018, 11, 2)].each do |date| expect(processor).to have_received(:process).once.with(date:) end end it "runs the aggregations process for each month in the range" do + Rake::Task["etl:rerun_main"].invoke("2018-10-31", "2018-11-02") + [Date.new(2018, 10, 31), Date.new(2018, 11, 30)].each do |date| expect(processor).to have_received(:process_aggregations).once.with(date:) end end + + it "calls Etl::Main::MainProcessor.process for a single date" do + Rake::Task["etl:rerun_main"].invoke("2018-10-31") + + expect(processor).to have_received(:process).once.with(Date.new(2018, 10, 31)) + end + + it "runs the aggregations process for a month" do + Rake::Task["etl:rerun_main"].invoke("2018-10-31") + + expect(processor).to have_received(:process_aggregations).once.with(Date.new(2018, 10, 31)) + end end end