From 33f37d690cc8bacbd3d706eec1a3be92c958f132 Mon Sep 17 00:00:00 2001 From: Manny Dinssa <44172848+Dinssa@users.noreply.github.com> Date: Thu, 20 Feb 2025 21:29:43 +0000 Subject: [PATCH] Add tests for rake task --- ...calculate_invalid_reasonpref_dontknow.rake | 12 ++++ ...culate_invalid_reasonpref_dontknow_spec.rb | 60 +++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 lib/tasks/recalculate_invalid_reasonpref_dontknow.rake create mode 100644 spec/lib/tasks/recalculate_invalid_reasonpref_dontknow_spec.rb diff --git a/lib/tasks/recalculate_invalid_reasonpref_dontknow.rake b/lib/tasks/recalculate_invalid_reasonpref_dontknow.rake new file mode 100644 index 000000000..14d387662 --- /dev/null +++ b/lib/tasks/recalculate_invalid_reasonpref_dontknow.rake @@ -0,0 +1,12 @@ +desc "Bulk update logs with invalid rp_dontknow values" +task recalculate_invalid_rpdontknow: :environment do + validation_trigger_condition = "rp_dontknow = 1 AND (rp_homeless = 1 OR rp_insan_unsat = 1 OR rp_medwel = 1 OR rp_hardship = 1)" + + LettingsLog.filter_by_year(2024).where(validation_trigger_condition).find_each do |log| + log.rp_dontknow = 0 + + unless log.save + Rails.logger.info "Could not save changes to lettings log #{log.id}" + end + end +end diff --git a/spec/lib/tasks/recalculate_invalid_reasonpref_dontknow_spec.rb b/spec/lib/tasks/recalculate_invalid_reasonpref_dontknow_spec.rb new file mode 100644 index 000000000..50350bc94 --- /dev/null +++ b/spec/lib/tasks/recalculate_invalid_reasonpref_dontknow_spec.rb @@ -0,0 +1,60 @@ +require "rails_helper" +require "rake" + +RSpec.describe "recalculate_invalid_reasonpref_dontknow" do + subject(:task) { Rake::Task["recalculate_invalid_rpdontknow"] } + + before do + Rake.application.rake_require("tasks/recalculate_invalid_reasonpref_dontknow") + Rake::Task.define_task(:environment) + task.reenable + end + + let(:invalid_logs) { create_list(:lettings_log, 5, :completed, reasonpref: 1, rp_dontknow: 1, rp_homeless: 1, rp_insan_unsat: rand(2), rp_medwel: rand(2), rp_hardship: rand(2)) } + let(:pre_2024_invalid_logs) do + create_list(:lettings_log, 5, :completed, reasonpref: 1, rp_dontknow: 1, rp_homeless: 1, rp_insan_unsat: rand(2), rp_medwel: rand(2), rp_hardship: rand(2)).each do |log| + log.startdate = Time.zone.local(rand(2021..2023), 4, 1) + log.save!(validate: false) + end + end + let(:valid_logs) { create_list(:lettings_log, 3, :completed, reasonpref: 1, rp_dontknow: 0, rp_homeless: 1, rp_insan_unsat: 1, rp_medwel: rand(2), rp_hardship: rand(2)) } + + it "updates the right logs from 2024/25 with invalid rp_dontknow values" do + invalid_logs.each do |log| + expect(log.reasonpref).to eq(1) + expect(log.rp_dontknow).to eq(1) + expect(log.rp_homeless).to eq(1) + end + pre_2024_invalid_logs.each do |log| + expect(log.reasonpref).to eq(1) + expect(log.rp_dontknow).to eq(1) + expect(log.rp_homeless).to eq(1) + end + valid_logs.each do |log| + expect(log.reasonpref).to eq(1) + expect(log.rp_dontknow).to eq(0) + expect(log.rp_homeless).to eq(1) + expect(log.rp_insan_unsat).to eq(1) + end + task.invoke + invalid_logs.each do |log| + log.reload + expect(log.reasonpref).to eq(1) + expect(log.rp_dontknow).to eq(0) + expect(log.rp_homeless).to eq(1) + end + pre_2024_invalid_logs.each do |log| + log.reload + expect(log.reasonpref).to eq(1) + expect(log.rp_dontknow).to eq(1) + expect(log.rp_homeless).to eq(1) + end + valid_logs.each do |log| + log.reload + expect(log.reasonpref).to eq(1) + expect(log.rp_dontknow).to eq(0) + expect(log.rp_homeless).to eq(1) + expect(log.rp_insan_unsat).to eq(1) + end + end +end