Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow to run etl:rerun_main for a single date #2148

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions lib/tasks/etl.rake
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,13 @@ namespace :etl do
end
end

desc "Run ETL Main process across a range of dates"
desc "Run ETL Main process across a range of dates or a single date"
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")
Expand Down
25 changes: 17 additions & 8 deletions spec/tasks/etl_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -92,26 +92,35 @@
end

before do
edition = create :edition, date: "2018-10-03"
create :metric, edition:, date: "2018-10-30"
create :metric, edition:, date: "2018-10-31"
create :metric, edition:, date: "2018-11-01"
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-08-22")

expect(processor).to have_received(:process).once.with(Date.new(2018, 8, 22))
end

# it "runs the aggregations process for a month" do
# Rake::Task["etl:rerun_main"].invoke("2018-08-23")

# expect(processor).to have_received(:process_aggregations).once.with(Date.new(2018, 8, 23))
# end
end
end
Loading