Browse Source

Remove duplicate errors for check errors page

pull/2560/head
Kat 2 years ago committed by kosiakkatrina
parent
commit
bb69feedfe
  1. 10
      app/helpers/form_page_error_helper.rb
  2. 1
      app/views/form/check_errors.html.erb
  3. 18
      spec/helpers/form_page_error_helper_spec.rb

10
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

1
app/views/form/check_errors.html.erb

@ -2,6 +2,7 @@
<div class="govuk-grid-column-three-quarters-from-desktop">
<%= 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 %>

18
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

Loading…
Cancel
Save