Browse Source

Do not update logs without any address fields yet entered

pull/3003/head
Manny Dinssa 4 months ago
parent
commit
b4e691c7fe
  1. 18
      lib/tasks/update_manual_address_entry_selected_prexisting_logs.rake
  2. 17
      spec/factories/lettings_log.rb
  3. 17
      spec/factories/sales_log.rb
  4. 18
      spec/lib/tasks/update_manual_address_entry_selected_prexisting_logs_spec.rb

18
lib/tasks/update_manual_address_entry_selected_prexisting_logs.rake

@ -1,14 +1,20 @@
namespace :bulk_update do namespace :bulk_update do
desc "Update logs with specific criteria and set manual_address_entry_selected to true" desc "Update logs with specific criteria and set manual_address_entry_selected to true"
task update_manual_address_entry_selected: :environment do 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) lettings_logs = LettingsLog.filter_by_year(2024)
.where(status: %w[in_progress completed]) .where(status: %w[in_progress completed])
.where(needstype: 1, manual_address_entry_selected: false, uprn: nil) .where(needstype: 1, manual_address_entry_selected: false, uprn: nil)
lettings_logs.find_each do |log| 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 status_pre_change = log.status
log.manual_address_entry_selected = true 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}" Rails.logger.info "Could not save changes to lettings log #{log.id}"
end end
status_post_change = log.status status_post_change = log.status
@ -17,16 +23,20 @@ namespace :bulk_update do
end end
end end
puts "#{lettings_logs.count} lettings logs updated." puts "#{updated_lettings_logs_count} lettings logs updated."
sales_logs = SalesLog.filter_by_year(2024) sales_logs = SalesLog.filter_by_year(2024)
.where(status: %w[in_progress completed]) .where(status: %w[in_progress completed])
.where(manual_address_entry_selected: false, uprn: nil) .where(manual_address_entry_selected: false, uprn: nil)
sales_logs.find_each do |log| 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 status_pre_change = log.status
log.manual_address_entry_selected = true 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}" Rails.logger.info "Could not save changes to sales log #{log.id}"
end end
status_post_change = log.status status_post_change = log.status
@ -35,6 +45,6 @@ namespace :bulk_update do
end end
end end
puts "#{sales_logs.count} sales logs updated." puts "#{updated_sales_logs_count} sales logs updated."
end end
end end

17
spec/factories/lettings_log.rb

@ -232,9 +232,26 @@ FactoryBot.define do
after(:build) do |log| after(:build) do |log|
log.address_line1 = "1 Test Street" log.address_line1 = "1 Test Street"
log.address_line2 = "Testville" log.address_line2 = "Testville"
log.county = "Testshire"
log.town_or_city = "Testford" log.town_or_city = "Testford"
log.postcode_full = "SW1 1AA" log.postcode_full = "SW1 1AA"
end end
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
end end

17
spec/factories/sales_log.rb

@ -247,10 +247,27 @@ FactoryBot.define do
after(:build) do |log| after(:build) do |log|
log.address_line1 = "1 Test Street" log.address_line1 = "1 Test Street"
log.address_line2 = "Testville" log.address_line2 = "Testville"
log.county = "Testshire"
log.town_or_city = "Testford" log.town_or_city = "Testford"
log.postcode_full = "SW1 1AA" log.postcode_full = "SW1 1AA"
end end
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 trait :export do
purchid { "123" } purchid { "123" }
ownershipsch { 2 } ownershipsch { 2 }

18
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") 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 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 let(:lettings_log_address_manually_entered) do
build(:lettings_log, :completed_without_uprn, startdate: Time.zone.local(2024, 12, 1), needstype: 1) build(:lettings_log, :completed_without_uprn, startdate: Time.zone.local(2024, 12, 1), needstype: 1)
end 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") 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 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 let(:sales_log_address_manually_entered) do
build(:sales_log, :completed_without_uprn, saledate: Time.zone.local(2024, 12, 30)) build(:sales_log, :completed_without_uprn, saledate: Time.zone.local(2024, 12, 30))
end end
@ -38,8 +46,10 @@ RSpec.describe "bulk_update:update_manual_address_entry_selected", type: :task d
before do before do
lettings_log_uprn_found.save!(validate: false) lettings_log_uprn_found.save!(validate: false)
lettings_log_uprn_entered.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_found.save!(validate: false)
sales_log_uprn_entered.save!(validate: false) sales_log_uprn_entered.save!(validate: false)
sales_log_address_fields_not_entered.save!(validate: false)
end end
it "does not update logs with a UPRN entered" do 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.manual_address_entry_selected).to be false
expect(sales_log_uprn_found.uprn).to eq("10033558653") expect(sales_log_uprn_found.uprn).to eq("10033558653")
end 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 end
context "when logs do meet the criteria" do context "when logs do meet the criteria" do

Loading…
Cancel
Save