49 changed files with 426 additions and 1629 deletions
@ -1,20 +0,0 @@
|
||||
desc "clear benefit value for logs that would trigger the validation" |
||||
task clear_invalid_benefits: :environment do |
||||
validation_trigger_condition = "ecstat1 = 1 OR ecstat1 = 2 OR (ecstat2 = 1 AND relat2 = 'P') OR (ecstat2 = 2 AND relat2 = 'P') OR (ecstat3 = 1 AND relat3 = 'P') OR (ecstat3 = 2 AND relat3 = 'P') OR (ecstat4 = 1 AND relat4 = 'P') OR (ecstat4 = 2 AND relat4 = 'P') OR (ecstat5 = 1 AND relat5 = 'P') OR (ecstat5 = 2 AND relat5 = 'P') OR (ecstat6 = 1 AND relat6 = 'P') OR (ecstat6 = 2 AND relat6 = 'P') OR (ecstat7 = 1 AND relat7 = 'P') OR (ecstat7 = 2 AND relat7 = 'P') OR (ecstat8 = 1 AND relat8 = 'P') OR (ecstat8 = 2 AND relat8 = 'P')" |
||||
LettingsLog.filter_by_year(2024).where(status: "pending", status_cache: "completed", benefits: 1).where(validation_trigger_condition).find_each do |log| |
||||
log.benefits = nil |
||||
log.status_cache = log.calculate_status |
||||
log.skip_update_status = true |
||||
|
||||
unless log.save |
||||
Rails.logger.info "Could not save changes to pending lettings log #{log.id}" |
||||
end |
||||
end |
||||
|
||||
LettingsLog.filter_by_year(2024).visible.where(benefits: 1).where(validation_trigger_condition).find_each do |log| |
||||
log.benefits = nil |
||||
unless log.save |
||||
Rails.logger.info "Could not save changes to lettings log #{log.id}" |
||||
end |
||||
end |
||||
end |
@ -1,12 +0,0 @@
|
||||
desc "Clear earnings for lettings logs that fail validation" |
||||
task clear_invalidated_earnings: :environment do |
||||
LettingsLog.filter_by_year(2023).find_each do |lettings_log| |
||||
lettings_log.validate_net_income(lettings_log) |
||||
if lettings_log.errors[:earnings].present? |
||||
Rails.logger.info "Clearing earnings for lettings log #{lettings_log.id}, owning_organisation_id: #{lettings_log.owning_organisation_id}, managing_organisation_id: #{lettings_log.managing_organisation_id}, startdate: #{lettings_log.startdate.to_date}, tenancy reference: #{lettings_log.tenancycode}, property reference: #{lettings_log.propcode}, assigned_to: #{lettings_log.assigned_to.email}(#{lettings_log.assigned_to_id}), earnings: #{lettings_log.earnings}, incfreq: #{lettings_log.incfreq}" |
||||
lettings_log.earnings = nil |
||||
lettings_log.incfreq = nil |
||||
lettings_log.save!(validate: false) |
||||
end |
||||
end |
||||
end |
@ -1,20 +0,0 @@
|
||||
desc "Update BU reasonable preference and illness type checkbox values" |
||||
task correct_checkbox_values: :environment do |
||||
any_reasonpref_selected = "rp_homeless = 1 OR rp_hardship = 1 OR rp_medwel = 1 OR rp_insan_unsat = 1 OR rp_dontknow = 1" |
||||
any_reasonpref_is_null = "rp_homeless IS NULL OR rp_hardship IS NULL OR rp_medwel IS NULL OR rp_insan_unsat IS NULL OR rp_dontknow IS NULL" |
||||
|
||||
LettingsLog.filter_by_year(2024).where(reasonpref: 1).where(any_reasonpref_selected).where(any_reasonpref_is_null).find_each do |lettings_log| |
||||
unless lettings_log.save |
||||
Rails.logger.info("Failed to save reasonpref for LettingsLog with id #{lettings_log.id}: #{lettings_log.errors.full_messages}") |
||||
end |
||||
end |
||||
|
||||
any_illness_selected = "illness_type_1 = 1 OR illness_type_2 = 1 OR illness_type_3 = 1 OR illness_type_4 = 1 OR illness_type_5 = 1 OR illness_type_6 = 1 OR illness_type_7 = 1 OR illness_type_8 = 1 OR illness_type_9 = 1 OR illness_type_10 = 1" |
||||
any_illness_is_null = "illness_type_1 IS NULL OR illness_type_2 IS NULL OR illness_type_3 IS NULL OR illness_type_4 IS NULL OR illness_type_5 IS NULL OR illness_type_6 IS NULL OR illness_type_7 IS NULL OR illness_type_8 IS NULL OR illness_type_9 IS NULL OR illness_type_10 IS NULL" |
||||
|
||||
LettingsLog.filter_by_year(2024).where(illness: 1).where(any_illness_selected).where(any_illness_is_null).find_each do |lettings_log| |
||||
unless lettings_log.save |
||||
Rails.logger.info("Failed to save illness for LettingsLog with id #{lettings_log.id}: #{lettings_log.errors.full_messages}") |
||||
end |
||||
end |
||||
end |
@ -1,15 +0,0 @@
|
||||
desc "Correct invalid BU reasonable preference values" |
||||
task correct_reasonpref_values: :environment do |
||||
%w[rp_homeless rp_hardship rp_medwel rp_insan_unsat rp_dontknow].each do |field| |
||||
field_invalid = "#{field} != 1 AND #{field} != 0 AND #{field} is NOT NULL" |
||||
|
||||
LettingsLog.filter_by_year(2024).where(field_invalid).find_each do |lettings_log| |
||||
lettings_log[field] = 0 |
||||
unless lettings_log.save |
||||
Rails.logger.info("Failed to save reasonpref for LettingsLog with id #{lettings_log.id}: #{lettings_log.errors.full_messages}") |
||||
end |
||||
end |
||||
|
||||
LettingsLog.filter_by_year(2023).where(field_invalid).update_all("#{field}": 0) |
||||
end |
||||
end |
@ -1,20 +0,0 @@
|
||||
desc "Alter rent_type values for bulk uploaded lettings logs for 2024 where they were not mapped correctly" |
||||
task correct_rent_type_value: :environment do |
||||
affected_uploads = BulkUpload.where(log_type: "lettings", year: 2024, rent_type_fix_status: BulkUpload.rent_type_fix_statuses[:not_applied]) |
||||
affected_uploads.each do |upload| |
||||
upload.logs.where.not(rent_type: nil).each do |log| |
||||
current_rent_type = log.rent_type |
||||
rent_type_at_upload = log.versions.length == 1 ? log.rent_type : log.versions.first.next.reify.rent_type |
||||
next unless rent_type_at_upload == current_rent_type |
||||
|
||||
new_rent_type_value = BulkUpload::Lettings::Year2024::RowParser::RENT_TYPE_BU_MAPPING[rent_type_at_upload] |
||||
log.rent_type = new_rent_type_value |
||||
if log.save |
||||
Rails.logger.info("Log #{log.id} rent_type updated from #{rent_type_at_upload} to #{log.rent_type}") |
||||
else |
||||
Rails.logger.error("Log #{log.id} rent_type could not be updated from #{rent_type_at_upload} to #{log.rent_type}. Error: #{log.errors.full_messages.join(', ')}") |
||||
end |
||||
end |
||||
upload.update!(rent_type_fix_status: BulkUpload.rent_type_fix_statuses[:applied]) |
||||
end |
||||
end |
@ -1,19 +0,0 @@
|
||||
desc "Recalculates status for 2024 logs that will trigger new sales over retirement age soft validation" |
||||
task recalculate_status_over_retirement: :environment do |
||||
validation_trigger_condition = "(ecstat1 != 5 AND age1 > 66) OR (ecstat2 != 5 AND age2 > 66) OR (ecstat3 != 5 AND age3 > 66) OR (ecstat4 != 5 AND age4 > 66) OR (ecstat5 != 5 AND age5 > 66) OR (ecstat6 != 5 AND age6 > 66)" |
||||
SalesLog.filter_by_year(2024).where(status: "pending", status_cache: "completed").where(validation_trigger_condition).find_each do |log| |
||||
log.status_cache = log.calculate_status |
||||
|
||||
unless log.save |
||||
Rails.logger.info "Could not save changes to pending sales log #{log.id}" |
||||
end |
||||
end |
||||
|
||||
SalesLog.filter_by_year(2024).where(status: "completed").where(validation_trigger_condition).find_each do |log| |
||||
log.status = log.calculate_status |
||||
|
||||
unless log.save |
||||
Rails.logger.info "Could not save changes to sales log #{log.id}" |
||||
end |
||||
end |
||||
end |
@ -1,24 +0,0 @@
|
||||
desc "Updates created_by values for lettings and sales logs" |
||||
task update_created_by_values: :environment do |
||||
LettingsLog.filter_by_years(%w[2023 2024]).where.not(bulk_upload_id: nil).update_all("created_by_id = (SELECT user_id FROM bulk_uploads WHERE bulk_uploads.id = lettings_logs.bulk_upload_id)") |
||||
LettingsLog.filter_by_years(%w[2023 2024]).where(bulk_upload_id: nil, created_by: nil).find_each do |lettings_log| |
||||
user = PaperTrail::Version.find_by(item_id: lettings_log.id, item_type: "LettingsLog", event: "create")&.actor |
||||
lettings_log.created_by = if user.present? && user.is_a?(User) |
||||
user |
||||
else |
||||
lettings_log.assigned_to |
||||
end |
||||
lettings_log.save!(touch: false, validate: false) |
||||
end |
||||
|
||||
SalesLog.filter_by_years(%w[2023 2024]).where.not(bulk_upload_id: nil).update_all("created_by_id = (SELECT user_id FROM bulk_uploads WHERE bulk_uploads.id = sales_logs.bulk_upload_id)") |
||||
SalesLog.filter_by_years(%w[2023 2024]).where(bulk_upload_id: nil, created_by: nil).find_each do |sales_log| |
||||
user = PaperTrail::Version.find_by(item_id: sales_log.id, item_type: "SalesLog", event: "create")&.actor |
||||
sales_log.created_by = if user.present? && user.is_a?(User) |
||||
user |
||||
else |
||||
sales_log.assigned_to |
||||
end |
||||
sales_log.save!(touch: false, validate: false) |
||||
end |
||||
end |
@ -1,207 +0,0 @@
|
||||
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 |
||||
lettings_postcode_fixed_count = 0 |
||||
lettings_postcode_fixed_status_changed_count = 0 |
||||
lettings_postcode_not_fixed_status_changed_count = 0 |
||||
lettings_postcode_fixed_status_changed_ids = [] |
||||
lettings_postcode_not_fixed_status_changed_ids = [] |
||||
lettings_updated_without_issue = 0 |
||||
|
||||
updated_sales_logs_count = 0 |
||||
sales_postcode_fixed_count = 0 |
||||
sales_postcode_fixed_status_changed_count = 0 |
||||
sales_postcode_not_fixed_status_changed_count = 0 |
||||
sales_postcode_fixed_status_changed_ids = [] |
||||
sales_postcode_not_fixed_status_changed_ids = [] |
||||
sales_updated_without_issue = 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 |
||||
Rails.logger.info "manual_address_entry_selected updated for lettings log #{log.id}" |
||||
else |
||||
Rails.logger.info "Could not save manual_address_entry_selected changes to lettings log #{log.id} : #{log.errors.full_messages.join(', ')}" |
||||
end |
||||
|
||||
postcode_fixed = false |
||||
if log.postcode_full.nil? && log.address_line1 == log.address_line1_input |
||||
log.postcode_full = log.postcode_full_input |
||||
if log.save |
||||
lettings_postcode_fixed_count += 1 |
||||
Rails.logger.info "postcode_full updated by address_line1_input for lettings log #{log.id}" |
||||
postcode_fixed = true |
||||
else |
||||
Rails.logger.info "Could not save postcode_full changes to lettings log #{log.id} : #{log.errors.full_messages.join(', ')}" |
||||
end |
||||
end |
||||
|
||||
if log.postcode_full.nil? && log.creation_method == "bulk upload" && log.address_line1 == log.address_line1_as_entered |
||||
log.postcode_full = log.postcode_full_as_entered |
||||
if log.save |
||||
lettings_postcode_fixed_count += 1 |
||||
Rails.logger.info "postcode_full updated by address_line1_as_entered for lettings log #{log.id}" |
||||
postcode_fixed = true |
||||
else |
||||
Rails.logger.info "Could not save postcode_full changes to lettings log #{log.id} : #{log.errors.full_messages.join(', ')}" |
||||
end |
||||
end |
||||
|
||||
status_post_change = log.status |
||||
if status_pre_change != status_post_change |
||||
if postcode_fixed |
||||
lettings_postcode_fixed_status_changed_count += 1 |
||||
lettings_postcode_fixed_status_changed_ids << log.id |
||||
else |
||||
lettings_postcode_not_fixed_status_changed_count += 1 |
||||
lettings_postcode_not_fixed_status_changed_ids << log.id |
||||
end |
||||
else |
||||
lettings_updated_without_issue += 1 |
||||
end |
||||
end |
||||
|
||||
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 |
||||
Rails.logger.info "manual_address_entry_selected updated for sales log #{log.id}" |
||||
else |
||||
Rails.logger.info "Could not save manual_address_entry_selected changes to sales log #{log.id} : #{log.errors.full_messages.join(', ')}" |
||||
end |
||||
|
||||
postcode_fixed = false |
||||
if log.postcode_full.nil? && log.address_line1 == log.address_line1_input |
||||
log.postcode_full = log.postcode_full_input |
||||
if log.save |
||||
sales_postcode_fixed_count += 1 |
||||
Rails.logger.info "postcode_full updated by address_line1_input for sales log #{log.id}" |
||||
postcode_fixed = true |
||||
else |
||||
Rails.logger.info "Could not save postcode_full changes to sales log #{log.id} : #{log.errors.full_messages.join(', ')}" |
||||
end |
||||
end |
||||
|
||||
if log.postcode_full.nil? && log.creation_method == "bulk upload" && log.address_line1 == log.address_line1_as_entered |
||||
log.postcode_full = log.postcode_full_as_entered |
||||
if log.save |
||||
sales_postcode_fixed_count += 1 |
||||
Rails.logger.info "postcode_full updated by address_line1_as_entered for sales log #{log.id}" |
||||
postcode_fixed = true |
||||
else |
||||
Rails.logger.info "Could not save postcode_full changes to sales log #{log.id} : #{log.errors.full_messages.join(', ')}" |
||||
end |
||||
end |
||||
|
||||
status_post_change = log.status |
||||
if status_pre_change != status_post_change |
||||
if postcode_fixed |
||||
sales_postcode_fixed_status_changed_count += 1 |
||||
sales_postcode_fixed_status_changed_ids << log.id |
||||
else |
||||
sales_postcode_not_fixed_status_changed_count += 1 |
||||
sales_postcode_not_fixed_status_changed_ids << log.id |
||||
end |
||||
else |
||||
sales_updated_without_issue += 1 |
||||
end |
||||
end |
||||
|
||||
puts "#{updated_lettings_logs_count} lettings logs were updated." |
||||
puts "#{lettings_updated_without_issue} lettings logs were updated without issue." |
||||
puts "#{lettings_postcode_fixed_count} lettings logs where postcode fix was applied." |
||||
puts "#{lettings_postcode_fixed_status_changed_count} lettings logs with postcode fix and status changed." |
||||
puts "#{lettings_postcode_not_fixed_status_changed_count} lettings logs without postcode fix and status changed." |
||||
puts "IDs of lettings logs with postcode fix and status changed: [#{lettings_postcode_fixed_status_changed_ids.join(', ')}]" |
||||
puts "IDs of lettings logs without postcode fix and status changed: [#{lettings_postcode_not_fixed_status_changed_ids.join(', ')}]" |
||||
|
||||
lettings_postcode_fixed_org_counts = LettingsLog.where(id: lettings_postcode_fixed_status_changed_ids).group(:owning_organisation_id).count |
||||
lettings_postcode_fixed_org_counts.each do |org_id, count| |
||||
puts "Org #{org_id}: #{count} logs with postcode fix and status changed." |
||||
end |
||||
|
||||
lettings_postcode_not_fixed_org_counts = LettingsLog.where(id: lettings_postcode_not_fixed_status_changed_ids).group(:owning_organisation_id).count |
||||
lettings_postcode_not_fixed_org_counts.each do |org_id, count| |
||||
puts "Org #{org_id}: #{count} logs without postcode fix and status changed." |
||||
end |
||||
|
||||
puts "#{updated_sales_logs_count} sales logs were updated." |
||||
puts "#{sales_updated_without_issue} sales logs were updated without issue." |
||||
puts "#{sales_postcode_fixed_count} sales logs where postcode fix was applied." |
||||
puts "#{sales_postcode_fixed_status_changed_count} sales logs with postcode fix and status changed." |
||||
puts "#{sales_postcode_not_fixed_status_changed_count} sales logs without postcode fix and status changed." |
||||
puts "IDs of sales logs with postcode fix and status changed: [#{sales_postcode_fixed_status_changed_ids.join(', ')}]" |
||||
puts "IDs of sales logs without postcode fix and status changed: [#{sales_postcode_not_fixed_status_changed_ids.join(', ')}]" |
||||
|
||||
sales_postcode_fixed_org_counts = SalesLog.where(id: sales_postcode_fixed_status_changed_ids).group(:owning_organisation_id).count |
||||
sales_postcode_fixed_org_counts.each do |org_id, count| |
||||
puts "Org #{org_id}: #{count} logs with postcode fix and status changed." |
||||
end |
||||
|
||||
sales_postcode_not_fixed_org_counts = SalesLog.where(id: sales_postcode_not_fixed_status_changed_ids).group(:owning_organisation_id).count |
||||
sales_postcode_not_fixed_org_counts.each do |org_id, count| |
||||
puts "Org #{org_id}: #{count} logs without postcode fix and status changed." |
||||
end |
||||
end |
||||
|
||||
desc "Find logs to fix and update postcode_full if conditions are met" |
||||
task update_postcode_full_preexisting_manual_entry_logs: :environment do |
||||
updated_count = 0 |
||||
fixed_count = 0 |
||||
not_updated_count = 0 |
||||
not_updated_ids = [] |
||||
updated_but_not_fixed_ids = [] |
||||
|
||||
logs_to_fix = LettingsLog.filter_by_year(2024).where(manual_address_entry_selected: true, uprn: nil, status: "in_progress", postcode_full: nil, updated_at: Time.zone.parse("2025-03-19 16:00:00")..Time.zone.parse("2025-03-19 17:00:00")) |
||||
|
||||
logs_to_fix.find_each do |log| |
||||
previous_version = log.versions[-2] |
||||
previous_status = previous_version&.reify&.status |
||||
|
||||
if log.address_line1 == log.address_line1_input |
||||
log.postcode_full = log.postcode_full_input |
||||
elsif log.creation_method == "bulk upload" && log.address_line1 == log.address_line1_as_entered |
||||
log.postcode_full = log.postcode_full_as_entered |
||||
end |
||||
|
||||
if log.postcode_full.present? |
||||
if log.save |
||||
Rails.logger.info "Updated postcode_full for lettings log #{log.id}" |
||||
updated_count += 1 |
||||
if log.status == previous_status |
||||
fixed_count += 1 |
||||
else |
||||
updated_but_not_fixed_ids << log.id |
||||
end |
||||
else |
||||
Rails.logger.info "Could not save changes to lettings log #{log.id}: #{log.errors.full_messages.join(', ')}" |
||||
not_updated_count += 1 |
||||
not_updated_ids << log.id |
||||
end |
||||
else |
||||
not_updated_count += 1 |
||||
not_updated_ids << log.id |
||||
end |
||||
end |
||||
|
||||
puts "#{updated_count} logs updated." |
||||
puts "#{fixed_count} logs fixed." |
||||
puts "#{not_updated_count} logs not updated." |
||||
puts "IDs of logs not updated: [#{not_updated_ids.join(', ')}]" |
||||
puts "IDs of logs updated but not fixed: [#{updated_but_not_fixed_ids.join(', ')}]" |
||||
end |
||||
end |
@ -1,95 +0,0 @@
|
||||
require "rails_helper" |
||||
require "rake" |
||||
|
||||
RSpec.describe "clear_invalid_benefits" do |
||||
describe ":clear_invalid_benefits", type: :task do |
||||
subject(:task) { Rake::Task["clear_invalid_benefits"] } |
||||
|
||||
before do |
||||
Rake.application.rake_require("tasks/clear_invalid_benefits") |
||||
Rake::Task.define_task(:environment) |
||||
task.reenable |
||||
end |
||||
|
||||
context "when the rake task is run" do |
||||
context "and there is a completed lettings log that trips the validation" do |
||||
let(:log) { build(:lettings_log, :completed, ecstat1: 1, benefits: 1, assigned_to: create(:user), period: nil) } |
||||
|
||||
before do |
||||
log.status = "completed" |
||||
log.skip_update_status = true |
||||
log.save!(validate: false) |
||||
end |
||||
|
||||
it "clear benefits and sets the log to in progress" do |
||||
expect(log.reload.benefits).to eq(1) |
||||
task.invoke |
||||
log.reload |
||||
expect(log.benefits).to eq(nil) |
||||
expect(log.status).to eq("in_progress") |
||||
end |
||||
end |
||||
|
||||
context "and there is a lettings log that trips the validation for person 2" do |
||||
let(:log) { build(:lettings_log, :completed, ecstat2: 2, benefits: 1, relat2: "P", assigned_to: create(:user), period: nil) } |
||||
|
||||
before do |
||||
log.status = "completed" |
||||
log.skip_update_status = true |
||||
log.save!(validate: false) |
||||
end |
||||
|
||||
it "clear benefits and sets the log to in progress" do |
||||
expect(log.reload.benefits).to eq(1) |
||||
task.invoke |
||||
log.reload |
||||
expect(log.benefits).to eq(nil) |
||||
expect(log.status).to eq("in_progress") |
||||
end |
||||
end |
||||
|
||||
context "and there is a lettings log that trips the validation for person 8" do |
||||
let(:log) { build(:lettings_log, :completed, ecstat8: 1, benefits: 1, relat8: "P", assigned_to: create(:user), period: nil) } |
||||
|
||||
before do |
||||
log.status = "completed" |
||||
log.skip_update_status = true |
||||
log.save!(validate: false) |
||||
end |
||||
|
||||
it "clear benefits and sets the log to in progress" do |
||||
expect(log.reload.benefits).to eq(1) |
||||
task.invoke |
||||
log.reload |
||||
expect(log.benefits).to eq(nil) |
||||
expect(log.status).to eq("in_progress") |
||||
end |
||||
end |
||||
|
||||
context "and there is a pending lettings log that trips the validation" do |
||||
let(:log) { build(:lettings_log, :completed, ecstat1: 1, benefits: 1, assigned_to: create(:user), period: nil) } |
||||
|
||||
before do |
||||
log.status = "pending" |
||||
log.status_cache = "completed" |
||||
log.skip_update_status = true |
||||
log.save!(validate: false) |
||||
end |
||||
|
||||
it "clears benefits and updates the status cache" do |
||||
expect(log.reload.benefits).to eq(1) |
||||
task.invoke |
||||
log.reload |
||||
expect(log.benefits).to eq(nil) |
||||
expect(log.status_cache).to eq("in_progress") |
||||
end |
||||
|
||||
it "does not change the log status" do |
||||
task.invoke |
||||
log.reload |
||||
expect(log.status).to eq("pending") |
||||
end |
||||
end |
||||
end |
||||
end |
||||
end |
@ -1,111 +0,0 @@
|
||||
require "rails_helper" |
||||
require "rake" |
||||
|
||||
RSpec.describe "clear_invalidated_earnings" do |
||||
describe ":clear_invalidated_earnings", type: :task do |
||||
subject(:task) { Rake::Task["clear_invalidated_earnings"] } |
||||
|
||||
before do |
||||
Rake.application.rake_require("tasks/clear_invalidated_earnings") |
||||
Rake::Task.define_task(:environment) |
||||
task.reenable |
||||
FormHandler.instance.use_real_forms! |
||||
end |
||||
|
||||
context "when the rake task is run" do |
||||
context "and there are 2023 logs with invalid earnings" do |
||||
let(:user) { create(:user) } |
||||
let!(:lettings_log) { create(:lettings_log, :completed, assigned_to: user, voiddate: nil, mrcdate: nil, tenancycode: "123", propcode: "321") } |
||||
|
||||
before do |
||||
lettings_log.startdate = Time.zone.local(2023, 4, 4) |
||||
lettings_log.incfreq = 1 |
||||
lettings_log.earnings = 20 |
||||
lettings_log.hhmemb = 1 |
||||
lettings_log.ecstat1 = 1 |
||||
lettings_log.save!(validate: false) |
||||
end |
||||
|
||||
it "clears earnings" do |
||||
initial_updated_at = lettings_log.updated_at |
||||
expect(lettings_log.incfreq).to eq(1) |
||||
expect(lettings_log.earnings).to eq(20) |
||||
expect(lettings_log.hhmemb).to eq(1) |
||||
expect(lettings_log.ecstat1).to eq(1) |
||||
expect(Rails.logger).to receive(:info).with("Clearing earnings for lettings log #{lettings_log.id}, owning_organisation_id: #{lettings_log.owning_organisation_id}, managing_organisation_id: #{lettings_log.managing_organisation_id}, startdate: 2023-04-04, tenancy reference: 123, property reference: 321, assigned_to: #{user.email}(#{user.id}), earnings: 20, incfreq: 1") |
||||
|
||||
task.invoke |
||||
lettings_log.reload |
||||
|
||||
expect(lettings_log.incfreq).to eq(nil) |
||||
expect(lettings_log.earnings).to eq(nil) |
||||
expect(lettings_log.hhmemb).to eq(1) |
||||
expect(lettings_log.ecstat1).to eq(1) |
||||
expect(lettings_log.updated_at).not_to eq(initial_updated_at) |
||||
end |
||||
end |
||||
|
||||
context "and there are valid 2023 logs" do |
||||
let(:user) { create(:user) } |
||||
let!(:lettings_log) { create(:lettings_log, :completed, assigned_to: user, voiddate: nil, mrcdate: nil) } |
||||
|
||||
before do |
||||
lettings_log.startdate = Time.zone.local(2023, 4, 4) |
||||
lettings_log.incfreq = 1 |
||||
lettings_log.earnings = 95 |
||||
lettings_log.hhmemb = 1 |
||||
lettings_log.ecstat1 = 1 |
||||
lettings_log.save!(validate: false) |
||||
end |
||||
|
||||
it "does not update the logs" do |
||||
initial_updated_at = lettings_log.updated_at |
||||
expect(lettings_log.incfreq).to eq(1) |
||||
expect(lettings_log.earnings).to eq(95) |
||||
expect(lettings_log.hhmemb).to eq(1) |
||||
expect(lettings_log.ecstat1).to eq(1) |
||||
|
||||
task.invoke |
||||
lettings_log.reload |
||||
|
||||
expect(lettings_log.incfreq).to eq(1) |
||||
expect(lettings_log.earnings).to eq(95) |
||||
expect(lettings_log.hhmemb).to eq(1) |
||||
expect(lettings_log.ecstat1).to eq(1) |
||||
expect(lettings_log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
end |
||||
|
||||
context "and there are 2022 logs" do |
||||
let(:user) { create(:user) } |
||||
let!(:lettings_log) { create(:lettings_log, :completed, assigned_to: user, voiddate: nil, mrcdate: nil) } |
||||
|
||||
before do |
||||
lettings_log.startdate = Time.zone.local(2022, 4, 4) |
||||
lettings_log.incfreq = 1 |
||||
lettings_log.earnings = 20 |
||||
lettings_log.hhmemb = 1 |
||||
lettings_log.ecstat1 = 1 |
||||
lettings_log.save!(validate: false) |
||||
end |
||||
|
||||
it "does not update the logs" do |
||||
initial_updated_at = lettings_log.updated_at |
||||
expect(lettings_log.incfreq).to eq(1) |
||||
expect(lettings_log.earnings).to eq(20) |
||||
expect(lettings_log.hhmemb).to eq(1) |
||||
expect(lettings_log.ecstat1).to eq(1) |
||||
|
||||
task.invoke |
||||
lettings_log.reload |
||||
|
||||
expect(lettings_log.incfreq).to eq(1) |
||||
expect(lettings_log.earnings).to eq(20) |
||||
expect(lettings_log.hhmemb).to eq(1) |
||||
expect(lettings_log.ecstat1).to eq(1) |
||||
expect(lettings_log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
end |
||||
end |
||||
end |
||||
end |
@ -1,216 +0,0 @@
|
||||
require "rails_helper" |
||||
require "rake" |
||||
|
||||
RSpec.describe "correct_checkbox_values" do |
||||
describe ":correct_checkbox_values", type: :task do |
||||
subject(:task) { Rake::Task["correct_checkbox_values"] } |
||||
|
||||
let(:organisation) { create(:organisation, rent_periods: [2]) } |
||||
let(:user) { create(:user, organisation:) } |
||||
|
||||
before do |
||||
Rake.application.rake_require("tasks/correct_checkbox_values") |
||||
Rake::Task.define_task(:environment) |
||||
task.reenable |
||||
end |
||||
|
||||
context "when the rake task is run" do |
||||
context "and any of the reasonable_preference_reason options are 1" do |
||||
let(:bulk_upload) { create(:bulk_upload, :lettings, year: 2024, rent_type_fix_status: BulkUpload.rent_type_fix_statuses[:not_applied]) } |
||||
|
||||
it "sets the remaining options to 0" do |
||||
log = build(:lettings_log, :completed, reasonpref: 1, rp_homeless: 1, rp_hardship: nil, rp_medwel: nil, rp_insan_unsat: nil, rp_dontknow: nil, |
||||
bulk_upload:, assigned_to: user) |
||||
log.save!(validate: false) |
||||
initial_updated_at = log.updated_at |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.updated_at).not_to eq(initial_updated_at) |
||||
expect(log.status).to eq("completed") |
||||
expect(log.rp_homeless).to be(1) |
||||
expect(log.rp_hardship).to be(0) |
||||
expect(log.rp_medwel).to be(0) |
||||
expect(log.rp_insan_unsat).to be(0) |
||||
expect(log.rp_dontknow).to be(0) |
||||
end |
||||
|
||||
it "updates the reasonable preference reason values on a pending log" do |
||||
log = build(:lettings_log, :completed, status: "pending", reasonpref: 1, rp_homeless: 1, rp_hardship: nil, rp_medwel: 1, rp_insan_unsat: nil, rp_dontknow: nil, bulk_upload:, assigned_to: user) |
||||
log.save!(validate: false) |
||||
initial_updated_at = log.updated_at |
||||
expect(log.status).to eq("pending") |
||||
|
||||
task.invoke |
||||
log.reload |
||||
expect(log.rp_homeless).to be(1) |
||||
expect(log.rp_hardship).to be(0) |
||||
expect(log.rp_medwel).to be(1) |
||||
expect(log.rp_insan_unsat).to be(0) |
||||
expect(log.rp_dontknow).to be(0) |
||||
expect(log.status).to eq("pending") |
||||
expect(log.updated_at).not_to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "does not update logs if all unselected reasonable preference reason are alredy 0" do |
||||
log = build(:lettings_log, :completed, reasonpref: 1, rp_homeless: 0, rp_hardship: 1, rp_medwel: 0, rp_insan_unsat: 0, rp_dontknow: 0, bulk_upload:, assigned_to: user) |
||||
log.save!(validate: false) |
||||
initial_updated_at = log.updated_at |
||||
expect(log.status).to eq("completed") |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.status).to eq("completed") |
||||
expect(log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "updates the reasonable preference reason values if some of the checkbox values are nil" do |
||||
log = build(:lettings_log, :completed, status: "pending", reasonpref: 1, rp_homeless: 0, rp_hardship: nil, rp_medwel: 1, rp_insan_unsat: 0, rp_dontknow: 0, bulk_upload:, assigned_to: user) |
||||
log.save!(validate: false) |
||||
initial_updated_at = log.updated_at |
||||
expect(log.status).to eq("pending") |
||||
|
||||
task.invoke |
||||
log.reload |
||||
expect(log.rp_homeless).to be(0) |
||||
expect(log.rp_hardship).to be(0) |
||||
expect(log.rp_medwel).to be(1) |
||||
expect(log.rp_insan_unsat).to be(0) |
||||
expect(log.rp_dontknow).to be(0) |
||||
expect(log.status).to eq("pending") |
||||
expect(log.updated_at).not_to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "does not update the reasonable preference reason values on a 2023 log" do |
||||
log = build(:lettings_log, :completed, startdate: Time.zone.local(2023, 6, 6), reasonpref: 1, rp_homeless: 0, rp_hardship: nil, rp_medwel: 1, rp_insan_unsat: 0, rp_dontknow: 0, bulk_upload:, assigned_to: user) |
||||
log.save!(validate: false) |
||||
initial_updated_at = log.updated_at |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "does not update and logs error if a validation triggers" do |
||||
log = build(:lettings_log, :completed, postcode_full: "0", reasonpref: 1, rp_homeless: 0, rp_hardship: nil, rp_medwel: 1, rp_insan_unsat: 0, rp_dontknow: 0, bulk_upload:, assigned_to: user) |
||||
log.save!(validate: false) |
||||
initial_updated_at = log.updated_at |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
end |
||||
|
||||
context "and any of the illness_type options are 1" do |
||||
let(:bulk_upload) { create(:bulk_upload, :lettings, year: 2024, rent_type_fix_status: BulkUpload.rent_type_fix_statuses[:not_applied]) } |
||||
|
||||
it "sets the remaining options to 0" do |
||||
log = build(:lettings_log, :completed, illness: 1, illness_type_1: 1, illness_type_2: nil, illness_type_3: nil, illness_type_4: nil, illness_type_5: nil, illness_type_6: nil, illness_type_7: nil, illness_type_8: nil, illness_type_9: nil, illness_type_10: nil, |
||||
bulk_upload:, assigned_to: user) |
||||
log.save!(validate: false) |
||||
initial_updated_at = log.updated_at |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.updated_at).not_to eq(initial_updated_at) |
||||
expect(log.status).to eq("completed") |
||||
expect(log.illness_type_1).to be(1) |
||||
expect(log.illness_type_2).to be(0) |
||||
expect(log.illness_type_3).to be(0) |
||||
expect(log.illness_type_4).to be(0) |
||||
expect(log.illness_type_5).to be(0) |
||||
expect(log.illness_type_6).to be(0) |
||||
expect(log.illness_type_7).to be(0) |
||||
expect(log.illness_type_8).to be(0) |
||||
expect(log.illness_type_9).to be(0) |
||||
expect(log.illness_type_10).to be(0) |
||||
end |
||||
|
||||
it "updates the reasonable preference reason values on a pending log" do |
||||
log = build(:lettings_log, :completed, status: "pending", illness: 1, illness_type_1: 1, illness_type_2: nil, illness_type_3: nil, illness_type_4: nil, illness_type_5: nil, illness_type_6: nil, illness_type_7: nil, illness_type_8: nil, illness_type_9: nil, illness_type_10: nil, bulk_upload:, assigned_to: user) |
||||
log.save!(validate: false) |
||||
initial_updated_at = log.updated_at |
||||
expect(log.status).to eq("pending") |
||||
|
||||
task.invoke |
||||
log.reload |
||||
expect(log.illness_type_1).to be(1) |
||||
expect(log.illness_type_2).to be(0) |
||||
expect(log.illness_type_3).to be(0) |
||||
expect(log.illness_type_4).to be(0) |
||||
expect(log.illness_type_5).to be(0) |
||||
expect(log.illness_type_6).to be(0) |
||||
expect(log.illness_type_7).to be(0) |
||||
expect(log.illness_type_8).to be(0) |
||||
expect(log.illness_type_9).to be(0) |
||||
expect(log.illness_type_10).to be(0) |
||||
expect(log.status).to eq("pending") |
||||
expect(log.updated_at).not_to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "does not update logs if all unselected reasonable preference reason are alredy 0" do |
||||
log = build(:lettings_log, :completed, illness: 1, illness_type_1: 0, illness_type_2: 1, illness_type_3: 0, illness_type_4: 0, illness_type_5: 0, illness_type_6: 0, illness_type_7: 0, illness_type_8: 0, illness_type_9: 0, illness_type_10: 0, bulk_upload:, assigned_to: user) |
||||
log.save!(validate: false) |
||||
initial_updated_at = log.updated_at |
||||
expect(log.status).to eq("completed") |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.status).to eq("completed") |
||||
expect(log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "updates the reasonable preference reason values if some of the checkbox values are nil" do |
||||
log = build(:lettings_log, :completed, status: "pending", illness: 1, illness_type_1: 0, illness_type_2: nil, illness_type_3: 1, illness_type_4: 0, illness_type_5: 0, illness_type_6: nil, illness_type_7: nil, illness_type_8: nil, illness_type_9: nil, illness_type_10: nil, bulk_upload:, assigned_to: user) |
||||
log.save!(validate: false) |
||||
initial_updated_at = log.updated_at |
||||
expect(log.status).to eq("pending") |
||||
|
||||
task.invoke |
||||
log.reload |
||||
expect(log.illness_type_1).to be(0) |
||||
expect(log.illness_type_2).to be(0) |
||||
expect(log.illness_type_3).to be(1) |
||||
expect(log.illness_type_4).to be(0) |
||||
expect(log.illness_type_5).to be(0) |
||||
expect(log.illness_type_6).to be(0) |
||||
expect(log.illness_type_7).to be(0) |
||||
expect(log.illness_type_8).to be(0) |
||||
expect(log.illness_type_9).to be(0) |
||||
expect(log.illness_type_10).to be(0) |
||||
expect(log.status).to eq("pending") |
||||
expect(log.updated_at).not_to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "does not update the reasonable preference reason values on a 2023 log" do |
||||
log = build(:lettings_log, :completed, startdate: Time.zone.local(2023, 6, 6), illness: 1, illness_type_1: 0, illness_type_2: nil, illness_type_3: 1, illness_type_4: 0, illness_type_5: 0, illness_type_6: nil, illness_type_7: nil, illness_type_8: nil, illness_type_9: nil, illness_type_10: nil, bulk_upload:, assigned_to: user) |
||||
log.save!(validate: false) |
||||
initial_updated_at = log.updated_at |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "does not update and logs error if a validation triggers" do |
||||
log = build(:lettings_log, :completed, postcode_full: "0", illness: 1, illness_type_1: 0, illness_type_2: nil, illness_type_3: 1, illness_type_4: 0, illness_type_5: 0, illness_type_6: nil, illness_type_7: nil, illness_type_8: nil, illness_type_9: nil, illness_type_10: nil, bulk_upload:, assigned_to: user) |
||||
log.save!(validate: false) |
||||
initial_updated_at = log.updated_at |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
end |
||||
end |
||||
end |
||||
end |
@ -1,111 +0,0 @@
|
||||
require "rails_helper" |
||||
require "rake" |
||||
|
||||
RSpec.describe "correct_reasonpref_values" do |
||||
describe ":correct_reasonpref_values", type: :task do |
||||
subject(:task) { Rake::Task["correct_reasonpref_values"] } |
||||
|
||||
let(:organisation) { create(:organisation, rent_periods: [2]) } |
||||
let(:user) { create(:user, organisation:) } |
||||
|
||||
before do |
||||
Rake.application.rake_require("tasks/correct_reasonpref_values") |
||||
Rake::Task.define_task(:environment) |
||||
task.reenable |
||||
end |
||||
|
||||
context "when the rake task is run" do |
||||
context "and any of the reasonable_preference_reason options are not 1, 0 or nil" do |
||||
let(:bulk_upload) { create(:bulk_upload, :lettings, year: 2024, rent_type_fix_status: BulkUpload.rent_type_fix_statuses[:not_applied]) } |
||||
|
||||
it "sets the options to 0" do |
||||
log = build(:lettings_log, :completed, reasonpref: 1, rp_homeless: -2, rp_hardship: 2, rp_medwel: 3, rp_insan_unsat: 4, rp_dontknow: 1, |
||||
bulk_upload:, assigned_to: user) |
||||
log.save!(validate: false) |
||||
initial_updated_at = log.updated_at |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.updated_at).not_to eq(initial_updated_at) |
||||
expect(log.status).to eq("completed") |
||||
expect(log.rp_homeless).to be(0) |
||||
expect(log.rp_hardship).to be(0) |
||||
expect(log.rp_medwel).to be(0) |
||||
expect(log.rp_insan_unsat).to be(0) |
||||
expect(log.rp_dontknow).to be(1) |
||||
end |
||||
|
||||
it "updates the reasonable preference reason values on a pending log" do |
||||
log = build(:lettings_log, :completed, status: "pending", reasonpref: 1, rp_homeless: -2, rp_hardship: 1, rp_medwel: 3, rp_insan_unsat: 4, rp_dontknow: 2, bulk_upload:, assigned_to: user) |
||||
log.save!(validate: false) |
||||
initial_updated_at = log.updated_at |
||||
expect(log.status).to eq("pending") |
||||
|
||||
task.invoke |
||||
log.reload |
||||
expect(log.rp_homeless).to be(0) |
||||
expect(log.rp_hardship).to be(1) |
||||
expect(log.rp_medwel).to be(0) |
||||
expect(log.rp_insan_unsat).to be(0) |
||||
expect(log.rp_dontknow).to be(0) |
||||
expect(log.status).to eq("pending") |
||||
expect(log.updated_at).not_to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "does not update logs with valid values" do |
||||
log = build(:lettings_log, :completed, reasonpref: 1, rp_homeless: 0, rp_hardship: 1, rp_medwel: 0, rp_insan_unsat: 0, rp_dontknow: 0, bulk_upload:, assigned_to: user) |
||||
log.save!(validate: false) |
||||
initial_updated_at = log.updated_at |
||||
expect(log.status).to eq("completed") |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.status).to eq("completed") |
||||
expect(log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "updates the reasonable preference reason values if some of the checkbox values are valid" do |
||||
log = build(:lettings_log, :completed, status: "pending", reasonpref: 1, rp_homeless: 0, rp_hardship: 2, rp_medwel: 1, rp_insan_unsat: 0, rp_dontknow: 0, bulk_upload:, assigned_to: user) |
||||
log.save!(validate: false) |
||||
initial_updated_at = log.updated_at |
||||
expect(log.status).to eq("pending") |
||||
|
||||
task.invoke |
||||
log.reload |
||||
expect(log.rp_homeless).to be(0) |
||||
expect(log.rp_hardship).to be(0) |
||||
expect(log.rp_medwel).to be(1) |
||||
expect(log.rp_insan_unsat).to be(0) |
||||
expect(log.rp_dontknow).to be(0) |
||||
expect(log.status).to eq("pending") |
||||
expect(log.updated_at).not_to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "updates the reasonable preference reason values on a 2023 log" do |
||||
log = build(:lettings_log, :completed, startdate: Time.zone.local(2023, 6, 6), reasonpref: 1, rp_homeless: 0, rp_hardship: 2, rp_medwel: 1, rp_insan_unsat: 0, rp_dontknow: 0, bulk_upload:, assigned_to: user) |
||||
log.save!(validate: false) |
||||
initial_updated_at = log.updated_at |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.updated_at).to eq(initial_updated_at) |
||||
expect(log.rp_hardship).to eq(0) |
||||
end |
||||
|
||||
it "does not update and logs error if a validation triggers" do |
||||
log = build(:lettings_log, :completed, postcode_full: "0", reasonpref: 1, rp_homeless: 0, rp_hardship: 2, rp_medwel: 1, rp_insan_unsat: 0, rp_dontknow: 0, bulk_upload:, assigned_to: user) |
||||
log.save!(validate: false) |
||||
initial_updated_at = log.updated_at |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
end |
||||
end |
||||
end |
||||
end |
@ -1,254 +0,0 @@
|
||||
require "rails_helper" |
||||
require "rake" |
||||
|
||||
RSpec.describe "correct_rent_type_value" do |
||||
describe ":correct_rent_type_value", type: :task do |
||||
subject(:task) { Rake::Task["correct_rent_type_value"] } |
||||
|
||||
before do |
||||
Rake.application.rake_require("tasks/correct_rent_type_value") |
||||
Rake::Task.define_task(:environment) |
||||
task.reenable |
||||
end |
||||
|
||||
context "when the rake task is run" do |
||||
context "and rent_type is 1" do |
||||
let(:bulk_upload) { create(:bulk_upload, :lettings, year: 2024, rent_type_fix_status: BulkUpload.rent_type_fix_statuses[:not_applied]) } |
||||
let(:bulk_upload_2023) { create(:bulk_upload, :lettings, year: 2023, rent_type_fix_status: BulkUpload.rent_type_fix_statuses[:not_applied]) } |
||||
|
||||
before do |
||||
bulk_upload.save! |
||||
end |
||||
|
||||
it "updates the rent_type value on a log where it was set to 1 on create" do |
||||
log = create(:lettings_log, :completed, rent_type: 1, bulk_upload:) |
||||
initial_updated_at = log.updated_at |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.rent_type).to be(0) |
||||
expect(log.status).to eq("completed") |
||||
expect(log.updated_at).not_to eq(initial_updated_at) |
||||
expect(bulk_upload.reload.rent_type_fix_status).to eq(BulkUpload.rent_type_fix_statuses[:applied]) |
||||
end |
||||
|
||||
it "updates the rent_type value on a pending log where it was set to 1 on create" do |
||||
log = build(:lettings_log, :completed, rent_type: 1, bulk_upload:, status: "pending") |
||||
log.save! |
||||
initial_updated_at = log.updated_at |
||||
expect(log.status).to eq("pending") |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.rent_type).to be(0) |
||||
expect(log.status).to eq("pending") |
||||
expect(log.updated_at).not_to eq(initial_updated_at) |
||||
expect(bulk_upload.reload.rent_type_fix_status).to eq(BulkUpload.rent_type_fix_statuses[:applied]) |
||||
end |
||||
|
||||
it "updates the rent_type value on a deleted log where it was set to 1 on create" do |
||||
log = create(:lettings_log, :completed, rent_type: 1, bulk_upload:, discarded_at: Time.zone.yesterday) |
||||
initial_updated_at = log.updated_at |
||||
expect(log.status).to eq("deleted") |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.rent_type).to be(0) |
||||
expect(log.status).to eq("deleted") |
||||
expect(log.updated_at).not_to eq(initial_updated_at) |
||||
expect(bulk_upload.reload.rent_type_fix_status).to eq(BulkUpload.rent_type_fix_statuses[:applied]) |
||||
end |
||||
|
||||
it "updates the rent_type value on a log where it was set to 1 on create and other fields have since changed" do |
||||
log = create(:lettings_log, :completed, rent_type: 1, bulk_upload:) |
||||
log.update!(tenancycode: "abc") |
||||
initial_updated_at = log.updated_at |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.rent_type).to be(0) |
||||
expect(log.status).to eq("completed") |
||||
expect(log.updated_at).not_to eq(initial_updated_at) |
||||
expect(bulk_upload.reload.rent_type_fix_status).to eq(BulkUpload.rent_type_fix_statuses[:applied]) |
||||
end |
||||
|
||||
it "does not update the rent_type value on a log if it has since been changed" do |
||||
log = create(:lettings_log, :completed, rent_type: 1, bulk_upload:) |
||||
log.update!(rent_type: 0) |
||||
initial_updated_at = log.updated_at |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.rent_type).to be(0) |
||||
expect(log.status).to eq("completed") |
||||
expect(log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "does not update the rent_type value on a 2023 log turned 2024" do |
||||
log = build(:lettings_log, :completed, startdate: Time.zone.local(2023, 6, 6), rent_type: 1, bulk_upload: bulk_upload_2023) |
||||
log.save!(validate: false) |
||||
log.address_line1_input = log.address_line1 |
||||
log.postcode_full_input = log.postcode_full |
||||
log.nationality_all_group = 826 |
||||
log.uprn = "10033558653" |
||||
log.uprn_selection = 1 |
||||
log.startdate = Time.zone.today |
||||
log.save! |
||||
|
||||
initial_updated_at = log.updated_at |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.rent_type).to be(1) |
||||
expect(log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "does not update and logs error if a validation triggers" do |
||||
log = build(:lettings_log, :completed, startdate: Time.zone.local(2021, 6, 6), rent_type: 1, bulk_upload:) |
||||
log.save!(validate: false) |
||||
initial_updated_at = log.updated_at |
||||
|
||||
expect(Rails.logger).to receive(:error).with(/Log #{log.id} rent_type could not be updated from 1 to 0. Error: /) |
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.rent_type).to be(1) |
||||
expect(log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
|
||||
context "when the rent_type_fix_status is not_needed" do |
||||
let(:bulk_upload) { create(:bulk_upload, :lettings, year: 2024, rent_type_fix_status: BulkUpload.rent_type_fix_statuses[:not_needed]) } |
||||
|
||||
before do |
||||
bulk_upload.save! |
||||
end |
||||
|
||||
it "does not update the rent_type values on logs" do |
||||
log = create(:lettings_log, :completed, rent_type: 1, bulk_upload:) |
||||
initial_updated_at = log.updated_at |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.rent_type).to be(1) |
||||
expect(log.updated_at).to eq(initial_updated_at) |
||||
expect(bulk_upload.reload.rent_type_fix_status).to eq(BulkUpload.rent_type_fix_statuses[:not_needed]) |
||||
end |
||||
end |
||||
end |
||||
|
||||
context "and rent_type is 2" do |
||||
let(:bulk_upload) { create(:bulk_upload, :lettings, year: 2024, rent_type_fix_status: BulkUpload.rent_type_fix_statuses[:not_applied]) } |
||||
let(:bulk_upload_2023) { create(:bulk_upload, :lettings, year: 2023, rent_type_fix_status: BulkUpload.rent_type_fix_statuses[:not_applied]) } |
||||
|
||||
before do |
||||
bulk_upload.save! |
||||
end |
||||
|
||||
it "updates the rent_type value on a log where it was set to 2 on create" do |
||||
log = create(:lettings_log, :completed, rent_type: 2, bulk_upload:) |
||||
initial_updated_at = log.updated_at |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.rent_type).to be(1) |
||||
expect(log.status).to eq("completed") |
||||
expect(log.updated_at).not_to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "updates the rent_type value on a pending log where it was set to 2 on create" do |
||||
log = build(:lettings_log, :completed, rent_type: 2, bulk_upload:, status: "pending") |
||||
log.save! |
||||
initial_updated_at = log.updated_at |
||||
expect(log.status).to eq("pending") |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.rent_type).to be(1) |
||||
expect(log.status).to eq("pending") |
||||
expect(log.updated_at).not_to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "updates the rent_type value on a deleted log where it was set to 2 on create" do |
||||
log = create(:lettings_log, :completed, rent_type: 2, bulk_upload:, discarded_at: Time.zone.yesterday) |
||||
initial_updated_at = log.updated_at |
||||
expect(log.status).to eq("deleted") |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.rent_type).to be(1) |
||||
expect(log.status).to eq("deleted") |
||||
expect(log.updated_at).not_to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "updates the rent_type value on a log where it was set to 2 on create and other fields have since changed" do |
||||
log = create(:lettings_log, :completed, rent_type: 2, bulk_upload:) |
||||
log.update!(tenancycode: "abc") |
||||
initial_updated_at = log.updated_at |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.rent_type).to be(1) |
||||
expect(log.status).to eq("completed") |
||||
expect(log.updated_at).not_to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "does not update the rent_type value on a log if it has since been changed" do |
||||
log = create(:lettings_log, :completed, rent_type: 2, bulk_upload:) |
||||
log.update!(rent_type: 0) |
||||
initial_updated_at = log.updated_at |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.rent_type).to be(0) |
||||
expect(log.status).to eq("completed") |
||||
expect(log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "does not update the rent_type value on a 2023 log turned 2024" do |
||||
log = build(:lettings_log, :completed, startdate: Time.zone.local(2023, 6, 6), rent_type: 2, bulk_upload: bulk_upload_2023) |
||||
log.save!(validate: false) |
||||
log.address_line1_input = log.address_line1 |
||||
log.postcode_full_input = log.postcode_full |
||||
log.nationality_all_group = 826 |
||||
log.uprn = "10033558653" |
||||
log.uprn_selection = 1 |
||||
log.startdate = Time.zone.today |
||||
log.save! |
||||
|
||||
initial_updated_at = log.updated_at |
||||
|
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.rent_type).to be(2) |
||||
expect(log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "does not update and logs error if a validation triggers" do |
||||
log = build(:lettings_log, :completed, startdate: Time.zone.local(2021, 6, 6), rent_type: 2, bulk_upload:) |
||||
log.save!(validate: false) |
||||
initial_updated_at = log.updated_at |
||||
|
||||
expect(Rails.logger).to receive(:error).with(/Log #{log.id} rent_type could not be updated from 2 to 1. Error: /) |
||||
task.invoke |
||||
log.reload |
||||
|
||||
expect(log.rent_type).to be(2) |
||||
expect(log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
end |
||||
end |
||||
end |
||||
end |
@ -1,53 +0,0 @@
|
||||
require "rails_helper" |
||||
require "rake" |
||||
|
||||
RSpec.describe "recalculate_status_after_sales_over_retirement_age_validation" do |
||||
describe ":recalculate_status_over_retirement", type: :task do |
||||
subject(:task) { Rake::Task["recalculate_status_over_retirement"] } |
||||
|
||||
before do |
||||
Rake.application.rake_require("tasks/recalculate_status_after_sales_over_retirement_age_validation") |
||||
Rake::Task.define_task(:environment) |
||||
task.reenable |
||||
end |
||||
|
||||
context "when the rake task is run" do |
||||
context "and there is a completed sales log that trips the validation" do |
||||
let(:log) { create(:sales_log, :completed, ecstat1: 1, age1: 67) } |
||||
|
||||
before do |
||||
log.status = "completed" |
||||
log.save! |
||||
end |
||||
|
||||
it "sets the log to in progress" do |
||||
task.invoke |
||||
log.reload |
||||
expect(log.status).to eq("in_progress") |
||||
end |
||||
end |
||||
|
||||
context "and there is a pending sales log that trips the validation" do |
||||
let(:log) { create(:sales_log, :completed, ecstat2: 1, age2: 70) } |
||||
|
||||
before do |
||||
log.status = "pending" |
||||
log.status_cache = "completed" |
||||
log.save! |
||||
end |
||||
|
||||
it "updates the status cache" do |
||||
task.invoke |
||||
log.reload |
||||
expect(log.status_cache).to eq("in_progress") |
||||
end |
||||
|
||||
it "does not change the log status" do |
||||
task.invoke |
||||
log.reload |
||||
expect(log.status).to eq("pending") |
||||
end |
||||
end |
||||
end |
||||
end |
||||
end |
@ -1,146 +0,0 @@
|
||||
require "rails_helper" |
||||
require "rake" |
||||
|
||||
RSpec.describe "update_created_by_values" do |
||||
describe ":update_created_by_values", type: :task do |
||||
subject(:task) { Rake::Task["update_created_by_values"] } |
||||
|
||||
before do |
||||
Rake.application.rake_require("tasks/update_created_by_values") |
||||
Rake::Task.define_task(:environment) |
||||
task.reenable |
||||
end |
||||
|
||||
context "when the rake task is run" do |
||||
let(:user) { create(:user) } |
||||
|
||||
context "with bulk upload id" do |
||||
let(:bulk_upload) { create(:bulk_upload) } |
||||
let(:lettings_log) { create(:lettings_log, :completed, assigned_to: user, bulk_upload_id: bulk_upload.id, updated_at: Time.zone.yesterday) } |
||||
let(:sales_log) { create(:sales_log, :completed, assigned_to: user, bulk_upload_id: bulk_upload.id, updated_at: Time.zone.yesterday) } |
||||
|
||||
it "updates created_by to bulk upload user id for lettings log" do |
||||
initial_updated_at = lettings_log.updated_at |
||||
expect(lettings_log.created_by_id).to eq(user.id) |
||||
expect(lettings_log.assigned_to_id).to eq(user.id) |
||||
task.invoke |
||||
lettings_log.reload |
||||
expect(lettings_log.created_by_id).to eq(bulk_upload.user_id) |
||||
expect(lettings_log.assigned_to_id).to eq(user.id) |
||||
expect(lettings_log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "updates created_by to bulk upload user id for sales log" do |
||||
initial_updated_at = sales_log.updated_at |
||||
expect(sales_log.created_by_id).to eq(user.id) |
||||
expect(sales_log.assigned_to_id).to eq(user.id) |
||||
task.invoke |
||||
sales_log.reload |
||||
expect(sales_log.created_by_id).to eq(bulk_upload.user_id) |
||||
expect(sales_log.assigned_to_id).to eq(user.id) |
||||
expect(sales_log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
end |
||||
|
||||
context "without bulk upload id" do |
||||
context "and version whodunnit exists for create" do |
||||
let(:lettings_log) { create(:lettings_log, :completed, assigned_to: user, created_by_id: nil, updated_at: Time.zone.yesterday) } |
||||
let(:sales_log) { create(:sales_log, :completed, assigned_to: user, created_by_id: nil, updated_at: Time.zone.yesterday) } |
||||
let(:other_user) { create(:user, organisation: user.organisation) } |
||||
|
||||
before do |
||||
PaperTrail::Version.find_by(item_id: lettings_log.id, item_type: "LettingsLog", event: "create").update!(whodunnit: other_user.to_global_id.uri.to_s) |
||||
PaperTrail::Version.find_by(item_id: sales_log.id, item_type: "SalesLog", event: "create").update!(whodunnit: other_user.to_global_id.uri.to_s) |
||||
end |
||||
|
||||
it "updates created_by to create whodunnit for lettings" do |
||||
initial_updated_at = lettings_log.updated_at |
||||
expect(lettings_log.created_by_id).to eq(nil) |
||||
expect(lettings_log.assigned_to_id).to eq(user.id) |
||||
task.invoke |
||||
lettings_log.reload |
||||
expect(lettings_log.created_by_id).to eq(other_user.id) |
||||
expect(lettings_log.assigned_to_id).to eq(user.id) |
||||
expect(lettings_log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "updates created_by to create whodunnit for sales" do |
||||
initial_updated_at = sales_log.updated_at |
||||
expect(sales_log.created_by_id).to eq(nil) |
||||
expect(sales_log.assigned_to_id).to eq(user.id) |
||||
task.invoke |
||||
sales_log.reload |
||||
expect(sales_log.created_by_id).to eq(other_user.id) |
||||
expect(sales_log.assigned_to_id).to eq(user.id) |
||||
expect(sales_log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
end |
||||
|
||||
context "and version whodunnit does not exist for create" do |
||||
let(:lettings_log) { create(:lettings_log, :completed, assigned_to: user, created_by_id: nil, updated_at: Time.zone.yesterday) } |
||||
let(:sales_log) { create(:sales_log, :completed, assigned_to: user, created_by_id: nil, updated_at: Time.zone.yesterday) } |
||||
|
||||
before do |
||||
PaperTrail::Version.find_by(item_id: lettings_log.id, event: "create").update!(whodunnit: nil) |
||||
PaperTrail::Version.find_by(item_id: sales_log.id, event: "create").update!(whodunnit: nil) |
||||
end |
||||
|
||||
it "sets created_by to assigned_to for lettings" do |
||||
initial_updated_at = lettings_log.updated_at |
||||
expect(lettings_log.created_by_id).to eq(nil) |
||||
expect(lettings_log.assigned_to_id).to eq(user.id) |
||||
task.invoke |
||||
lettings_log.reload |
||||
expect(lettings_log.created_by_id).to eq(user.id) |
||||
expect(lettings_log.assigned_to_id).to eq(user.id) |
||||
expect(lettings_log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "sets created_by to assigned_to for sales" do |
||||
initial_updated_at = sales_log.updated_at |
||||
expect(sales_log.created_by_id).to eq(nil) |
||||
expect(sales_log.assigned_to_id).to eq(user.id) |
||||
task.invoke |
||||
sales_log.reload |
||||
expect(sales_log.created_by_id).to eq(user.id) |
||||
expect(sales_log.assigned_to_id).to eq(user.id) |
||||
expect(sales_log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
end |
||||
|
||||
context "and version whodunnit is not a User for create" do |
||||
let(:lettings_log) { create(:lettings_log, :completed, assigned_to: user, created_by_id: nil, updated_at: Time.zone.yesterday) } |
||||
let(:sales_log) { create(:sales_log, :completed, assigned_to: user, created_by_id: nil, updated_at: Time.zone.yesterday) } |
||||
let(:other_user) { create(:user, organisation: user.organisation) } |
||||
|
||||
before do |
||||
PaperTrail::Version.find_by(item_id: lettings_log.id, item_type: "LettingsLog", event: "create").update!(whodunnit: other_user.email) |
||||
PaperTrail::Version.find_by(item_id: sales_log.id, item_type: "SalesLog", event: "create").update!(whodunnit: other_user.email) |
||||
end |
||||
|
||||
it "sets created_by to assigned_to for lettings" do |
||||
initial_updated_at = lettings_log.updated_at |
||||
expect(lettings_log.created_by_id).to eq(nil) |
||||
expect(lettings_log.assigned_to_id).to eq(user.id) |
||||
task.invoke |
||||
lettings_log.reload |
||||
expect(lettings_log.created_by_id).to eq(user.id) |
||||
expect(lettings_log.assigned_to_id).to eq(user.id) |
||||
expect(lettings_log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
|
||||
it "sets created_by to assigned_to for sales" do |
||||
initial_updated_at = sales_log.updated_at |
||||
expect(sales_log.created_by_id).to eq(nil) |
||||
expect(sales_log.assigned_to_id).to eq(user.id) |
||||
task.invoke |
||||
sales_log.reload |
||||
expect(sales_log.created_by_id).to eq(user.id) |
||||
expect(sales_log.assigned_to_id).to eq(user.id) |
||||
expect(sales_log.updated_at).to eq(initial_updated_at) |
||||
end |
||||
end |
||||
end |
||||
end |
||||
end |
||||
end |
@ -1,211 +0,0 @@
|
||||
require "rails_helper" |
||||
require "rake" |
||||
|
||||
RSpec.describe "update_manual_address_entry_selected_preexisting_logs_spec", type: :task do |
||||
before do |
||||
Rake.application.rake_require("tasks/update_manual_address_entry_selected_prexisting_logs") |
||||
Rake::Task.define_task(:environment) |
||||
task.reenable |
||||
end |
||||
|
||||
describe "bulk_update:update_manual_address_entry_selected" 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 |
||||
|
||||
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 |
||||
|
||||
describe "bulk_update:update_postcode_full_preexisting_manual_entry_logs" do |
||||
let(:task) { Rake::Task["bulk_update:update_postcode_full_preexisting_manual_entry_logs"] } |
||||
|
||||
let(:lettings_log_to_fix) do |
||||
build(:lettings_log, :inprogress_without_address_fields, startdate: Time.zone.local(2024, 6, 1), updated_at: Time.zone.parse("2025-03-19 16:30:00")) |
||||
end |
||||
|
||||
let(:bu_lettings_log_to_fix) do |
||||
build(:lettings_log, :inprogress_without_address_fields, startdate: Time.zone.local(2024, 6, 1), creation_method: "bulk upload", updated_at: Time.zone.parse("2025-03-19 16:30:00")) |
||||
end |
||||
|
||||
let(:lettings_log_not_to_fix) do |
||||
build(:lettings_log, :inprogress_without_address_fields, startdate: Time.zone.local(2024, 6, 1), updated_at: Time.zone.parse("2025-03-19 15:30:00")) |
||||
end |
||||
|
||||
before do |
||||
lettings_log_to_fix.manual_address_entry_selected = true |
||||
lettings_log_to_fix.address_line1 = "1 Test Street" |
||||
lettings_log_to_fix.address_line2 = "Testville" |
||||
lettings_log_to_fix.town_or_city = "Testford" |
||||
lettings_log_to_fix.postcode_full = nil |
||||
lettings_log_to_fix.address_line1_input = "1 Test Street" |
||||
lettings_log_to_fix.postcode_full_input = "SW1 2BB" |
||||
lettings_log_to_fix.save!(validate: false) |
||||
|
||||
bu_lettings_log_to_fix.manual_address_entry_selected = true |
||||
bu_lettings_log_to_fix.address_line1 = "1 Test Street" |
||||
bu_lettings_log_to_fix.address_line2 = "Testville" |
||||
bu_lettings_log_to_fix.town_or_city = "Testford" |
||||
bu_lettings_log_to_fix.postcode_full = nil |
||||
bu_lettings_log_to_fix.address_line1_as_entered = "1 Test Street" |
||||
bu_lettings_log_to_fix.postcode_full_as_entered = "SW1 2BB" |
||||
bu_lettings_log_to_fix.save!(validate: false) |
||||
|
||||
lettings_log_not_to_fix.postcode_full = nil |
||||
lettings_log_not_to_fix.save!(validate: false) |
||||
end |
||||
|
||||
context "when running the task" do |
||||
it "updates logs that meet the criteria" do |
||||
expect(lettings_log_to_fix.postcode_full).to be_nil |
||||
expect(lettings_log_to_fix.address_line1).to eq("1 Test Street") |
||||
expect(lettings_log_to_fix.address_line2).to eq("Testville") |
||||
expect(lettings_log_to_fix.town_or_city).to eq("Testford") |
||||
expect(lettings_log_to_fix.address_line1_input).to eq("1 Test Street") |
||||
expect(lettings_log_to_fix.postcode_full_input).to eq("SW1 2BB") |
||||
|
||||
expect(bu_lettings_log_to_fix.postcode_full).to be_nil |
||||
expect(bu_lettings_log_to_fix.address_line1_input).to be_nil |
||||
expect(bu_lettings_log_to_fix.address_line1).to eq("1 Test Street") |
||||
expect(bu_lettings_log_to_fix.address_line2).to eq("Testville") |
||||
expect(bu_lettings_log_to_fix.town_or_city).to eq("Testford") |
||||
expect(bu_lettings_log_to_fix.address_line1_as_entered).to eq("1 Test Street") |
||||
expect(bu_lettings_log_to_fix.postcode_full_as_entered).to eq("SW1 2BB") |
||||
|
||||
task.invoke |
||||
|
||||
lettings_log_to_fix.reload |
||||
bu_lettings_log_to_fix.reload |
||||
|
||||
expect(lettings_log_to_fix.postcode_full).to eq(lettings_log_to_fix.postcode_full_input) |
||||
expect(lettings_log_to_fix.postcode_full).to eq("SW1 2BB") |
||||
expect(bu_lettings_log_to_fix.postcode_full).to eq(bu_lettings_log_to_fix.postcode_full_as_entered) |
||||
expect(bu_lettings_log_to_fix.postcode_full).to eq("SW1 2BB") |
||||
end |
||||
|
||||
it "does not update logs that do not meet the criteria" do |
||||
task.invoke |
||||
|
||||
lettings_log_not_to_fix.reload |
||||
|
||||
expect(lettings_log_not_to_fix.postcode_full).to be_nil |
||||
end |
||||
end |
||||
end |
||||
end |
Loading…
Reference in new issue