Browse Source
* test tests in April * update tests where 2014 is assumed * update test where time moving is assumed * update rake task tests that only affect 2024 logs * update another 2024 assumption * handle null period in validation * give pages different ids in SharedOwnershipInitialPurchase and SharedOwnershipStaircasingTransaction sections * refactor to remove unnecessary method * delete some old rake tasks and tests * CLDC-3899 remove flaky date comparison from tests * CLDC-3899 fix flaky test occasionally picking bad input * fix test year setup * add relat mapping for log_to_csv * temp disable fail-fast for ease of testing * specify 2024 in 2024-specific test * Revert "temp disable fail-fast for ease of testing" This reverts commitpull/3013/head^2 v0.5.56993d29866
. * Revert "test tests in April" This reverts commitf5635dba11
. * pass test in 2024 and 2025 * fix test to 2024 * temp disable fail-fast again * Revert "temp disable fail-fast again" This reverts commit55d3e1c7d8
. --------- Co-authored-by: Carolyn <carolyn.barker@softwire.com>
38 changed files with 145 additions and 1184 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,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 |
Loading…
Reference in new issue