Browse Source

Move mortgageused validations onto the log model

pull/2310/head
Kat 2 years ago
parent
commit
b112601f9a
  1. 9
      app/models/validations/sales/sale_information_validations.rb
  2. 16
      app/services/bulk_upload/sales/year2023/row_parser.rb
  3. 15
      app/services/bulk_upload/sales/year2024/row_parser.rb
  4. 5
      spec/models/validations/sales/sale_information_validations_spec.rb
  5. 28
      spec/services/bulk_upload/sales/year2023/row_parser_spec.rb
  6. 25
      spec/services/bulk_upload/sales/year2024/row_parser_spec.rb

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

@ -150,11 +150,18 @@ module Validations::Sales::SaleInformationValidations
def validate_mortgage_used_and_stairbought(record) def validate_mortgage_used_and_stairbought(record)
return unless record.stairowned && record.mortgageused return unless record.stairowned && record.mortgageused
return unless record.saledate && record.form.start_year_after_2024?
if !record.stairowned_100? && record.mortgageused == 3 if !record.stairowned_100? && record.mortgageused == 3
record.errors.add :stairowned, I18n.t("validations.sale_information.stairowned.mortgageused_dont_know") record.errors.add :stairowned, I18n.t("validations.sale_information.stairowned.mortgageused_dont_know")
record.errors.add :mortgageused, I18n.t("validations.sale_information.stairowned.mortgageused_dont_know") record.errors.add :mortgageused, I18n.t("validations.sale_information.stairowned.mortgageused_dont_know")
end end
end end
def validate_mortgage_used_dont_know(record)
return unless record.mortgageused
if (record.discounted_ownership_sale? || record.outright_sale?) && record.mortgageused == 3
record.errors.add(:mortgageused, I18n.t("validations.invalid_option", question: "Was a mortgage used for the purchase of this property?"))
end
end
end end

16
app/services/bulk_upload/sales/year2023/row_parser.rb

