diff --git a/app/services/bulk_upload/sales/year2023/row_parser.rb b/app/services/bulk_upload/sales/year2023/row_parser.rb index b3b74f615..f07312aae 100644 --- a/app/services/bulk_upload/sales/year2023/row_parser.rb +++ b/app/services/bulk_upload/sales/year2023/row_parser.rb @@ -396,22 +396,32 @@ class BulkUpload::Sales::Year2023::RowParser }, on: :after_log - validates :field_13, + validates :field_12, + inclusion: { + in: [1, 2], + if: proc { outright_sale? && field_12.present? }, + category: :setup, + question: QUESTIONS[:field_12].downcase, + }, + on: :before_log + + validates :field_12, presence: { - message: I18n.t("validations.not_answered", question: "will the buyers live in the property"), + message: I18n.t("validations.not_answered", question: "company buyer"), category: :setup, if: :outright_sale?, }, on: :after_log - validates :field_12, + validates :field_13, presence: { - message: I18n.t("validations.not_answered", question: "company buyer"), + message: I18n.t("validations.not_answered", question: "will the buyers live in the property"), category: :setup, if: :outright_sale?, }, on: :after_log + validates :field_14, presence: { message: I18n.t("validations.not_answered", question: "joint purchase"), diff --git a/config/locales/en.yml b/config/locales/en.yml index e57e01da4..18251468d 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -41,6 +41,8 @@ en: activemodel: errors: models: + bulk_upload/sales/year2023/row_parser: + inclusion: Enter a valid value for %{question} bulk_upload/lettings/validator: attributes: base: 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 26ac2855b..ef01bc887 100644 --- a/spec/services/bulk_upload/sales/year2023/row_parser_spec.rb +++ b/spec/services/bulk_upload/sales/year2023/row_parser_spec.rb @@ -615,6 +615,17 @@ RSpec.describe BulkUpload::Sales::Year2023::RowParser do end end + describe "#field_12" do # buyer a company? + context "when an invalid option" do + let(:attributes) { setup_section_params.merge({ field_7: "3", field_12: "100" }) } + + it "returns setup error" do + expect(parser.errors.where(:field_12).map(&:message)).to eql(["Enter a valid value for is the buyer a company?"]) + expect(parser.errors.where(:field_12, category: :setup)).to be_present + end + end + end + describe "#field_14" do # joint purchase context "when an invalid option" do let(:attributes) { setup_section_params.merge({ field_14: "100" }) }