diff --git a/app/services/imports/lettings_logs_field_import_service.rb b/app/services/imports/lettings_logs_field_import_service.rb
index 22fc0fe8e..61fe3e829 100644
--- a/app/services/imports/lettings_logs_field_import_service.rb
+++ b/app/services/imports/lettings_logs_field_import_service.rb
@@ -10,6 +10,8 @@ module Imports
import_from(folder, :update_lettings_allocation)
when "offered"
import_from(folder, :update_offered)
+ when "creation_method"
+ import_from(folder, :update_creation_method)
else
raise "Updating #{field} is not supported by the field import service"
end
@@ -36,6 +38,29 @@ module Imports
end
end
+ def update_creation_method(xml_doc)
+ old_id = meta_field_value(xml_doc, "document-id")
+ log = LettingsLog.find_by(old_id:)
+
+ if log
+ upload_method = meta_field_value(xml_doc, "upload-method")
+
+ case upload_method
+ when "Manual Entry"
+ @logger.info "lettings log with old id #{old_id} entered manually, no need for update"
+ when "Bulk Upload"
+ if log.creation_method == "bulk upload"
+ @logger.info "lettings log #{log.id} creation method already set to bulk upload, no need for update"
+ else
+ log.update!(creation_method: "bulk upload")
+ @logger.info "lettings log #{log.id} creation method set to bulk upload"
+ end
+ end
+ else
+ @logger.warn "lettings log with old id #{old_id} not found"
+ end
+ end
+
def update_lettings_allocation(xml_doc)
return if meta_field_value(xml_doc, "form-name").include?("Sales")
diff --git a/spec/fixtures/imports/logs/166fc004-392e-47a8-acb8-1c018734882b.xml b/spec/fixtures/imports/logs/166fc004-392e-47a8-acb8-1c018734882b.xml
index 0ddca74c3..8c5119bd0 100644
--- a/spec/fixtures/imports/logs/166fc004-392e-47a8-acb8-1c018734882b.xml
+++ b/spec/fixtures/imports/logs/166fc004-392e-47a8-acb8-1c018734882b.xml
@@ -9,7 +9,7 @@
2022-04-12T14:10:59.953121Z
submitted-valid
2021
- Manual Entry
+ Bulk Upload
diff --git a/spec/services/imports/lettings_logs_field_import_service_spec.rb b/spec/services/imports/lettings_logs_field_import_service_spec.rb
index 491e40ca7..b151e1bf0 100644
--- a/spec/services/imports/lettings_logs_field_import_service_spec.rb
+++ b/spec/services/imports/lettings_logs_field_import_service_spec.rb
@@ -77,7 +77,51 @@ RSpec.describe Imports::LettingsLogsFieldImportService do
end
end
- context "when updating letings allocation values" do
+ context "when updating creation method" do
+ let(:field) { "creation_method" }
+ let(:lettings_log) { LettingsLog.find_by(old_id: lettings_log_id) }
+
+ before do
+ Imports::LettingsLogsImportService.new(storage_service, logger).create_logs(fixture_directory)
+ lettings_log_file.rewind
+ end
+
+ context "and the log was manually entered" do
+ it "logs that bulk upload id does not need setting" do
+ expect(logger).to receive(:info).with("lettings log with old id #{lettings_log_id} entered manually, no need for update")
+ expect { import_service.update_field(field, remote_folder) }.not_to(change { lettings_log.reload.creation_method })
+ end
+ end
+
+ context "and the log was bulk uploaded and the creation method is already correct" do
+ let(:lettings_log_id) { "166fc004-392e-47a8-acb8-1c018734882b" }
+
+ it "logs that bulk upload id does not need setting" do
+ expect(logger).to receive(:info).with(/lettings log \d+ creation method already set to bulk upload, no need for update/)
+ expect { import_service.update_field(field, remote_folder) }.not_to(change { lettings_log.reload.creation_method })
+ end
+ end
+
+ context "and the log was bulk uploaded and the creation method requires updating" do
+ let(:lettings_log_id) { "166fc004-392e-47a8-acb8-1c018734882b" }
+
+ it "logs that bulk upload id does not need setting" do
+ lettings_log.update!(creation_method: "single log")
+ expect(logger).to receive(:info).with(/lettings log \d+ creation method set to bulk upload/)
+ expect { import_service.update_field(field, remote_folder) }.to change { lettings_log.reload.creation_method }.to "bulk upload"
+ end
+ end
+
+ context "and the log was not previously imported" do
+ it "logs a warning that the log has not been found in the db" do
+ lettings_log.destroy!
+ expect(logger).to receive(:warn).with("lettings log with old id #{lettings_log_id} not found")
+ import_service.update_field(field, remote_folder)
+ end
+ end
+ end
+
+ context "when updating lettings allocation values" do
let(:field) { "lettings_allocation" }
let(:lettings_log) { LettingsLog.find_by(old_id: lettings_log_id) }
diff --git a/spec/services/imports/sales_logs_field_import_service_spec.rb b/spec/services/imports/sales_logs_field_import_service_spec.rb
index 799c66da8..36d83b578 100644
--- a/spec/services/imports/sales_logs_field_import_service_spec.rb
+++ b/spec/services/imports/sales_logs_field_import_service_spec.rb
@@ -26,7 +26,7 @@ RSpec.describe Imports::SalesLogsFieldImportService do
.and_return(sales_log_file)
end
- context "when updating bulk upload id" do
+ context "when updating creation method" do
let(:field) { "creation_method" }
let(:sales_log) { SalesLog.find_by(old_id: sales_log_filename) }