Browse Source

Add unassigned user if we can't find a legacy user for a log

pull/1883/head
Kat 3 years ago
parent
commit
3fc587e449
  1. 17
      app/services/imports/lettings_logs_import_service.rb
  2. 17
      app/services/imports/sales_logs_import_service.rb
  3. 24
      spec/services/imports/lettings_logs_import_service_spec.rb
  4. 26
      spec/services/imports/sales_logs_import_service_spec.rb

17
app/services/imports/lettings_logs_import_service.rb

@ -251,6 +251,23 @@ module Imports
owner_id = meta_field_value(xml_doc, "owner-user-id").strip owner_id = meta_field_value(xml_doc, "owner-user-id").strip
if owner_id.present? if owner_id.present?
user = LegacyUser.find_by(old_user_id: owner_id)&.user user = LegacyUser.find_by(old_user_id: owner_id)&.user
if user.blank?
@logger.error("Lettings log '#{attributes['old_id']}' belongs to legacy user with owner-user-id: '#{owner_id}' which cannot be found. Assigning log to 'Unassigned' user.")
if User.find_by(name: "Unassigned")
user = User.find_by(name: "Unassigned")
else
user = User.new(
name: "Unassigned",
organisation_id: attributes["managing_organisation_id"],
is_dpo: false,
encrypted_password: SecureRandom.hex(10),
email: SecureRandom.uuid,
confirmed_at: Time.zone.now,
active: false,
)
user.save!(validate: false)
end
end
attributes["created_by"] = user attributes["created_by"] = user
end end

17
app/services/imports/sales_logs_import_service.rb

@ -179,6 +179,23 @@ module Imports
if owner_id.present? if owner_id.present?
user = LegacyUser.find_by(old_user_id: owner_id)&.user user = LegacyUser.find_by(old_user_id: owner_id)&.user
if user.blank?
@logger.error("Sales log '#{attributes['old_id']}' belongs to legacy user with owner-user-id: '#{owner_id}' which cannot be found. Assigning log to 'Unassigned' user.")
if User.find_by(name: "Unassigned")
user = User.find_by(name: "Unassigned")
else
user = User.new(
name: "Unassigned",
organisation_id: attributes["managing_organisation_id"],
is_dpo: false,
encrypted_password: SecureRandom.hex(10),
email: SecureRandom.uuid,
confirmed_at: Time.zone.now,
active: false,
)
user.save!(validate: false)
end
end
attributes["created_by"] = user attributes["created_by"] = user
end end

24
spec/services/imports/lettings_logs_import_service_spec.rb

@ -135,6 +135,30 @@ RSpec.describe Imports::LettingsLogsImportService do
let(:lettings_log_file) { open_file(fixture_directory, lettings_log_id) } let(:lettings_log_file) { open_file(fixture_directory, lettings_log_id) }
let(:lettings_log_xml) { Nokogiri::XML(lettings_log_file) } let(:lettings_log_xml) { Nokogiri::XML(lettings_log_file) }
context "and the user does not exist" do
before { lettings_log_xml.at_xpath("//meta:owner-user-id").content = "fake_id" }
it "creates a new unassigned user" do
expect(logger).to receive(:error).with("Lettings log '0ead17cb-1668-442d-898c-0d52879ff592' belongs to legacy user with owner-user-id: 'fake_id' which cannot be found. Assigning log to 'Unassigned' user.")
lettings_log_service.send(:create_log, lettings_log_xml)
lettings_log = LettingsLog.where(old_id: lettings_log_id).first
expect(lettings_log&.created_by&.name).to eq("Unassigned")
end
it "only creates one unassigned user" do
expect(logger).to receive(:error).with("Lettings log '0ead17cb-1668-442d-898c-0d52879ff592' belongs to legacy user with owner-user-id: 'fake_id' which cannot be found. Assigning log to 'Unassigned' user.")
expect(logger).to receive(:error).with("Lettings log 'fake_id' belongs to legacy user with owner-user-id: 'fake_id' which cannot be found. Assigning log to 'Unassigned' user.")
lettings_log_service.send(:create_log, lettings_log_xml)
lettings_log_xml.at_xpath("//meta:document-id").content = "fake_id"
lettings_log_service.send(:create_log, lettings_log_xml)
lettings_log = LettingsLog.where(old_id: lettings_log_id).first
second_lettings_log = LettingsLog.where(old_id: "fake_id").first
expect(lettings_log&.created_by).to eq(second_lettings_log&.created_by)
end
end
context "and the void date is after the start date" do context "and the void date is after the start date" do
before { lettings_log_xml.at_xpath("//xmlns:VYEAR").content = 2023 } before { lettings_log_xml.at_xpath("//xmlns:VYEAR").content = 2023 }

26
spec/services/imports/sales_logs_import_service_spec.rb

@ -116,6 +116,32 @@ RSpec.describe Imports::SalesLogsImportService do
end end
end end
context "and the user does not exist" do
let(:sales_log_id) { "shared_ownership_sales_log" }
before { sales_log_xml.at_xpath("//meta:owner-user-id").content = "fake_id" }
it "creates a new unassigned user" do
expect(logger).to receive(:error).with("Sales log 'shared_ownership_sales_log' belongs to legacy user with owner-user-id: 'fake_id' which cannot be found. Assigning log to 'Unassigned' user.")
sales_log_service.send(:create_log, sales_log_xml)
sales_log = SalesLog.where(old_id: sales_log_id).first
expect(sales_log&.created_by&.name).to eq("Unassigned")
end
it "only creates one unassigned user" do
expect(logger).to receive(:error).with("Sales log 'shared_ownership_sales_log' belongs to legacy user with owner-user-id: 'fake_id' which cannot be found. Assigning log to 'Unassigned' user.")
expect(logger).to receive(:error).with("Sales log 'fake_id' belongs to legacy user with owner-user-id: 'fake_id' which cannot be found. Assigning log to 'Unassigned' user.")
sales_log_service.send(:create_log, sales_log_xml)
sales_log_xml.at_xpath("//meta:document-id").content = "fake_id"
sales_log_service.send(:create_log, sales_log_xml)
sales_log = SalesLog.where(old_id: sales_log_id).first
second_sales_log = SalesLog.where(old_id: "fake_id").first
expect(sales_log&.created_by).to eq(second_sales_log&.created_by)
end
end
context "and the log startdate is before 22/23 collection period" do context "and the log startdate is before 22/23 collection period" do
let(:sales_log_id) { "shared_ownership_sales_log" } let(:sales_log_id) { "shared_ownership_sales_log" }

Loading…
Cancel
Save