Browse Source

Clear previuos postcode if import hits postcodes_not_matching error

pull/1425/head
Kat 3 years ago
parent
commit
36b9837d50
  1. 9
      app/services/imports/sales_logs_import_service.rb
  2. 13
      spec/services/imports/sales_logs_import_service_spec.rb

9
app/services/imports/sales_logs_import_service.rb

@ -191,11 +191,12 @@ module Imports
attributes.delete(error.attribute.to_s)
end
@logs_overridden << sales_log.old_id
if sales_log.errors.of_kind?(:postcode_full, :postcodes_not_matching)
@logger.warn("Log #{sales_log.old_id}: Removing postcode known and previous postcode known as the postcodes are invalid")
attributes.delete("pcodenk")
save_sales_log(attributes, previous_status)
elsif sales_log.errors.of_kind?(:postcode_full, :postcodes_not_matching)
@logger.warn("Log #{sales_log.old_id}: Removing previous postcode known and previous postcode as the postcode is invalid")
@logs_overridden << sales_log.old_id
attributes.delete("ppcodenk")
end
attributes.delete("ppostcode_full")
save_sales_log(attributes, previous_status)
else
@logger.error("Log #{sales_log.old_id}: Failed to import")

13
spec/services/imports/sales_logs_import_service_spec.rb

@ -398,17 +398,12 @@ RSpec.describe Imports::SalesLogsImportService do
let(:sales_log_id) { "discounted_ownership_sales_log" }
before do
sales_log_xml.at_xpath("//meta:status").content = "submitted-invalid"
sales_log_xml.at_xpath("//xmlns:Q7Postcode").content = "A1 1AA"
sales_log_xml.at_xpath("//xmlns:Q14Postcode").content = "A1 2AA"
sales_log_xml.at_xpath("//xmlns:Q7Postcode").content = "A1 1AA" # previous postcode
sales_log_xml.at_xpath("//xmlns:Q14Postcode").content = "A1 2AA" # postcode
end
it "intercepts the relevant validation error" do
expect(logger).to receive(:warn).with(/Removing field postcode_full from log triggering validation: Buyer's last accommodation and discounted ownership postcodes must match/)
expect(logger).to receive(:warn).with(/Removing field ppostcode_full from log triggering validation: Buyer's last accommodation and discounted ownership postcodes must match/)
expect(logger).to receive(:warn).with(/Removing field postcode_full from log triggering validation: postcodes_not_matching/)
expect(logger).to receive(:warn).with(/Removing field ppostcode_full from log triggering validation: postcodes_not_matching/)
expect(logger).to receive(:warn).with(/Removing postcode known and previous postcode known as the postcodes are invalid/)
expect(logger).to receive(:warn).with(/Removing previous postcode known and previous postcode as the postcode is invalid/)
expect { sales_log_service.send(:create_log, sales_log_xml) }
.not_to raise_error
end
@ -420,7 +415,7 @@ RSpec.describe Imports::SalesLogsImportService do
sales_log = SalesLog.find_by(old_id: sales_log_id)
expect(sales_log).not_to be_nil
expect(sales_log.postcode_full).to be_nil
expect(sales_log.postcode_full).to eq("A1 2AA")
expect(sales_log.ppostcode_full).to be_nil
end
end

Loading…
Cancel
Save