From 19e28b23dfb218b81fa122d3e7e25fbbce828ee7 Mon Sep 17 00:00:00 2001 From: Kat Date: Tue, 25 Jul 2023 09:37:30 +0100 Subject: [PATCH] merge letings logs --- .../merge/merge_organisations_service.rb | 21 +++++++++++++++++++ .../merge/merge_organisations_service_spec.rb | 21 +++++++++++++++++-- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/app/services/merge/merge_organisations_service.rb b/app/services/merge/merge_organisations_service.rb index eb66bb770..835b5fa66 100644 --- a/app/services/merge/merge_organisations_service.rb +++ b/app/services/merge/merge_organisations_service.rb @@ -10,6 +10,7 @@ class Merge::MergeOrganisationsService merge_organisation_relationships merge_users merge_schemes_and_locations + merge_lettings_logs mark_organisations_as_merged @absorbing_organisation.save! end @@ -67,6 +68,26 @@ private end end + def merge_lettings_logs + @merging_organisations.each do |merging_organisation| + merging_organisation.owned_lettings_logs.after_date(Time.zone.today).each do |lettings_log| + if lettings_log.scheme.present? + scheme_to_set = @absorbing_organisation.owned_schemes.find_by(service_name: lettings_log.scheme.service_name) + location_to_set = scheme_to_set.locations.find_by(name: lettings_log.location&.name, postcode: lettings_log.location&.postcode) + + lettings_log.scheme = scheme_to_set if scheme_to_set.present? + lettings_log.location = location_to_set if location_to_set.present? + end + lettings_log.owning_organisation = @absorbing_organisation + lettings_log.save! + end + merging_organisation.managed_lettings_logs.after_date(Time.zone.today).each do |lettings_log| + lettings_log.managing_organisation = @absorbing_organisation + lettings_log.save! + end + end + end + def mark_organisations_as_merged # @merging_organisations.update_all(merge_date: Time.zone.today) end diff --git a/spec/services/merge/merge_organisations_service_spec.rb b/spec/services/merge/merge_organisations_service_spec.rb index 51692c96c..4a12991d8 100644 --- a/spec/services/merge/merge_organisations_service_spec.rb +++ b/spec/services/merge/merge_organisations_service_spec.rb @@ -80,11 +80,16 @@ RSpec.describe Merge::MergeOrganisationsService do let!(:location) { create(:location, scheme:) } let!(:deactivated_location) { create(:location, scheme:) } let!(:deactivated_scheme) { create(:scheme, owning_organisation: merging_organisation) } - let!(:deactivated_scheme_location) { create(:location, scheme: deactivated_scheme) } + let!(:owned_lettings_log) { create(:lettings_log, :sh, scheme:, location:, startdate: Time.zone.tomorrow, owning_organisation: merging_organisation) } + let!(:owned_lettings_log_no_location) { create(:lettings_log, :sh, scheme:, startdate: Time.zone.tomorrow, owning_organisation: merging_organisation) } before do + create(:location, scheme:) + create(:location, scheme: deactivated_scheme) create(:scheme_deactivation_period, scheme: deactivated_scheme, deactivation_date: Time.zone.today - 1.month) create(:location_deactivation_period, location: deactivated_location, deactivation_date: Time.zone.today - 1.month) + create(:lettings_log, scheme:, location:, startdate: Time.zone.yesterday) + create(:lettings_log, startdate: Time.zone.tomorrow, managing_organisation: merging_organisation) end it "combines organisation relationships" do @@ -93,11 +98,23 @@ RSpec.describe Merge::MergeOrganisationsService do absorbing_organisation.reload 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.locations.count).to eq(1) + expect(absorbing_organisation.owned_schemes.first.locations.count).to eq(2) expect(absorbing_organisation.owned_schemes.first.locations.first.postcode).to eq(location.postcode) 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 + + it "moves relevant logs and assigns the new scheme" do + merge_organisations_service.call + + absorbing_organisation.reload + expect(absorbing_organisation.owned_lettings_logs.count).to eq(2) + expect(absorbing_organisation.managed_lettings_logs.count).to eq(1) + 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) + end end end end