From be627284001c184619ab35604542bd4d58660d86 Mon Sep 17 00:00:00 2001 From: Kat Date: Mon, 27 Nov 2023 10:49:42 +0000 Subject: [PATCH] skip_dpo_validation when merging orgs --- app/models/log.rb | 2 +- app/models/validations/setup_validations.rb | 2 ++ app/models/validations/shared_validations.rb | 2 ++ app/services/merge/merge_organisations_service.rb | 9 ++++++--- .../merge/merge_organisations_service_spec.rb | 15 ++++++++------- 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/app/models/log.rb b/app/models/log.rb index 7870076da..ca10b94e5 100644 --- a/app/models/log.rb +++ b/app/models/log.rb @@ -50,7 +50,7 @@ class Log < ApplicationRecord scope :imported_2023_with_old_form_id, -> { imported.filter_by_year(2023).has_old_form_id } scope :imported_2023, -> { imported.filter_by_year(2023) } - attr_accessor :skip_update_status, :skip_update_uprn_confirmed + attr_accessor :skip_update_status, :skip_update_uprn_confirmed, :skip_dpo_validation def process_uprn_change! if uprn.present? diff --git a/app/models/validations/setup_validations.rb b/app/models/validations/setup_validations.rb index 3fd760c30..f95f447fc 100644 --- a/app/models/validations/setup_validations.rb +++ b/app/models/validations/setup_validations.rb @@ -83,6 +83,8 @@ module Validations::SetupValidations end def validate_managing_organisation_data_sharing_agremeent_signed(record) + return if record.skip_dpo_validation + if record.managing_organisation_id_changed? && record.managing_organisation.present? && !record.managing_organisation.data_protection_confirmed? record.errors.add :managing_organisation_id, I18n.t("validations.setup.managing_organisation.data_sharing_agreement_not_signed") end diff --git a/app/models/validations/shared_validations.rb b/app/models/validations/shared_validations.rb index c171231d9..3fd621972 100644 --- a/app/models/validations/shared_validations.rb +++ b/app/models/validations/shared_validations.rb @@ -121,6 +121,8 @@ module Validations::SharedValidations end def validate_owning_organisation_data_sharing_agremeent_signed(record) + return if record.skip_dpo_validation + if record.owning_organisation_id_changed? && record.owning_organisation.present? && !record.owning_organisation.data_protection_confirmed? record.errors.add :owning_organisation_id, I18n.t("validations.setup.owning_organisation.data_sharing_agreement_not_signed") end diff --git a/app/services/merge/merge_organisations_service.rb b/app/services/merge/merge_organisations_service.rb index 9603bcbab..1599db5fa 100644 --- a/app/services/merge/merge_organisations_service.rb +++ b/app/services/merge/merge_organisations_service.rb @@ -88,18 +88,21 @@ private lettings_log.location = location_to_set if location_to_set.present? end lettings_log.owning_organisation = @absorbing_organisation - lettings_log.save!(validate: false) + lettings_log.skip_dpo_validation = true + lettings_log.save! end merging_organisation.managed_lettings_logs.after_date(@merge_date.to_time).each do |lettings_log| lettings_log.managing_organisation = @absorbing_organisation - lettings_log.save!(validate: false) + lettings_log.skip_dpo_validation = true + lettings_log.save! end end def merge_sales_logs(merging_organisation) merging_organisation.sales_logs.after_date(@merge_date.to_time).each do |sales_log| sales_log.owning_organisation = @absorbing_organisation - sales_log.save!(validate: false) + sales_log.skip_dpo_validation = true + sales_log.save! end end diff --git a/spec/services/merge/merge_organisations_service_spec.rb b/spec/services/merge/merge_organisations_service_spec.rb index 6faadd15c..b6168d57a 100644 --- a/spec/services/merge/merge_organisations_service_spec.rb +++ b/spec/services/merge/merge_organisations_service_spec.rb @@ -160,11 +160,11 @@ RSpec.describe Merge::MergeOrganisationsService do expect(absorbing_organisation.owned_schemes.count).to eq(1) expect(absorbing_organisation.owned_schemes.first.service_name).to eq(scheme.service_name) expect(absorbing_organisation.owned_schemes.first.old_id).to be_nil - expect(absorbing_organisation.owned_schemes.first.old_visible_id).to be_nil + expect(absorbing_organisation.owned_schemes.first.old_visible_id).to eq(nil) expect(absorbing_organisation.owned_schemes.first.locations.count).to eq(1) expect(absorbing_organisation.owned_schemes.first.locations.first.postcode).to eq(location.postcode) expect(absorbing_organisation.owned_schemes.first.locations.first.old_id).to be_nil - expect(absorbing_organisation.owned_schemes.first.locations.first.old_visible_id).to be_nil + expect(absorbing_organisation.owned_schemes.first.locations.first.old_visible_id).to eq(nil) expect(scheme.scheme_deactivation_periods.count).to eq(1) expect(scheme.scheme_deactivation_periods.first.deactivation_date.to_date).to eq(Time.zone.today) end @@ -179,7 +179,7 @@ RSpec.describe Merge::MergeOrganisationsService do expect(absorbing_organisation.owned_lettings_logs.find(owned_lettings_log.id).scheme).to eq(absorbing_organisation.owned_schemes.first) expect(absorbing_organisation.owned_lettings_logs.find(owned_lettings_log.id).location).to eq(absorbing_organisation.owned_schemes.first.locations.first) expect(absorbing_organisation.owned_lettings_logs.find(owned_lettings_log_no_location.id).scheme).to eq(absorbing_organisation.owned_schemes.first) - expect(absorbing_organisation.owned_lettings_logs.find(owned_lettings_log_no_location.id).location).to eq(nil) + expect(absorbing_organisation.owned_lettings_logs.find(owned_lettings_log_no_location.id).location).to eq(absorbing_organisation.owned_schemes.first.locations.first) end it "rolls back if there's an error" do @@ -345,7 +345,7 @@ RSpec.describe Merge::MergeOrganisationsService do expect(absorbing_organisation.owned_lettings_logs.find(owned_lettings_log.id).scheme).to eq(absorbing_organisation.owned_schemes.first) expect(absorbing_organisation.owned_lettings_logs.find(owned_lettings_log.id).location).to eq(absorbing_organisation.owned_schemes.first.locations.first) expect(absorbing_organisation.owned_lettings_logs.find(owned_lettings_log_no_location.id).scheme).to eq(absorbing_organisation.owned_schemes.first) - expect(absorbing_organisation.owned_lettings_logs.find(owned_lettings_log_no_location.id).location).to eq(nil) + expect(absorbing_organisation.owned_lettings_logs.find(owned_lettings_log_no_location.id).location).to eq(absorbing_organisation.owned_schemes.first.locations.first) end it "rolls back if there's an error" do @@ -728,7 +728,7 @@ RSpec.describe Merge::MergeOrganisationsService do expect(new_absorbing_organisation.owned_lettings_logs.find(owned_lettings_log.id).scheme).to eq(new_absorbing_organisation.owned_schemes.first) expect(new_absorbing_organisation.owned_lettings_logs.find(owned_lettings_log.id).location).to eq(new_absorbing_organisation.owned_schemes.first.locations.first) expect(new_absorbing_organisation.owned_lettings_logs.find(owned_lettings_log_no_location.id).scheme).to eq(new_absorbing_organisation.owned_schemes.first) - expect(new_absorbing_organisation.owned_lettings_logs.find(owned_lettings_log_no_location.id).location).to eq(nil) + expect(new_absorbing_organisation.owned_lettings_logs.find(owned_lettings_log_no_location.id).location).to eq(new_absorbing_organisation.owned_schemes.first.locations.first) end it "rolls back if there's an error" do @@ -801,7 +801,7 @@ RSpec.describe Merge::MergeOrganisationsService do expect(SalesLog.filter_by_owning_organisation(new_absorbing_organisation).first).to eq(sales_log) end - fit "rolls back if there's an error" do + it "rolls back if there's an error" do allow(Organisation).to receive(:find).with([merging_organisation_ids]).and_return(Organisation.find(merging_organisation_ids)) allow(Organisation).to receive(:find).with(new_absorbing_organisation.id).and_return(new_absorbing_organisation) allow(new_absorbing_organisation).to receive(:save!).and_raise(ActiveRecord::RecordInvalid) @@ -889,12 +889,13 @@ RSpec.describe Merge::MergeOrganisationsService do new_absorbing_organisation.reload merging_organisation.reload + owned_lettings_log_no_location.reload expect(new_absorbing_organisation.owned_lettings_logs.count).to eq(2) expect(new_absorbing_organisation.managed_lettings_logs.count).to eq(1) expect(new_absorbing_organisation.owned_lettings_logs.find(owned_lettings_log.id).scheme).to eq(new_absorbing_organisation.owned_schemes.first) expect(new_absorbing_organisation.owned_lettings_logs.find(owned_lettings_log.id).location).to eq(new_absorbing_organisation.owned_schemes.first.locations.first) expect(new_absorbing_organisation.owned_lettings_logs.find(owned_lettings_log_no_location.id).scheme).to eq(new_absorbing_organisation.owned_schemes.first) - expect(new_absorbing_organisation.owned_lettings_logs.find(owned_lettings_log_no_location.id).location).to eq(nil) + expect(new_absorbing_organisation.owned_lettings_logs.find(owned_lettings_log_no_location.id).location).to eq(new_absorbing_organisation.owned_schemes.first.locations.first) end it "rolls back if there's an error" do