Browse Source

Don't clear type if it errors

pull/1450/head
Kat 3 years ago
parent
commit
e90376bac0
  1. 6
      app/services/imports/sales_logs_import_service.rb
  2. 27
      spec/services/imports/sales_logs_import_service_spec.rb

6
app/services/imports/sales_logs_import_service.rb

@ -189,8 +189,10 @@ module Imports
def rescue_validation_or_raise(sales_log, attributes, previous_status, exception) def rescue_validation_or_raise(sales_log, attributes, previous_status, exception)
if %w[saved submitted-invalid].include?(previous_status) if %w[saved submitted-invalid].include?(previous_status)
sales_log.errors.each do |error| sales_log.errors.each do |error|
@logger.warn("Log #{sales_log.old_id}: Removing field #{error.attribute} from log triggering validation: #{error.type}") unless error.attribute == :type || error.attribute == :ownershipsch
attributes.delete(error.attribute.to_s) @logger.warn("Log #{sales_log.old_id}: Removing field #{error.attribute} from log triggering validation: #{error.type}")
attributes.delete(error.attribute.to_s)
end
attributes.delete("pcodenk") if error.attribute == :postcode_full attributes.delete("pcodenk") if error.attribute == :postcode_full
attributes.delete("ppcodenk") if error.attribute == :ppostcode_full attributes.delete("ppcodenk") if error.attribute == :ppostcode_full
end end

27
spec/services/imports/sales_logs_import_service_spec.rb

@ -422,6 +422,33 @@ RSpec.describe Imports::SalesLogsImportService do
end end
end end
context "and setup field has validation error in incomplete log" do
let(:sales_log_id) { "shared_ownership_sales_log" }
before do
sales_log_xml.at_xpath("//meta:status").content = "saved"
sales_log_xml.at_xpath("//xmlns:Q17aStaircase").content = "1 Yes"
sales_log_xml.at_xpath("//xmlns:PercentBought").content = "5"
sales_log_xml.at_xpath("//xmlns:PercentOwns").content = "40"
sales_log_xml.at_xpath("//xmlns:Q17Resale").content = ""
sales_log_xml.at_xpath("//xmlns:EXDAY").content = ""
sales_log_xml.at_xpath("//xmlns:EXMONTH").content = ""
sales_log_xml.at_xpath("//xmlns:EXYEAR").content = ""
sales_log_xml.at_xpath("//xmlns:HODAY").content = ""
sales_log_xml.at_xpath("//xmlns:HOMONTH").content = ""
sales_log_xml.at_xpath("//xmlns:HOYEAR").content = ""
end
it "intercepts the relevant validation error but does not clear setup fields" do
expect(logger).to receive(:warn).with(/Log shared_ownership_sales_log: Removing field stairbought from log triggering validation: The minimum increase in equity while staircasing is 10%/)
expect { sales_log_service.send(:create_log, sales_log_xml) }
.not_to raise_error
sales_log = SalesLog.find_by(old_id: sales_log_id)
expect(sales_log.type).to eq(2)
end
end
context "and it has an invalid record with invalid postcodes" do context "and it has an invalid record with invalid postcodes" do
let(:sales_log_id) { "discounted_ownership_sales_log" } let(:sales_log_id) { "discounted_ownership_sales_log" }

Loading…
Cancel
Save