diff --git a/app/services/bulk_upload/lettings/year2022/row_parser.rb b/app/services/bulk_upload/lettings/year2022/row_parser.rb index 16c83e7e8..6c0c90119 100644 --- a/app/services/bulk_upload/lettings/year2022/row_parser.rb +++ b/app/services/bulk_upload/lettings/year2022/row_parser.rb @@ -725,8 +725,10 @@ private question.page.interruption_screen_question_ids.each do |interruption_screen_question_id| field_mapping_for_errors[interruption_screen_question_id.to_sym].each do |field| - error_message = [display_title_text(question.page.title_text, log), display_informative_text(question.page.informative_text, log)].join(". ") - errors.add(field, message: error_message, category: :soft_validation) + unless errors.any? { |e| e.options[:category] == :soft_validation && field_mapping_for_errors[interruption_screen_question_id.to_sym].include?(e.attribute) } + error_message = [display_title_text(question.page.title_text, log), display_informative_text(question.page.informative_text, log)].join(". ") + errors.add(field, message: error_message, category: :soft_validation) + end end end end diff --git a/app/services/bulk_upload/lettings/year2023/row_parser.rb b/app/services/bulk_upload/lettings/year2023/row_parser.rb index befe9c3d6..08810dd7e 100644 --- a/app/services/bulk_upload/lettings/year2023/row_parser.rb +++ b/app/services/bulk_upload/lettings/year2023/row_parser.rb @@ -467,8 +467,10 @@ private question.page.interruption_screen_question_ids.each do |interruption_screen_question_id| field_mapping_for_errors[interruption_screen_question_id.to_sym].each do |field| - error_message = [display_title_text(question.page.title_text, log), display_informative_text(question.page.informative_text, log)].join(". ") - errors.add(field, message: error_message, category: :soft_validation) + unless errors.any? { |e| field_mapping_for_errors[interruption_screen_question_id.to_sym].include?(e.attribute) } + error_message = [display_title_text(question.page.title_text, log), display_informative_text(question.page.informative_text, log)].join(". ") + errors.add(field, message: error_message, category: :soft_validation) + end end end end diff --git a/app/services/bulk_upload/sales/year2022/row_parser.rb b/app/services/bulk_upload/sales/year2022/row_parser.rb index bd221b46b..3541777d0 100644 --- a/app/services/bulk_upload/sales/year2022/row_parser.rb +++ b/app/services/bulk_upload/sales/year2022/row_parser.rb @@ -954,8 +954,10 @@ private question.page.interruption_screen_question_ids.each do |interruption_screen_question_id| field_mapping_for_errors[interruption_screen_question_id.to_sym].each do |field| - error_message = [display_title_text(question.page.title_text, log), display_informative_text(question.page.informative_text, log)].join(". ") - errors.add(field, message: error_message, category: :soft_validation) + unless errors.any? { |e| e.options[:category] == :soft_validation && field_mapping_for_errors[interruption_screen_question_id.to_sym].include?(e.attribute) } + error_message = [display_title_text(question.page.title_text, log), display_informative_text(question.page.informative_text, log)].join(". ") + errors.add(field, message: error_message, category: :soft_validation) + end end end end diff --git a/spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb b/spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb index e2e947a83..ffa4bba32 100644 --- a/spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb +++ b/spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb @@ -1030,6 +1030,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do it "populates with correct error message" do soft_validation_errors = parser.errors.select { |e| e.options[:category] == :soft_validation } + expect(soft_validation_errors.count { |e| e.attribute == :field_128 }).to be(1) expect(soft_validation_errors.find { |e| e.attribute == :field_128 }.message).to eql("You told us the rent is £120.00 every week. The maximum rent expected for this type of property in this local authority is ££118.85 every week.") end end