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