Browse Source

feat: allow missing day/month/year values if CompletionDate exists as we don't always receive these from old core

pull/1904/head
natdeanlewissoftwire 3 years ago
parent
commit
c11d6ae663
  1. 4
      app/services/imports/sales_logs_import_service.rb
  2. 25
      spec/services/imports/sales_logs_import_service_spec.rb

4
app/services/imports/sales_logs_import_service.rb

@ -15,7 +15,7 @@ module Imports
def create_log(xml_doc) def create_log(xml_doc)
# only import sales logs from 22/23 collection period onwards # only import sales logs from 22/23 collection period onwards
return unless meta_field_value(xml_doc, "form-name").include?("Sales") return unless meta_field_value(xml_doc, "form-name").include?("Sales")
return unless compose_date(xml_doc, "DAY", "MONTH", "YEAR") >= Time.zone.local(2022, 4, 1) return unless (compose_date(xml_doc, "DAY", "MONTH", "YEAR") || Time.zone.parse(field_value(xml_doc, "xmlns", "CompletionDate"))) >= Time.zone.local(2022, 4, 1)
attributes = {} attributes = {}
@ -24,7 +24,7 @@ module Imports
# Required fields for status complete or logic to work # Required fields for status complete or logic to work
# Note: order matters when we derive from previous values (attributes parameter) # Note: order matters when we derive from previous values (attributes parameter)
attributes["saledate"] = compose_date(xml_doc, "DAY", "MONTH", "YEAR") attributes["saledate"] = compose_date(xml_doc, "DAY", "MONTH", "YEAR") || Time.zone.parse(field_value(xml_doc, "xmlns", "CompletionDate"))
attributes["owning_organisation_id"] = find_organisation_id(xml_doc, "OWNINGORGID") attributes["owning_organisation_id"] = find_organisation_id(xml_doc, "OWNINGORGID")
attributes["type"] = unsafe_string_as_integer(xml_doc, "DerSaleType") attributes["type"] = unsafe_string_as_integer(xml_doc, "DerSaleType")
attributes["old_id"] = meta_field_value(xml_doc, "document-id") attributes["old_id"] = meta_field_value(xml_doc, "document-id")

25
spec/services/imports/sales_logs_import_service_spec.rb

@ -228,6 +228,31 @@ RSpec.describe Imports::SalesLogsImportService do
end end
end end
context "and the log startdate is only present in the CompletionDate field" do
let(:sales_log_id) { "shared_ownership_sales_log" }
before do
sales_log_xml.at_xpath("//xmlns:DAY").content = nil
sales_log_xml.at_xpath("//xmlns:MONTH").content = nil
sales_log_xml.at_xpath("//xmlns:YEAR").content = nil
sales_log_xml.at_xpath("//xmlns:CompletionDate").content = "2022-10-9"
sales_log_xml.at_xpath("//xmlns:HODAY").content = 9
sales_log_xml.at_xpath("//xmlns:HOMONTH").content = 10
sales_log_xml.at_xpath("//xmlns:HOYEAR").content = 2022
sales_log_xml.at_xpath("//xmlns:EXDAY").content = 9
sales_log_xml.at_xpath("//xmlns:EXMONTH").content = 10
sales_log_xml.at_xpath("//xmlns:EXYEAR").content = 2022
end
it "creates the log with the correct saledate" do
expect(logger).not_to receive(:error)
expect(logger).not_to receive(:warn)
expect { sales_log_service.send(:create_log, sales_log_xml) }
.to change(SalesLog, :count).by(1)
expect(SalesLog.last.saledate).to eq(Time.zone.local(2022, 10, 9))
end
end
context "when the log is valid" do context "when the log is valid" do
let(:sales_log_id) { "shared_ownership_sales_log" } let(:sales_log_id) { "shared_ownership_sales_log" }

Loading…
Cancel
Save