From 6d7500e0cce9b43a95c0663505a76d099893a265 Mon Sep 17 00:00:00 2001 From: Kat Date: Mon, 18 Mar 2024 14:55:00 +0000 Subject: [PATCH] Allor outright sale mortgageused 3, don't allow non staircaseing shared ownership mortgageused 3 --- .../sales/sale_information_validations.rb | 10 +++++-- .../sales/year2023/row_parser_spec.rb | 24 ++++++++++++++++ .../sales/year2024/row_parser_spec.rb | 28 +++++++++++++++++-- 3 files changed, 58 insertions(+), 4 deletions(-) diff --git a/app/models/validations/sales/sale_information_validations.rb b/app/models/validations/sales/sale_information_validations.rb index 77e0850f6..883e10d1d 100644 --- a/app/models/validations/sales/sale_information_validations.rb +++ b/app/models/validations/sales/sale_information_validations.rb @@ -158,9 +158,15 @@ module Validations::Sales::SaleInformationValidations end def validate_mortgage_used_dont_know(record) - return unless record.mortgageused + return unless record.mortgageused == 3 - if (record.discounted_ownership_sale? || record.outright_sale?) && record.mortgageused == 3 + if record.discounted_ownership_sale? + record.errors.add(:mortgageused, I18n.t("validations.invalid_option", question: "Was a mortgage used for the purchase of this property?")) + end + if record.outright_sale? && record.saledate && !record.form.start_year_after_2024? + record.errors.add(:mortgageused, I18n.t("validations.invalid_option", question: "Was a mortgage used for the purchase of this property?")) + end + if record.shared_ownership_scheme? && record.staircase && record.staircase != 1 record.errors.add(:mortgageused, I18n.t("validations.invalid_option", question: "Was a mortgage used for the purchase of this property?")) end end diff --git a/spec/services/bulk_upload/sales/year2023/row_parser_spec.rb b/spec/services/bulk_upload/sales/year2023/row_parser_spec.rb index dea5a3482..961f0bf51 100644 --- a/spec/services/bulk_upload/sales/year2023/row_parser_spec.rb +++ b/spec/services/bulk_upload/sales/year2023/row_parser_spec.rb @@ -1065,6 +1065,30 @@ RSpec.describe BulkUpload::Sales::Year2023::RowParser do expect(parser.log.mortgageused).to eq(3) end end + + context "when it is not a staircasing transaction" do + context "when value is 3 and stairowned is not answered" do + let(:attributes) { setup_section_params.merge(field_105: "3", field_87: "2", field_88: "50", field_89: nil, field_111: nil) } + + it "returns correct errors" do + expect(parser.errors[:field_105]).to include("Enter a valid value for Was a mortgage used for the purchase of this property?") + parser.log.blank_invalid_non_setup_fields! + parser.log.save! + expect(parser.log.mortgageused).to be_nil + end + end + + context "when value is 3 and stairowned is 100" do + let(:attributes) { setup_section_params.merge(field_105: "3", field_87: "2", field_88: "50", field_89: "100", field_111: nil) } + + it "returns correct errors" do + expect(parser.errors[:field_105]).to include("Enter a valid value for Was a mortgage used for the purchase of this property?") + parser.log.blank_invalid_non_setup_fields! + parser.log.save! + expect(parser.log.mortgageused).to be_nil + end + end + end end describe "#field_119" do diff --git a/spec/services/bulk_upload/sales/year2024/row_parser_spec.rb b/spec/services/bulk_upload/sales/year2024/row_parser_spec.rb index f7b610b57..ea0ea386e 100644 --- a/spec/services/bulk_upload/sales/year2024/row_parser_spec.rb +++ b/spec/services/bulk_upload/sales/year2024/row_parser_spec.rb @@ -1024,6 +1024,30 @@ RSpec.describe BulkUpload::Sales::Year2024::RowParser do end end + context "when it is not a staircasing transaction" do + context "when value is 3 and stairowned is not answered" do + let(:attributes) { setup_section_params.merge(field_103: "3", field_86: "2", field_87: "50", field_88: nil, field_109: nil) } + + it "returns correct errors" do + expect(parser.errors[:field_103]).to include("Enter a valid value for Was a mortgage used for the purchase of this property?") + parser.log.blank_invalid_non_setup_fields! + parser.log.save! + expect(parser.log.mortgageused).to be_nil + end + end + + context "when value is 3 and stairowned is 100" do + let(:attributes) { setup_section_params.merge(field_103: "3", field_86: "2", field_87: "50", field_88: "100", field_109: nil) } + + it "returns correct errors" do + expect(parser.errors[:field_103]).to include("Enter a valid value for Was a mortgage used for the purchase of this property?") + parser.log.blank_invalid_non_setup_fields! + parser.log.save! + expect(parser.log.mortgageused).to be_nil + end + end + end + context "when value is 3 and stairowned is 100" do let(:attributes) { setup_section_params.merge(field_103: "3", field_86: "1", field_87: "50", field_88: "100", field_109: nil) } @@ -1059,7 +1083,7 @@ RSpec.describe BulkUpload::Sales::Year2024::RowParser do end describe "#field_126" do - let(:attributes) { valid_attributes.merge({ field_8: "3", field_10: "10", field_126: "3", field_13: "2" }) } + let(:attributes) { valid_attributes.merge({ field_8: "3", field_11: "10", field_126: "3", field_13: "2" }) } it "allows 3 (don't know) as an option for outright sale" do expect(parser.errors[:field_126]).to be_empty @@ -1067,7 +1091,7 @@ RSpec.describe BulkUpload::Sales::Year2024::RowParser do expect(parser.errors[:field_117]).to be_empty parser.log.blank_invalid_non_setup_fields! parser.log.save! - expect(parser.log.mortgageused).to be_nil + expect(parser.log.mortgageused).to eq(3) end end