From b4e691c7fe543515eecb5b78425364708f95e17f Mon Sep 17 00:00:00 2001 From: Manny Dinssa <44172848+Dinssa@users.noreply.github.com> Date: Wed, 19 Mar 2025 09:40:40 +0000 Subject: [PATCH] Do not update logs without any address fields yet entered --- ...address_entry_selected_prexisting_logs.rake | 18 ++++++++++++++---- spec/factories/lettings_log.rb | 17 +++++++++++++++++ spec/factories/sales_log.rb | 17 +++++++++++++++++ ...ress_entry_selected_prexisting_logs_spec.rb | 18 ++++++++++++++++++ 4 files changed, 66 insertions(+), 4 deletions(-) diff --git a/lib/tasks/update_manual_address_entry_selected_prexisting_logs.rake b/lib/tasks/update_manual_address_entry_selected_prexisting_logs.rake index 29bee0839..26898b39c 100644 --- a/lib/tasks/update_manual_address_entry_selected_prexisting_logs.rake +++ b/lib/tasks/update_manual_address_entry_selected_prexisting_logs.rake @@ -1,14 +1,20 @@ namespace :bulk_update do desc "Update logs with specific criteria and set manual_address_entry_selected to true" task update_manual_address_entry_selected: :environment do + updated_lettings_logs_count = 0 + updated_sales_logs_count = 0 lettings_logs = LettingsLog.filter_by_year(2024) .where(status: %w[in_progress completed]) .where(needstype: 1, manual_address_entry_selected: false, uprn: nil) lettings_logs.find_each do |log| + next unless log.address_line1 || log.address_line2 || log.county || log.town_or_city || log.postcode_full + status_pre_change = log.status log.manual_address_entry_selected = true - unless log.save + if log.save + updated_lettings_logs_count += 1 + else Rails.logger.info "Could not save changes to lettings log #{log.id}" end status_post_change = log.status @@ -17,16 +23,20 @@ namespace :bulk_update do end end - puts "#{lettings_logs.count} lettings logs updated." + puts "#{updated_lettings_logs_count} lettings logs updated." sales_logs = SalesLog.filter_by_year(2024) .where(status: %w[in_progress completed]) .where(manual_address_entry_selected: false, uprn: nil) sales_logs.find_each do |log| + next unless log.address_line1 || log.address_line2 || log.county || log.town_or_city || log.postcode_full + status_pre_change = log.status log.manual_address_entry_selected = true - unless log.save + if log.save + updated_sales_logs_count += 1 + else Rails.logger.info "Could not save changes to sales log #{log.id}" end status_post_change = log.status @@ -35,6 +45,6 @@ namespace :bulk_update do end end - puts "#{sales_logs.count} sales logs updated." + puts "#{updated_sales_logs_count} sales logs updated." end end diff --git a/spec/factories/lettings_log.rb b/spec/factories/lettings_log.rb index 3eddfa12e..c11b83bc9 100644 --- a/spec/factories/lettings_log.rb +++ b/spec/factories/lettings_log.rb @@ -232,9 +232,26 @@ FactoryBot.define do after(:build) do |log| log.address_line1 = "1 Test Street" log.address_line2 = "Testville" + log.county = "Testshire" log.town_or_city = "Testford" log.postcode_full = "SW1 1AA" end end + trait :completed_without_address_fields do + completed + manual_address_entry_selected { false } + after(:build) do |log| + log.uprn = nil + log.uprn_selection = nil + log.uprn_known = 0 + log.address_line1 = nil + log.address_line2 = nil + log.county = nil + log.town_or_city = nil + log.postcode_full = nil + log.address_line1_input = nil + log.postcode_full_input = nil + end + end end end diff --git a/spec/factories/sales_log.rb b/spec/factories/sales_log.rb index 538aab27f..52221a896 100644 --- a/spec/factories/sales_log.rb +++ b/spec/factories/sales_log.rb @@ -247,10 +247,27 @@ FactoryBot.define do after(:build) do |log| log.address_line1 = "1 Test Street" log.address_line2 = "Testville" + log.county = "Testshire" log.town_or_city = "Testford" log.postcode_full = "SW1 1AA" end end + trait :completed_without_address_fields do + completed + manual_address_entry_selected { false } + after(:build) do |log| + log.uprn = nil + log.uprn_selection = nil + log.uprn_known = 0 + log.address_line1 = nil + log.address_line2 = nil + log.county = nil + log.town_or_city = nil + log.postcode_full = nil + log.address_line1_input = nil + log.postcode_full_input = nil + end + end trait :export do purchid { "123" } ownershipsch { 2 } diff --git a/spec/lib/tasks/update_manual_address_entry_selected_prexisting_logs_spec.rb b/spec/lib/tasks/update_manual_address_entry_selected_prexisting_logs_spec.rb index 4268b66c9..c45649978 100644 --- a/spec/lib/tasks/update_manual_address_entry_selected_prexisting_logs_spec.rb +++ b/spec/lib/tasks/update_manual_address_entry_selected_prexisting_logs_spec.rb @@ -12,6 +12,10 @@ RSpec.describe "bulk_update:update_manual_address_entry_selected", type: :task d build(:lettings_log, :completed, startdate: Time.zone.local(2024, 9, 1), needstype: 1, manual_address_entry_selected: false, address_line1_input: "1 Test Street", postcode_full_input: "SW1 1AA") end + let(:lettings_log_address_fields_not_entered) do + build(:lettings_log, :completed_without_address_fields, startdate: Time.zone.local(2024, 9, 1), needstype: 1) + end + let(:lettings_log_address_manually_entered) do build(:lettings_log, :completed_without_uprn, startdate: Time.zone.local(2024, 12, 1), needstype: 1) end @@ -24,6 +28,10 @@ RSpec.describe "bulk_update:update_manual_address_entry_selected", type: :task d build(:sales_log, :completed, saledate: Time.zone.local(2024, 7, 1), manual_address_entry_selected: false, address_line1_input: "1 Test Street", postcode_full_input: "SW1 1AA") end + let(:sales_log_address_fields_not_entered) do + build(:sales_log, :completed_without_address_fields, saledate: Time.zone.local(2024, 12, 30)) + end + let(:sales_log_address_manually_entered) do build(:sales_log, :completed_without_uprn, saledate: Time.zone.local(2024, 12, 30)) end @@ -38,8 +46,10 @@ RSpec.describe "bulk_update:update_manual_address_entry_selected", type: :task d before do lettings_log_uprn_found.save!(validate: false) lettings_log_uprn_entered.save!(validate: false) + lettings_log_address_fields_not_entered.save!(validate: false) sales_log_uprn_found.save!(validate: false) sales_log_uprn_entered.save!(validate: false) + sales_log_address_fields_not_entered.save!(validate: false) end it "does not update logs with a UPRN entered" do @@ -61,6 +71,14 @@ RSpec.describe "bulk_update:update_manual_address_entry_selected", type: :task d expect(sales_log_uprn_found.manual_address_entry_selected).to be false expect(sales_log_uprn_found.uprn).to eq("10033558653") end + + it "does not update logs with no UPRN or address fields entered" do + task.invoke + lettings_log_address_fields_not_entered.reload + sales_log_address_fields_not_entered.reload + expect(lettings_log_address_fields_not_entered.manual_address_entry_selected).to be false + expect(sales_log_address_fields_not_entered.manual_address_entry_selected).to be false + end end context "when logs do meet the criteria" do