Browse Source
* 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 commitpull/3005/head3b34cd0086
. * Revert "set renewal ppostcode on postcode change" This reverts commitd311c8e8ad
. * Rake task and tests * Lint * Update tests * Remove flaky behaviour * Update rake task with error logging * Revert "Remove flaky behaviour" This reverts commitd51a03f88e
. * 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>
4 changed files with 237 additions and 2 deletions
@ -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 |
@ -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…
Reference in new issue