Make set_original_heading_id task idempotent

This way there'll be no side effects if accidentally executed on data
already having the `original_heading_id`.
This commit is contained in:
Javi Martín
2019-10-08 03:24:00 +02:00
parent acbad38749
commit 4fad6f16f6
2 changed files with 17 additions and 1 deletions

View File

@@ -3,6 +3,7 @@ require "rails_helper"
describe Budget do
let(:run_rake_task) do
Rake::Task["budgets:set_original_heading_id"].reenable
Rake.application.invoke_task("budgets:set_original_heading_id")
end
@@ -19,4 +20,17 @@ describe Budget do
expect(investment.original_heading_id).to equal(heading.id)
end
it "does not overwrite original_heading_id when already present" do
original_heading = create(:budget_heading)
new_heading = create(:budget_heading)
investment = create(:budget_investment, heading: original_heading)
investment.update(heading: new_heading)
expect(investment.original_heading_id).to eq original_heading.id
run_rake_task
investment.reload
expect(investment.original_heading_id).to eq original_heading.id
end
end