Browse Source

Remove invalid exchange date

pull/1425/head
Kat 3 years ago
parent
commit
d5c46b5485
  1. 2
      app/models/validations/sales/sale_information_validations.rb
  2. 5
      app/services/imports/sales_logs_import_service.rb
  3. 30
      spec/services/imports/sales_logs_import_service_spec.rb

2
app/models/validations/sales/sale_information_validations.rb

@ -30,7 +30,7 @@ module Validations::Sales::SaleInformationValidations
end end
if record.saledate - record.exdate >= 1.year if record.saledate - record.exdate >= 1.year
record.errors.add :exdate, I18n.t("validations.sale_information.exdate.must_be_less_than_1_year_from_saledate") record.errors.add :exdate, :over_a_year_from_saledate, message: I18n.t("validations.sale_information.exdate.must_be_less_than_1_year_from_saledate")
record.errors.add :saledate, I18n.t("validations.sale_information.saledate.must_be_less_than_1_year_from_exdate") record.errors.add :saledate, I18n.t("validations.sale_information.saledate.must_be_less_than_1_year_from_exdate")
end end
end end

5
app/services/imports/sales_logs_import_service.rb

@ -198,6 +198,11 @@ module Imports
attributes.delete("ppcodenk") attributes.delete("ppcodenk")
attributes.delete("ppostcode_full") attributes.delete("ppostcode_full")
save_sales_log(attributes, previous_status) save_sales_log(attributes, previous_status)
elsif sales_log.errors.of_kind?(:exdate, :over_a_year_from_saledate)
@logger.warn("Log #{sales_log.old_id}: Removing exchange date as the exchange date is invalid")
@logs_overridden << sales_log.old_id
attributes.delete("exdate")
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")
sales_log.errors.each do |error| sales_log.errors.each do |error|

30
spec/services/imports/sales_logs_import_service_spec.rb

@ -420,6 +420,36 @@ RSpec.describe Imports::SalesLogsImportService do
end end
end end
context "and it has an invalid record with invalid contracts exchange date" do
let(:sales_log_id) { "shared_ownership_sales_log" }
before do
sales_log_xml.at_xpath("//xmlns:DAY").content = "1"
sales_log_xml.at_xpath("//xmlns:MONTH").content = "10"
sales_log_xml.at_xpath("//xmlns:YEAR").content = "2022"
sales_log_xml.at_xpath("//xmlns:EXDAY").content = "1"
sales_log_xml.at_xpath("//xmlns:EXMONTH").content = "4"
sales_log_xml.at_xpath("//xmlns:EXYEAR").content = "2020"
end
it "intercepts the relevant validation error" do
expect(logger).to receive(:warn).with(/Removing exchange date as the exchange date is invalid/)
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.saledate).to eq(Time.zone.local(2022, 10, 1))
expect(sales_log.exdate).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