From 93f75ebfb05459ee60d878d0d87c1e9db5938118 Mon Sep 17 00:00:00 2001 From: Arthur Campbell Date: Fri, 30 Jun 2023 15:09:49 +0100 Subject: [PATCH] update lettings log field import service and related spec to allow importing creation method of logs --- .../lettings_logs_field_import_service.rb | 25 ++++++++++ .../166fc004-392e-47a8-acb8-1c018734882b.xml | 2 +- ...lettings_logs_field_import_service_spec.rb | 46 ++++++++++++++++++- .../sales_logs_field_import_service_spec.rb | 2 +- 4 files changed, 72 insertions(+), 3 deletions(-) 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) }