Browse Source

Set user to unassigned in sales logs if the legacy user exists but belongs to a different organisation

pull/1894/head
Kat 3 years ago
parent
commit
4561964bd9
  1. 8
      app/services/imports/sales_logs_import_service.rb
  2. 42
      spec/services/imports/sales_logs_import_service_spec.rb

8
app/services/imports/sales_logs_import_service.rb

@ -179,8 +179,12 @@ 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? if user.blank? || user.organisation_id != attributes["owning_organisation_id"]
@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.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.")
else
@logger.error("Sales log '#{attributes['old_id']}' belongs to legacy user with owner-user-id: '#{owner_id}' which belongs to a different organisation. Assigning log to 'Unassigned' user.")
end
if User.find_by(name: "Unassigned", organisation_id: attributes["owning_organisation_id"]) if User.find_by(name: "Unassigned", organisation_id: attributes["owning_organisation_id"])
user = User.find_by(name: "Unassigned", organisation_id: attributes["owning_organisation_id"]) user = User.find_by(name: "Unassigned", organisation_id: attributes["owning_organisation_id"])
else else

42
spec/services/imports/sales_logs_import_service_spec.rb

@ -163,6 +163,48 @@ RSpec.describe Imports::SalesLogsImportService do
end end
end end
context "and the user exists on a different organisation" do
let(:sales_log_id) { "shared_ownership_sales_log" }
before do
create(:legacy_user, old_user_id: "fake_id")
sales_log_xml.at_xpath("//meta:owner-user-id").content = "fake_id"
end
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 belongs to a different organisation. 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 belongs to a different organisation. 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 belongs to a different organisation. 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
context "when unassigned user exist for a different organisation" do
let!(:other_unassigned_user) { create(:user, name: "Unassigned") }
it "creates a new unassigned user for current organisation" do
expect(logger).to receive(:error).with("Sales log 'shared_ownership_sales_log' belongs to legacy user with owner-user-id: 'fake_id' which belongs to a different organisation. 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")
expect(sales_log&.created_by).not_to eq(other_unassigned_user)
end
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