2 changed files with 73 additions and 0 deletions
@ -0,0 +1,6 @@
|
||||
desc "Alter ppcodenk values for non imported lettings logs in the database" |
||||
task correct_ppcodenk_values: :environment do |
||||
LettingsLog.where.not(ppcodenk: nil).find_each do |log| |
||||
log.update_columns(ppcodenk: log.ppcodenk == 1 ? 0 : 1) |
||||
end |
||||
end |
||||
@ -0,0 +1,67 @@
|
||||
require "rails_helper" |
||||
require "rake" |
||||
|
||||
RSpec.describe "correct_ppcodenk_values" do |
||||
describe ":correct_ppcodenk_values", type: :task do |
||||
subject(:task) { Rake::Task["correct_ppcodenk_values"] } |
||||
|
||||
before do |
||||
Rake.application.rake_require("tasks/correct_ppcodenk_values") |
||||
Rake::Task.define_task(:environment) |
||||
task.reenable |
||||
end |
||||
|
||||
context "when the rake task is run" do |
||||
let!(:lettings_log) { create(:lettings_log, :completed) } |
||||
|
||||
it "updates lettings logs with ppcodenk 0 to have ppcodenk 1" do |
||||
lettings_log.update!(ppcodenk: 0) |
||||
task.invoke |
||||
expect(lettings_log.reload.ppcodenk).to eq(1) |
||||
end |
||||
|
||||
it "updates lettings logs with ppcodenk 1 to have ppcodenk 0" do |
||||
lettings_log.update!(ppcodenk: 1) |
||||
task.invoke |
||||
expect(lettings_log.reload.ppcodenk).to eq(0) |
||||
end |
||||
|
||||
it "does not update lettings logs with ppcodenk nil" do |
||||
lettings_log.update!(ppcodenk: nil) |
||||
task.invoke |
||||
expect(lettings_log.reload.ppcodenk).to eq(nil) |
||||
end |
||||
|
||||
context "with multiple lettings logs" do |
||||
let(:lettings_log_2) { create(:lettings_log, :completed) } |
||||
let(:lettings_log_3) { create(:lettings_log, :completed) } |
||||
|
||||
it "only updates each log once" do |
||||
lettings_log.update!(ppcodenk: nil) |
||||
lettings_log_2.update!(ppcodenk: 0) |
||||
lettings_log_3.update!(ppcodenk: 1) |
||||
task.invoke |
||||
expect(lettings_log.reload.ppcodenk).to eq(nil) |
||||
expect(lettings_log_2.reload.ppcodenk).to eq(1) |
||||
expect(lettings_log_3.reload.ppcodenk).to eq(0) |
||||
end |
||||
end |
||||
|
||||
it "does not update updated_at value" do |
||||
lettings_log.updated_at = Time.zone.local(2021, 3, 3) |
||||
lettings_log.save!(validate: false) |
||||
expect(lettings_log.updated_at.to_date).to eq(Time.zone.local(2021, 3, 3)) |
||||
task.invoke |
||||
expect(lettings_log.updated_at.to_date).to eq(Time.zone.local(2021, 3, 3)) |
||||
end |
||||
|
||||
it "skips validations for previous years" do |
||||
lettings_log.update!(ppcodenk: 1) |
||||
lettings_log.startdate = Time.zone.local(2021, 3, 3) |
||||
lettings_log.save!(validate: false) |
||||
task.invoke |
||||
expect(lettings_log.reload.ppcodenk).to eq(0) |
||||
end |
||||
end |
||||
end |
||||
end |
||||
Loading…
Reference in new issue