diff --git a/app/controllers/form_controller.rb b/app/controllers/form_controller.rb index 328a61c73..e558b5fb5 100644 --- a/app/controllers/form_controller.rb +++ b/app/controllers/form_controller.rb @@ -214,10 +214,10 @@ private end is_new_answer_from_check_answers = is_referrer_type?("check_answers_new_answer") - redirect_path = form.next_page_redirect_path(@page, @log, current_user, is_new_answer_from_check_answers) + redirect_path = form.next_page_redirect_path(@page, @log, current_user, ignore_answered: is_new_answer_from_check_answers) referrer = is_new_answer_from_check_answers ? "check_answers_new_answer" : nil - send(redirect_path, @log, { referrer: referrer}) + send(redirect_path, @log, { referrer: }) end def redirect_path_to_question(page_to_show, unanswered_pages) diff --git a/app/models/form.rb b/app/models/form.rb index bae96c7a3..755121473 100644 --- a/app/models/form.rb +++ b/app/models/form.rb @@ -80,7 +80,7 @@ class Form subsections.find { |s| s.pages.find { |p| p.id == page.id } } end - def next_page_id(page, log, current_user, ignore_answered = false) + def next_page_id(page, log, current_user, ignore_answered: false) return page.next_unresolved_page_id || :check_answers if log.unresolved page_ids = subsection_for_page(page).pages.map(&:id) @@ -94,14 +94,13 @@ class Form return :check_answers if next_page.nil? return next_page.id if next_page.routed_to?(log, current_user) && - (!ignore_answered || next_page.has_unanswered_questions?(log)) + (!ignore_answered || next_page.has_unanswered_questions?(log)) - next_page_id(next_page, log, current_user, ignore_answered) + next_page_id(next_page, log, current_user, ignore_answered:) end - def next_page_redirect_path(page, log, current_user, ignore_answered = false) - puts ignore_answered - next_page_id = next_page_id(page, log, current_user, ignore_answered) + def next_page_redirect_path(page, log, current_user, ignore_answered: false) + next_page_id = next_page_id(page, log, current_user, ignore_answered:) if next_page_id == :check_answers "#{type}_log_#{subsection_for_page(page).id}_check_answers_path" else diff --git a/app/views/form/_check_answers_summary_list.html.erb b/app/views/form/_check_answers_summary_list.html.erb index ae278ff19..f849847a2 100644 --- a/app/views/form/_check_answers_summary_list.html.erb +++ b/app/views/form/_check_answers_summary_list.html.erb @@ -31,7 +31,7 @@ href: action_href( @log, question.page.id, - question.displayed_as_answered?(@log) || referrer_unanswered.nil? ? referrer : referrer_unanswered + question.displayed_as_answered?(@log) || !defined?(referrer_unanswered) ? referrer : referrer_unanswered, ), visually_hidden_text: question.check_answer_label.to_s.downcase, ) %> diff --git a/spec/features/form/check_answers_page_lettings_logs_spec.rb b/spec/features/form/check_answers_page_lettings_logs_spec.rb index 5b486057e..3df66a341 100644 --- a/spec/features/form/check_answers_page_lettings_logs_spec.rb +++ b/spec/features/form/check_answers_page_lettings_logs_spec.rb @@ -89,11 +89,11 @@ RSpec.describe "Lettings Log Check Answers Page" do # Regex explanation: match the string "Answer" but not if it's follow by "the missing questions" # This way only the links in the table will get picked up - it "has an answer link without a referrer for questions missing an answer" do + it "has an answer link with the check_answers_new_answer referrer for questions missing an answer" do visit("/lettings-logs/#{empty_lettings_log.id}/#{subsection}/check-answers?referrer=check_answers") assert_selector "a", text: /Answer (?!the missing questions)/, count: 4 assert_selector "a", text: "Change", count: 0 - expect(page).to have_link("Answer", href: "/lettings-logs/#{empty_lettings_log.id}/person-1-age") + expect(page).to have_link("Answer", href: "/lettings-logs/#{empty_lettings_log.id}/person-1-age?referrer=check_answers_new_answer") end it "has a change link for answered questions" do