Browse Source

update lettings log field import service and related spec to allow importing creation method of logs

pull/1744/head
Arthur Campbell 3 years ago
parent
commit
93f75ebfb0
  1. 25
      app/services/imports/lettings_logs_field_import_service.rb
  2. 2
      spec/fixtures/imports/logs/166fc004-392e-47a8-acb8-1c018734882b.xml
  3. 46
      spec/services/imports/lettings_logs_field_import_service_spec.rb
  4. 2
      spec/services/imports/sales_logs_field_import_service_spec.rb

25
app/services/imports/lettings_logs_field_import_service.rb

@ -10,6 +10,8 @@ module Imports
import_from(folder, :update_lettings_allocation) import_from(folder, :update_lettings_allocation)
when "offered" when "offered"
import_from(folder, :update_offered) import_from(folder, :update_offered)
when "creation_method"
import_from(folder, :update_creation_method)
else else
raise "Updating #{field} is not supported by the field import service" raise "Updating #{field} is not supported by the field import service"
end end
@ -36,6 +38,29 @@ module Imports
end end
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) def update_lettings_allocation(xml_doc)
return if meta_field_value(xml_doc, "form-name").include?("Sales") return if meta_field_value(xml_doc, "form-name").include?("Sales")

2
spec/fixtures/imports/logs/166fc004-392e-47a8-acb8-1c018734882b.xml vendored

@ -9,7 +9,7 @@
<meta:modified-date>2022-04-12T14:10:59.953121Z</meta:modified-date> <meta:modified-date>2022-04-12T14:10:59.953121Z</meta:modified-date>
<meta:status>submitted-valid</meta:status> <meta:status>submitted-valid</meta:status>
<meta:reporting-year>2021</meta:reporting-year> <meta:reporting-year>2021</meta:reporting-year>
<meta:upload-method>Manual Entry</meta:upload-method> <meta:upload-method>Bulk Upload</meta:upload-method>
<meta:schema assert-valid="true"/> <meta:schema assert-valid="true"/>
<meta:rules assert-valid="true"/> <meta:rules assert-valid="true"/>
</meta:metadata> </meta:metadata>

46
spec/services/imports/lettings_logs_field_import_service_spec.rb

@ -77,7 +77,51 @@ RSpec.describe Imports::LettingsLogsFieldImportService do
end end
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(:field) { "lettings_allocation" }
let(:lettings_log) { LettingsLog.find_by(old_id: lettings_log_id) } let(:lettings_log) { LettingsLog.find_by(old_id: lettings_log_id) }

2
spec/services/imports/sales_logs_field_import_service_spec.rb

@ -26,7 +26,7 @@ RSpec.describe Imports::SalesLogsFieldImportService do
.and_return(sales_log_file) .and_return(sales_log_file)
end end
context "when updating bulk upload id" do context "when updating creation method" do
let(:field) { "creation_method" } let(:field) { "creation_method" }
let(:sales_log) { SalesLog.find_by(old_id: sales_log_filename) } let(:sales_log) { SalesLog.find_by(old_id: sales_log_filename) }

Loading…
Cancel
Save