@ -425,14 +425,6 @@ class BulkUpload::Sales::Year2023::RowParser
}, },
on: :before_log on: :before_log
validates :field_105,
inclusion: {
in: [1, 2],
if: proc { field_89.present? && field_89 != 100 && shared_ownership? },
question: QUESTIONS[:field_105],
},
on: :before_log
validates :field_13, validates :field_13,
presence: { presence: {
message: I18n.t("validations.not_answered", question: "buyers living in property"), message: I18n.t("validations.not_answered", question: "buyers living in property"),
@ -458,7 +450,6 @@ class BulkUpload::Sales::Year2023::RowParser
on: :after_log on: :after_log
validate :validate_buyer1_economic_status, on: :before_log validate :validate_buyer1_economic_status, on: :before_log
validate :validate_mortgageused, on: :before_log
validate :validate_nulls, on: :after_log validate :validate_nulls, on: :after_log
validate :validate_valid_radio_option, on: :before_log validate :validate_valid_radio_option, on: :before_log
@ -1341,11 +1332,4 @@ private
errors.add(:field_35, "Buyer 1 cannot be a child under 16") errors.add(:field_35, "Buyer 1 cannot be a child under 16")
end end
end end
def validate_mortgageused
if mortgageused.present? && mortgageused.to_i != 1 && mortgageused.to_i != 2
errors.add(:field_119, I18n.t("validations.invalid_option", question: "Was a mortgage used for the purchase of this property? - Discounted ownership")) if discounted_ownership?
errors.add(:field_128, I18n.t("validations.invalid_option", question: "Was a mortgage used for the purchase of this property? - Outright sale")) if outright_sale?
end
end
end end

15
app/services/bulk_upload/sales/year2024/row_parser.rb

@ -341,14 +341,6 @@ class BulkUpload::Sales::Year2024::RowParser
}, },
on: :before_log on: :before_log
validates :field_103,
inclusion: {
in: [1, 2],
if: proc { field_88.present? && field_88 != 100 && shared_ownership? },
question: QUESTIONS[:field_103],
},
on: :before_log
validates :field_9, validates :field_9,
presence: { presence: {
message: I18n.t("validations.not_answered", question: "type of shared ownership sale"), message: I18n.t("validations.not_answered", question: "type of shared ownership sale"),
@ -451,7 +443,6 @@ class BulkUpload::Sales::Year2024::RowParser
validate :validate_buyer1_economic_status, on: :before_log validate :validate_buyer1_economic_status, on: :before_log
validate :validate_address_option_found, on: :after_log validate :validate_address_option_found, on: :after_log
validate :validate_mortgageused, on: :before_log
validate :validate_nulls, on: :after_log validate :validate_nulls, on: :after_log
validate :validate_valid_radio_option, on: :before_log validate :validate_valid_radio_option, on: :before_log
@ -1378,10 +1369,4 @@ private
def valid_nationality_options def valid_nationality_options
%w[0] + GlobalConstants::COUNTRIES_ANSWER_OPTIONS.keys # 0 is "Prefers not to say" %w[0] + GlobalConstants::COUNTRIES_ANSWER_OPTIONS.keys # 0 is "Prefers not to say"
end end
def validate_mortgageused
if discounted_ownership? && mortgageused.present? && mortgageused.to_i != 1 && mortgageused.to_i != 2
errors.add(:field_117, I18n.t("validations.invalid_option", question: "Was a mortgage used for the purchase of this property? - Discounted ownership"))
end
end
end end

5
spec/models/validations/sales/sale_information_validations_spec.rb

@ -1010,10 +1010,11 @@ RSpec.describe Validations::Sales::SaleInformationValidations do
let(:record) { build(:sales_log, ownershipsch: 1, type: 9, saledate: now, mortgageused: 3, stairowned: 90) } let(:record) { build(:sales_log, ownershipsch: 1, type: 9, saledate: now, mortgageused: 3, stairowned: 90) }
let(:now) { Time.zone.local(2023, 4, 4) } let(:now) { Time.zone.local(2023, 4, 4) }
it "does not add an error" do it "adds an error" do
sale_information_validator.validate_mortgage_used_and_stairbought(record) sale_information_validator.validate_mortgage_used_and_stairbought(record)
expect(record.errors).to be_empty expect(record.errors[:stairowned]).to include("The percentage owned has to be 100% if the mortgage used is 'Don’t know'")
expect(record.errors[:mortgageused]).to include("The percentage owned has to be 100% if the mortgage used is 'Don’t know'")
end end
end end
end end

28
spec/services/bulk_upload/sales/year2023/row_parser_spec.rb

@ -1027,6 +1027,9 @@ RSpec.describe BulkUpload::Sales::Year2023::RowParser do
it "returns correct errors" do 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? - Shared ownership") expect(parser.errors[:field_105]).to include("Enter a valid value for Was a mortgage used for the purchase of this property? - Shared ownership")
parser.log.blank_invalid_non_setup_fields!
parser.log.save!
expect(parser.log.mortgageused).to be_nil
end end
end end
@ -1034,7 +1037,10 @@ RSpec.describe BulkUpload::Sales::Year2023::RowParser do
let(:attributes) { setup_section_params.merge(field_105: "3", field_87: "1", field_88: "50", field_89: "99", field_111: nil) } let(:attributes) { setup_section_params.merge(field_105: "3", field_87: "1", field_88: "50", field_89: "99", field_111: nil) }
it "returns correct errors" do 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? - Shared ownership") expect(parser.errors[:field_105]).to include("The percentage owned has to be 100% if the mortgage used is 'Don’t know'")
parser.log.blank_invalid_non_setup_fields!
parser.log.save!
expect(parser.log.mortgageused).to be_nil
end end
end end
@ -1043,6 +1049,7 @@ RSpec.describe BulkUpload::Sales::Year2023::RowParser do
it "does not add errors" do it "does not add errors" do
expect(parser.errors[:field_105]).not_to include("Enter a valid value for Was a mortgage used for the purchase of this property? - Shared ownership") expect(parser.errors[:field_105]).not_to include("Enter a valid value for Was a mortgage used for the purchase of this property? - Shared ownership")
expect(parser.errors[:field_105]).not_to include("The percentage owned has to be 100% if the mortgage used is 'Don’t know'")
end end
end end
@ -1053,6 +1060,9 @@ RSpec.describe BulkUpload::Sales::Year2023::RowParser do
expect(parser.errors[:field_105]).to be_empty expect(parser.errors[:field_105]).to be_empty
expect(parser.errors[:field_119]).to be_empty expect(parser.errors[:field_119]).to be_empty
expect(parser.errors[:field_128]).to be_empty expect(parser.errors[:field_128]).to be_empty
parser.log.blank_invalid_non_setup_fields!
parser.log.save!
expect(parser.log.mortgageused).to eq(3)
end end
end end
end end
@ -1061,19 +1071,21 @@ RSpec.describe BulkUpload::Sales::Year2023::RowParser do
let(:attributes) { valid_attributes.merge({ field_7: "2", field_9: "8", field_119: "3" }) } let(:attributes) { valid_attributes.merge({ field_7: "2", field_9: "8", field_119: "3" }) }
it "does not allow 3 (don't know) as an option for discounted ownership" do it "does not allow 3 (don't know) as an option for discounted ownership" do
expect(parser.errors[:field_119]).to include("Enter a valid value for Was a mortgage used for the purchase of this property? - Discounted ownership") expect(parser.errors[:field_119]).to include("Enter a valid value for Was a mortgage used for the purchase of this property?")
expect(parser.errors[:field_105]).to be_empty parser.log.blank_invalid_non_setup_fields!
expect(parser.errors[:field_128]).to be_empty parser.log.save!
expect(parser.log.mortgageused).to be_nil
end end
end end
describe "#field_128" do describe "#field_128" do
let(:attributes) { valid_attributes.merge({ field_7: "3", field_10: "10", field_128: "3" }) } let(:attributes) { valid_attributes.merge({ field_7: "3", field_10: "10", field_128: "3", field_12: "2" }) }
it "does not allow 3 (don't know) as an option for outright sale" do it "does not allow 3 (don't know) as an option for outright sale" do
expect(parser.errors[:field_128]).to include("Enter a valid value for Was a mortgage used for the purchase of this property? - Outright sale") expect(parser.errors[:field_128]).to include("Enter a valid value for Was a mortgage used for the purchase of this property?")
expect(parser.errors[:field_105]).to be_empty parser.log.blank_invalid_non_setup_fields!
expect(parser.errors[:field_119]).to be_empty parser.log.save!
expect(parser.log.mortgageused).to be_nil
end end
end end
end end

25
spec/services/bulk_upload/sales/year2024/row_parser_spec.rb

@ -998,6 +998,9 @@ RSpec.describe BulkUpload::Sales::Year2024::RowParser do
it "returns correct errors" do 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? - Shared ownership") expect(parser.errors[:field_103]).to include("Enter a valid value for Was a mortgage used for the purchase of this property? - Shared ownership")
parser.log.blank_invalid_non_setup_fields!
parser.log.save!
expect(parser.log.mortgageused).to be_nil
end end
end end
@ -1005,7 +1008,10 @@ RSpec.describe BulkUpload::Sales::Year2024::RowParser do
let(:attributes) { setup_section_params.merge(field_103: "3", field_86: "1", field_87: "50", field_88: "99", field_109: nil) } let(:attributes) { setup_section_params.merge(field_103: "3", field_86: "1", field_87: "50", field_88: "99", field_109: nil) }
it "returns correct errors" do 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? - Shared ownership") expect(parser.errors[:field_103]).to include("The percentage owned has to be 100% if the mortgage used is 'Don’t know'")
parser.log.blank_invalid_non_setup_fields!
parser.log.save!
expect(parser.log.mortgageused).to be_nil
end end
end end
@ -1013,7 +1019,8 @@ RSpec.describe BulkUpload::Sales::Year2024::RowParser do
let(:attributes) { setup_section_params.merge(field_103: "3", field_86: "1", field_87: "50", field_88: nil, field_109: nil) } let(:attributes) { setup_section_params.merge(field_103: "3", field_86: "1", field_87: "50", field_88: nil, field_109: nil) }
it "does not add errors" do it "does not add errors" do
expect(parser.errors[:field_103]).not_to include("Enter a valid value for Was a mortgage used for the purchase of this property? - Shared ownership") expect(parser.errors[:field_103]).not_to include("The percentage owned has to be 100% if the mortgage used is 'Don’t know'")
expect(parser.errors[:field_103]).not_to include("Enter a valid value for Was a mortgage used for the purchase of this property?")
end end
end end
@ -1031,12 +1038,13 @@ RSpec.describe BulkUpload::Sales::Year2024::RowParser do
end end
describe "#field_117" do describe "#field_117" do
let(:attributes) { valid_attributes.merge({ field_8: "2", field_117: "3" }) } let(:attributes) { valid_attributes.merge({ field_8: "2", field_10: "9", field_117: "3" }) }
it "does not allow 3 (don't know) as an option for discounted ownership" do it "does not allow 3 (don't know) as an option for discounted ownership" do
expect(parser.errors[:field_117]).to include("Enter a valid value for Was a mortgage used for the purchase of this property? - Discounted ownership") expect(parser.errors[:field_117]).to include("Enter a valid value for Was a mortgage used for the purchase of this property?")
expect(parser.errors[:field_103]).to be_empty parser.log.blank_invalid_non_setup_fields!
expect(parser.errors[:field_126]).to be_empty parser.log.save!
expect(parser.log.mortgageused).to be_nil
end end
context "when validate_discounted_ownership_value is triggered" do context "when validate_discounted_ownership_value is triggered" do
@ -1051,12 +1059,15 @@ RSpec.describe BulkUpload::Sales::Year2024::RowParser do
end end
describe "#field_126" do describe "#field_126" do
let(:attributes) { valid_attributes.merge({ field_8: "3", field_126: "3" }) } let(:attributes) { valid_attributes.merge({ field_8: "3", field_10: "10", field_126: "3", field_13: "2" }) }
it "allows 3 (don't know) as an option for outright sale" do it "allows 3 (don't know) as an option for outright sale" do
expect(parser.errors[:field_126]).to be_empty expect(parser.errors[:field_126]).to be_empty
expect(parser.errors[:field_103]).to be_empty expect(parser.errors[:field_103]).to be_empty
expect(parser.errors[:field_117]).to be_empty 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
end end
end end

Loading…
Cancel
Save