Browse Source

Reset invalid postcodes

pull/1385/head
Kat 3 years ago
parent
commit
0aba44f11c
  1. 6
      app/services/imports/sales_logs_import_service.rb
  2. 30
      spec/services/imports/sales_logs_import_service_spec.rb

6
app/services/imports/sales_logs_import_service.rb

@ -192,6 +192,7 @@ module Imports
attributes.delete(error.attribute.to_s) attributes.delete(error.attribute.to_s)
end end
@logs_overridden << sales_log.old_id @logs_overridden << sales_log.old_id
reset_postcode_known(attributes)
save_sales_log(attributes, previous_status) save_sales_log(attributes, previous_status)
else else
@logger.error("Log #{sales_log.old_id}: Failed to import") @logger.error("Log #{sales_log.old_id}: Failed to import")
@ -207,6 +208,11 @@ module Imports
end end
end end
def reset_postcode_known(attributes)
attributes["pcodenk"] = attributes["postcode_full"].present? ? 0 : nil
attributes["ppcodenk"] = attributes["postcode_full"].present? ? 0 : nil
end
def compute_differences(sales_log, attributes) def compute_differences(sales_log, attributes)
differences = [] differences = []
attributes.each do |key, value| attributes.each do |key, value|

30
spec/services/imports/sales_logs_import_service_spec.rb

@ -394,6 +394,36 @@ RSpec.describe Imports::SalesLogsImportService do
end end
end end
context "and it has an invalid record with invalid postcodes" 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"
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: Last settled accommodation and discounted ownership property postcodes must match/)
expect(logger).to receive(:warn).with(/Removing field ppostcode_full from log triggering validation: Last settled accommodation and discounted ownership property postcodes must match/)
expect { sales_log_service.send(:create_log, sales_log_xml) }
.not_to raise_error
end
it "clears out the invalid answers" do
allow(logger).to receive(:warn)
sales_log_service.send(:create_log, sales_log_xml)
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.ppostcode_full).to be_nil
end
end
context "when inferring default answers for completed sales logs" do context "when inferring default answers for completed sales logs" do
context "when the armedforcesspouse is not answered" do context "when the armedforcesspouse is not answered" do
let(:sales_log_id) { "discounted_ownership_sales_log" } let(:sales_log_id) { "discounted_ownership_sales_log" }

Loading…
Cancel
Save