diff --git a/app/helpers/form_page_error_helper.rb b/app/helpers/form_page_error_helper.rb
index 8a46accca..9610da921 100644
--- a/app/helpers/form_page_error_helper.rb
+++ b/app/helpers/form_page_error_helper.rb
@@ -4,6 +4,16 @@ module FormPageErrorHelper
other_page_error_ids.each { |id| lettings_log.errors.delete(id) }
end
+ def remove_duplicate_page_errors(lettings_log)
+ lettings_log.errors.map(&:message)
+ lettings_log.errors.group_by(&:message).each do |_, errors|
+ next if errors.size == 1
+
+ errors.shift
+ errors.each { |error| lettings_log.errors.delete(error.attribute) }
+ end
+ end
+
def all_questions_affected_by_errors(log)
log.errors.map(&:attribute) - [:base]
end
diff --git a/app/views/form/check_errors.html.erb b/app/views/form/check_errors.html.erb
index 27fa3ea0c..bab4858a5 100644
--- a/app/views/form/check_errors.html.erb
+++ b/app/views/form/check_errors.html.erb
@@ -2,6 +2,7 @@
<%= form_with model: @log, url: send("#{@log.model_name.param_key}_confirm_clear_answer_path", @log), method: "post", local: true do |f| %>
+ <% remove_duplicate_page_errors(@log) %>
<%= f.govuk_error_summary %>
<%= f.hidden_field :page_id, value: @page.id %>
diff --git a/spec/helpers/form_page_error_helper_spec.rb b/spec/helpers/form_page_error_helper_spec.rb
index 5f86e1648..067739e16 100644
--- a/spec/helpers/form_page_error_helper_spec.rb
+++ b/spec/helpers/form_page_error_helper_spec.rb
@@ -21,4 +21,22 @@ RSpec.describe FormPageErrorHelper do
end
end
end
+
+ describe "#remove_duplicate_page_errors" do
+ context "when non base other questions are removed" do
+ let!(:lettings_log) { FactoryBot.create(:lettings_log, :in_progress) }
+
+ before do
+ lettings_log.errors.add :layear, "error"
+ lettings_log.errors.add :period, "error_one"
+ lettings_log.errors.add :base, "error_one"
+ end
+
+ it "returns details and user tabs" do
+ remove_duplicate_page_errors(lettings_log)
+ expect(lettings_log.errors.count).to eq(2)
+ expect(lettings_log.errors.map(&:message)).to match_array(%w[error_one error])
+ end
+ end
+ end
end