Browse Source

CLDC-3928 Update logs with manually entered address showing the property information as incomplete (#3003)

* set renewal ppostcode on postcode change

* update test

* Update factory bot and set uprn_selection to uprn as in derived fields

* Revert "update test"

This reverts commit 3b34cd0086.

* Revert "set renewal ppostcode on postcode change"

This reverts commit d311c8e8ad.

* Rake task and tests

* Lint

* Update tests

* Remove flaky behaviour

* Update rake task with error logging

* Revert "Remove flaky behaviour"

This reverts commit d51a03f88e.

* Try to prevent flaky test behaviour

* Check status before and after change

* Do not update logs without any address fields yet entered

* Rename trait

* Update query

* Empty line

---------

Co-authored-by: Carolyn <carolyn.barker@softwire.com>
CLDC-3939-test-tests-remotely
Manny Dinssa 3 days ago committed by GitHub
parent
commit
b20138b83a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 48
      lib/tasks/update_manual_address_entry_selected_prexisting_logs.rake
  2. 35
      spec/factories/lettings_log.rb
  3. 35
      spec/factories/sales_log.rb
  4. 121
      spec/lib/tasks/update_manual_address_entry_selected_prexisting_logs_spec.rb

48
lib/tasks/update_manual_address_entry_selected_prexisting_logs.rake

@ -0,0 +1,48 @@
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)
.where("(address_line1 IS NOT NULL AND address_line1 != '') OR (address_line2 IS NOT NULL AND address_line2 != '') OR (town_or_city IS NOT NULL AND town_or_city != '') OR (county IS NOT NULL AND county != '') OR (postcode_full IS NOT NULL AND postcode_full != '')")
lettings_logs.find_each do |log|
status_pre_change = log.status
log.manual_address_entry_selected = true
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
unless status_pre_change == status_post_change
Rails.logger.info "Status changed from #{status_pre_change} to #{status_post_change} for lettings log #{log.id}"
end
end
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)
.where("(address_line1 IS NOT NULL AND address_line1 != '') OR (address_line2 IS NOT NULL AND address_line2 != '') OR (town_or_city IS NOT NULL AND town_or_city != '') OR (county IS NOT NULL AND county != '') OR (postcode_full IS NOT NULL AND postcode_full != '')")
sales_logs.find_each do |log|
status_pre_change = log.status
log.manual_address_entry_selected = true
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
unless status_pre_change == status_post_change
Rails.logger.info "Status changed from #{status_pre_change} to #{status_post_change} for sales log #{log.id}"
end
end
puts "#{updated_sales_logs_count} sales logs updated."
end
end

35
spec/factories/lettings_log.rb

@ -172,7 +172,7 @@ FactoryBot.define do
if log.startdate >= Time.zone.local(2024, 4, 1)
log.nationality_all_group = 826
log.uprn = evaluator.uprn || "10033558653"
log.uprn_selection = evaluator.uprn_selection || "10033558653"
log.uprn_selection = evaluator.uprn_selection || evaluator.uprn || "10033558653"
end
end
end
@ -220,5 +220,38 @@ FactoryBot.define do
instance.save!(validate: false)
end
end
trait :completed_without_uprn do
completed
manual_address_entry_selected { false }
after(:build) do |log|
log.uprn = nil
log.uprn_selection = nil
log.uprn_known = 0
end
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 :inprogress_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

35
spec/factories/sales_log.rb

@ -173,7 +173,7 @@ FactoryBot.define do
log.nationality_all_group = 826
log.nationality_all_buyer2_group = 826
log.uprn = evaluator.uprn || "10033558653"
log.uprn_selection = evaluator.uprn_selection || "10033558653"
log.uprn_selection = evaluator.uprn_selection || evaluator.uprn || "10033558653"
end
if log.saledate >= Time.zone.local(2025, 4, 1)
log.relat2 = "X" if log.relat2 == "C"
@ -235,6 +235,39 @@ FactoryBot.define do
instance.save!(validate: false)
end
end
trait :completed_without_uprn do
completed
manual_address_entry_selected { false }
after(:build) do |log|
log.uprn = nil
log.uprn_selection = nil
log.uprn_known = 0
end
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 :inprogress_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 }

