Browse Source

merge letings logs

pull/1801/head
Kat 3 years ago
parent
commit
19e28b23df
  1. 21
      app/services/merge/merge_organisations_service.rb
  2. 21
      spec/services/merge/merge_organisations_service_spec.rb

21
app/services/merge/merge_organisations_service.rb

@ -10,6 +10,7 @@ class Merge::MergeOrganisationsService
merge_organisation_relationships merge_organisation_relationships
merge_users merge_users
merge_schemes_and_locations merge_schemes_and_locations
merge_lettings_logs
mark_organisations_as_merged mark_organisations_as_merged
@absorbing_organisation.save! @absorbing_organisation.save!
end end
@ -67,6 +68,26 @@ private
end end
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 def mark_organisations_as_merged
# @merging_organisations.update_all(merge_date: Time.zone.today) # @merging_organisations.update_all(merge_date: Time.zone.today)
end end

21
spec/services/merge/merge_organisations_service_spec.rb

@ -80,11 +80,16 @@ RSpec.describe Merge::MergeOrganisationsService do
let!(:location) { create(:location, scheme:) } let!(:location) { create(:location, scheme:) }
let!(:deactivated_location) { create(:location, scheme:) } let!(:deactivated_location) { create(:location, scheme:) }
let!(:deactivated_scheme) { create(:scheme, owning_organisation: merging_organisation) } 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 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(: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(: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 end
it "combines organisation relationships" do it "combines organisation relationships" do
@ -93,11 +98,23 @@ RSpec.describe Merge::MergeOrganisationsService do
absorbing_organisation.reload absorbing_organisation.reload
expect(absorbing_organisation.owned_schemes.count).to eq(1) 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.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(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.count).to eq(1)
expect(scheme.scheme_deactivation_periods.first.deactivation_date.to_date).to eq(Time.zone.today) expect(scheme.scheme_deactivation_periods.first.deactivation_date.to_date).to eq(Time.zone.today)
end 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 end
end end

Loading…
Cancel
Save