From 38df2a555939ca8188f89effead47ccb6b0b9b88 Mon Sep 17 00:00:00 2001 From: Jack <113976590+bibblobcode@users.noreply.github.com> Date: Mon, 5 Jun 2023 13:12:19 +0100 Subject: [PATCH] CLDC-2388 Map purchase prices errors to type (#1673) --- .../bulk_upload/sales/year2022/row_parser.rb | 34 ++++++++++++++----- .../sales/year2022/row_parser_spec.rb | 24 +++++++++++++ 2 files changed, 49 insertions(+), 9 deletions(-) diff --git a/app/services/bulk_upload/sales/year2022/row_parser.rb b/app/services/bulk_upload/sales/year2022/row_parser.rb index a4e60487f..ed51a0601 100644 --- a/app/services/bulk_upload/sales/year2022/row_parser.rb +++ b/app/services/bulk_upload/sales/year2022/row_parser.rb @@ -324,6 +324,27 @@ class BulkUpload::Sales::Year2022::RowParser if: proc { field_84 == 12 }, on: :after_log + validates :field_68, + presence: { + message: I18n.t("validations.not_answered", question: "What was the full purchase price?"), + }, + if: :shared_ownership?, + on: :after_log + + validates :field_77, + presence: { + message: I18n.t("validations.not_answered", question: "What was the full purchase price?"), + }, + if: :discounted_ownership?, + on: :after_log + + validates :field_87, + presence: { + message: I18n.t("validations.not_answered", question: "What was the full purchase price?"), + }, + if: :outright_sale?, + on: :after_log + validates :field_109, presence: { message: I18n.t("validations.not_answered", question: "more than 2 buyers"), category: :setup }, if: :joint_purchase?, on: :after_log validates :field_113, presence: { message: I18n.t("validations.not_answered", question: "ownership type"), category: :setup }, on: :after_log @@ -538,7 +559,6 @@ private lanomagr: %i[field_65], frombeds: %i[field_66], fromprop: %i[field_67], - value: %i[field_68 field_77 field_87], equity: %i[field_69], mortgage: %i[field_70 field_80 field_88], extrabor: %i[field_71 field_81 field_89], @@ -1034,15 +1054,11 @@ private next if log.optional_fields.include?(question.id) next if question.completed?(log) - if setup_question?(question) - fields.each do |field| - unless errors.any? { |e| fields.include?(e.attribute) } + fields.each do |field| + unless errors.any? { |e| fields.include?(e.attribute) } + if setup_question?(question) errors.add(field, I18n.t("validations.not_answered", question: question.check_answer_label&.downcase), category: :setup) - end - end - else - fields.each do |field| - unless errors.any? { |e| fields.include?(e.attribute) } + else errors.add(field, I18n.t("validations.not_answered", question: question.check_answer_label&.downcase)) end end diff --git a/spec/services/bulk_upload/sales/year2022/row_parser_spec.rb b/spec/services/bulk_upload/sales/year2022/row_parser_spec.rb index d6594bd35..dae343c49 100644 --- a/spec/services/bulk_upload/sales/year2022/row_parser_spec.rb +++ b/spec/services/bulk_upload/sales/year2022/row_parser_spec.rb @@ -419,6 +419,30 @@ RSpec.describe BulkUpload::Sales::Year2022::RowParser do end end + context "when type is shared ownership" do + let(:attributes) { valid_attributes.merge({ field_113: 1, field_68: nil }) } + + it "has error on correct fields" do + expect(parser.errors).to include(:field_68) + end + end + + context "when type is discounted ownership" do + let(:attributes) { valid_attributes.merge({ field_113: 2, field_77: nil }) } + + it "has error on correct fields" do + expect(parser.errors).to include(:field_77) + end + end + + context "when type is outright sale" do + let(:attributes) { valid_attributes.merge({ field_113: 3, field_87: nil }) } + + it "has error on correct fields" do + expect(parser.errors).to include(:field_87) + end + end + describe "#field_93" do # username for created_by context "when blank" do let(:attributes) { { bulk_upload:, field_93: "" } }