121
spec/lib/tasks/update_manual_address_entry_selected_prexisting_logs_spec.rb

@ -0,0 +1,121 @@
require "rails_helper"
require "rake"
RSpec.describe "bulk_update:update_manual_address_entry_selected", type: :task do
let(:task) { Rake::Task["bulk_update:update_manual_address_entry_selected"] }
let(:lettings_log_uprn_entered) do
build(:lettings_log, :completed, startdate: Time.zone.local(2024, 6, 1), needstype: 1, manual_address_entry_selected: false)
end
let(:lettings_log_uprn_found) do
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, :inprogress_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
let(:sales_log_uprn_entered) do
build(:sales_log, :completed, saledate: Time.zone.local(2024, 12, 1), manual_address_entry_selected: false)
end
let(:sales_log_uprn_found) do
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, :inprogress_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
before do
Rake.application.rake_require("tasks/update_manual_address_entry_selected_prexisting_logs")
Rake::Task.define_task(:environment)
end
context "when running the task" do
context "when logs do not meet the criteria" do
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
task.invoke
lettings_log_uprn_entered.reload
sales_log_uprn_entered.reload
expect(lettings_log_uprn_entered.manual_address_entry_selected).to be false
expect(lettings_log_uprn_entered.uprn).to eq("10033558653")
expect(sales_log_uprn_entered.manual_address_entry_selected).to be false
expect(sales_log_uprn_entered.uprn).to eq("10033558653")
end
it "does not update logs with a UPRN found" do
task.invoke
lettings_log_uprn_found.reload
sales_log_uprn_found.reload
expect(lettings_log_uprn_found.manual_address_entry_selected).to be false
expect(lettings_log_uprn_found.uprn).to eq("10033558653")
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
before do
lettings_log_address_manually_entered.manual_address_entry_selected = false
lettings_log_address_manually_entered.save!(validate: false)
sales_log_address_manually_entered.manual_address_entry_selected = false
sales_log_address_manually_entered.save!(validate: false)
end
it "updates logs with an address manually entered" do
expect(lettings_log_address_manually_entered.manual_address_entry_selected).to be false
expect(lettings_log_address_manually_entered.address_line1).to eq("1 Test Street")
expect(lettings_log_address_manually_entered.address_line2).to eq("Testville")
expect(lettings_log_address_manually_entered.town_or_city).to eq("Testford")
expect(lettings_log_address_manually_entered.postcode_full).to eq("SW1 1AA")
expect(sales_log_address_manually_entered.manual_address_entry_selected).to be false
expect(sales_log_address_manually_entered.address_line1).to eq("1 Test Street")
expect(sales_log_address_manually_entered.address_line2).to eq("Testville")
expect(sales_log_address_manually_entered.town_or_city).to eq("Testford")
expect(sales_log_address_manually_entered.postcode_full).to eq("SW1 1AA")
task.invoke
lettings_log_address_manually_entered.reload
sales_log_address_manually_entered.reload
expect(lettings_log_address_manually_entered.manual_address_entry_selected).to be true
expect(lettings_log_address_manually_entered.address_line1).to eq("1 Test Street")
expect(lettings_log_address_manually_entered.address_line2).to eq("Testville")
expect(lettings_log_address_manually_entered.town_or_city).to eq("Testford")
expect(lettings_log_address_manually_entered.postcode_full).to eq("SW1 1AA")
expect(sales_log_address_manually_entered.manual_address_entry_selected).to be true
expect(sales_log_address_manually_entered.address_line1).to eq("1 Test Street")
expect(sales_log_address_manually_entered.address_line2).to eq("Testville")
expect(sales_log_address_manually_entered.town_or_city).to eq("Testford")
expect(sales_log_address_manually_entered.postcode_full).to eq("SW1 1AA")
end
end
end
end
Loading…
Cancel
Save