Browse Source

Clear invalid format previous postcode

pull/1609/head
Kat 3 years ago
parent
commit
36fede356d
  1. 2
      app/models/validations/local_authority_validations.rb
  2. 4
      app/services/imports/lettings_logs_import_service.rb
  3. 6
      app/services/imports/sales_logs_import_service.rb
  4. 27
      spec/services/imports/sales_logs_import_service_spec.rb

2
app/models/validations/local_authority_validations.rb

@ -3,7 +3,7 @@ module Validations::LocalAuthorityValidations
postcode = record.ppostcode_full
if record.previous_postcode_known? && (postcode.blank? || !postcode.match(POSTCODE_REGEXP))
error_message = I18n.t("validations.postcode")
record.errors.add :ppostcode_full, error_message
record.errors.add :ppostcode_full, :wrong_format, message: error_message
end
end
end

4
app/services/imports/lettings_logs_import_service.rb

@ -467,11 +467,11 @@ module Imports
def previous_postcode_known(xml_doc, previous_postcode, prevloc)
previous_postcode_known = string_or_nil(xml_doc, "Q12bnot")
if previous_postcode_known == "Temporary_or_Unknown" || (previous_postcode.nil? && prevloc.present?)
0
0 # not known
elsif previous_postcode.nil?
nil
else
1
1 # known
end
end

6
app/services/imports/sales_logs_import_service.rb

@ -249,6 +249,12 @@ module Imports
attributes.delete("postcode_full")
attributes["pcodenk"] = attributes["la"].present? ? 1 : nil
save_sales_log(attributes, previous_status)
elsif sales_log.errors.of_kind?(:ppostcode_full, :wrong_format)
@logger.warn("Log #{sales_log.old_id}: Removing previous postcode as the postcode is invalid")
@logs_overridden << sales_log.old_id
attributes.delete("ppostcode_full")
attributes["ppcodenk"] = attributes["prevloc"].present? ? 1 : nil
save_sales_log(attributes, previous_status)
elsif sales_log.errors.of_kind?(:uprn, :uprn_error)
@logger.warn("Log #{sales_log.old_id}: Setting uprn_known to no with error: #{sales_log.errors[:uprn].join(', ')}")
@logs_overridden << sales_log.old_id

27
spec/services/imports/sales_logs_import_service_spec.rb

@ -595,6 +595,33 @@ RSpec.describe Imports::SalesLogsImportService do
end
end
context "and it has a record with previous postcode in invalid format" do
let(:sales_log_id) { "shared_ownership_sales_log" }
before do
sales_log_xml.at_xpath("//xmlns:Q7Postcode").content = "L3132AF"
sales_log_xml.at_xpath("//xmlns:Q7ONSLACode").content = "E07000223"
end
it "intercepts the relevant validation error" do
expect(logger).to receive(:warn).with(/Log shared_ownership_sales_log: Removing previous postcode as the postcode is invalid/)
expect { sales_log_service.send(:create_log, sales_log_xml) }
.not_to raise_error
end
it "clears out the invalid answers and sets correct prevloc" 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.ppostcode_full).to be_nil
expect(sales_log.ppcodenk).to eq(1) # not known
expect(sales_log.prevloc).to eq("E07000223") # not known
end
end
context "and setup field has validation error in incomplete log" do
let(:sales_log_id) { "shared_ownership_sales_log" }

Loading…
Cancel
Save