2 changed files with 75 additions and 0 deletions
@ -0,0 +1,20 @@
|
||||
desc "Recalculates status for 2024 logs that will trigger new sales over retirement age soft validation" |
||||
task recalculate_status_over_retirement: :environment do |
||||
validation_trigger_condition = "(ecstat1 != 5 AND age1 > 66) OR (ecstat2 != 5 AND age2 > 66) OR (ecstat3 != 5 AND age3 > 66) OR (ecstat4 != 5 AND age4 > 66) OR (ecstat5 != 5 AND age5 > 66) OR (ecstat6 != 5 AND age6 > 66)" |
||||
SalesLog.filter_by_year(2024).where(status: "pending", status_cache: "completed").where(validation_trigger_condition).find_each do |log| |
||||
log.status_cache = log.calculate_status |
||||
log.skip_update_status = true |
||||
|
||||
unless log.save |
||||
Rails.logger.info "Could not save changes to pending sales log #{log.id}" |
||||
end |
||||
end |
||||
|
||||
SalesLog.filter_by_year(2024).where(status: "completed").where(validation_trigger_condition).find_each do |log| |
||||
log.status = log.calculate_status |
||||
|
||||
unless log.save |
||||
Rails.logger.info "Could not save changes to sales log #{log.id}" |
||||
end |
||||
end |
||||
end |
||||
@ -0,0 +1,55 @@
|
||||
require "rails_helper" |
||||
require "rake" |
||||
|
||||
RSpec.describe "recalculate_status_after_sales_over_retirement_age_validation" do |
||||
describe ":recalculate_status_over_retirement", type: :task do |
||||
subject(:task) { Rake::Task["recalculate_status_over_retirement"] } |
||||
|
||||
before do |
||||
Rake.application.rake_require("tasks/recalculate_status_after_sales_over_retirement_age_validation") |
||||
Rake::Task.define_task(:environment) |
||||
task.reenable |
||||
end |
||||
|
||||
context "when the rake task is run" do |
||||
context "and there is a completed sales log that trips the validation" do |
||||
let(:log) { create(:sales_log, :completed, ecstat1: 1, age1: 67) } |
||||
|
||||
before do |
||||
log.status = "completed" |
||||
log.skip_update_status = true |
||||
log.save! |
||||
end |
||||
|
||||
it "sets the log to in progress" do |
||||
task.invoke |
||||
log.reload |
||||
expect(log.status).to eq("in_progress") |
||||
end |
||||
end |
||||
|
||||
context "and there is a pending sales log that trips the validation" do |
||||
let(:log) { create(:sales_log, :completed, ecstat2: 1, age2: 70) } |
||||
|
||||
before do |
||||
log.status = "pending" |
||||
log.status_cache = "completed" |
||||
log.skip_update_status = true |
||||
log.save! |
||||
end |
||||
|
||||
it "updates the status cache" do |
||||
task.invoke |
||||
log.reload |
||||
expect(log.status_cache).to eq("in_progress") |
||||
end |
||||
|
||||
it "does not change the log status" do |
||||
task.invoke |
||||
log.reload |
||||
expect(log.status).to eq("pending") |
||||
end |
||||
end |
||||
end |
||||
end |
||||
end |
||||
Loading…
Reference in new issue