From bdce099f4899f75ecbaf316e4c1f81a989b15e5e Mon Sep 17 00:00:00 2001 From: Robert Sullivan Date: Wed, 3 Apr 2024 14:59:09 +0100 Subject: [PATCH] CLDC-2670: fix issue with wrong referrer behaviour on interrupt screens --- app/helpers/form_page_helper.rb | 5 ---- .../form/_check_answers_summary_list.html.erb | 2 +- .../_interruption_screen_question.html.erb | 1 + app/views/form/check_answers.html.erb | 1 + app/views/form/review.html.erb | 7 ++++- spec/helpers/form_page_helper_spec.rb | 30 +++++-------------- 6 files changed, 17 insertions(+), 29 deletions(-) diff --git a/app/helpers/form_page_helper.rb b/app/helpers/form_page_helper.rb index d503c4f46..d8e4922bf 100644 --- a/app/helpers/form_page_helper.rb +++ b/app/helpers/form_page_helper.rb @@ -1,9 +1,4 @@ module FormPageHelper - def check_answers_href(question, log) - referrer = question.displayed_as_answered?(log) ? "check_answers" : nil - action_href(log, question.page.id, referrer) - end - def action_href(log, page_id, referrer) send("#{log.model_name.param_key}_#{page_id}_path", log, referrer:) end diff --git a/app/views/form/_check_answers_summary_list.html.erb b/app/views/form/_check_answers_summary_list.html.erb index 747b6152f..754f775ea 100644 --- a/app/views/form/_check_answers_summary_list.html.erb +++ b/app/views/form/_check_answers_summary_list.html.erb @@ -28,7 +28,7 @@ <% if @log.collection_period_open_for_editing? %> <% row.with_action( text: question.action_text(@log), - href: check_answers_href(question, @log), + href: action_href(@log, question.page.id, (question.displayed_as_answered?(@log) || refer_unanswered) ? referrer : nil), visually_hidden_text: question.check_answer_label.to_s.downcase, ) %> <% end %> diff --git a/app/views/form/_interruption_screen_question.html.erb b/app/views/form/_interruption_screen_question.html.erb index 73c355588..e383539e4 100644 --- a/app/views/form/_interruption_screen_question.html.erb +++ b/app/views/form/_interruption_screen_question.html.erb @@ -10,6 +10,7 @@ lettings_log:, questions: soft_validation_affected_questions(question, @log).filter { |q| q.page.routed_to?(@log, current_user) }, referrer: "interruption_screen", + refer_unanswered: true, } %> diff --git a/app/views/form/check_answers.html.erb b/app/views/form/check_answers.html.erb index 7c26dd123..a42e348dc 100644 --- a/app/views/form/check_answers.html.erb +++ b/app/views/form/check_answers.html.erb @@ -27,6 +27,7 @@ lettings_log: @log, questions: total_applicable_questions(subsection, @log, current_user), referrer: "check_answers", + refer_unanswered: false, } %> <% end %> diff --git a/app/views/form/review.html.erb b/app/views/form/review.html.erb index 39682362d..9795b3c2f 100644 --- a/app/views/form/review.html.erb +++ b/app/views/form/review.html.erb @@ -19,7 +19,12 @@

<%= subsection.label %>

- <%= render partial: "form/check_answers_summary_list", locals: { subsection:, questions: total_applicable_questions(subsection, @log, current_user), referrer: "check_answers" } %> + <%= render partial: "form/check_answers_summary_list", locals: { + subsection:, + questions: total_applicable_questions(subsection, @log, current_user), + referrer: "check_answers", + refer_unanswered: false, + } %>
<% end %> diff --git a/spec/helpers/form_page_helper_spec.rb b/spec/helpers/form_page_helper_spec.rb index 8a63362c5..aeded6f8d 100644 --- a/spec/helpers/form_page_helper_spec.rb +++ b/spec/helpers/form_page_helper_spec.rb @@ -6,36 +6,22 @@ RSpec.describe FormPageHelper do let(:sales_log) { FactoryBot.create(:sales_log) } context "with a lettings log" do - let(:question) { lettings_log.form.questions.detect { |q| q.id == "needstype" } } - - it "answer link href helper does not attach referrer when question not answered" do - expect(check_answers_href(question, lettings_log)).to eq("/lettings-logs/#{lettings_log.id}/needs-type") - end - - it "answer link href helper attaches referrer when question already answered" do - lettings_log[question.id] = 1 - expect(check_answers_href(question, lettings_log)).to eq("/lettings-logs/#{lettings_log.id}/needs-type?referrer=check_answers") + it "has an update answer link href helper" do + expect(action_href(lettings_log, "net_income")).to eq("/lettings-logs/#{lettings_log.id}/net-income?referrer=check_answers") end - it "has an action href helper" do - expect(action_href(lettings_log, "net_income", "interruption_screen")).to eq("/lettings-logs/#{lettings_log.id}/net-income?referrer=interruption_screen") + it "returns a correct referrer in the url" do + expect(action_href(lettings_log, "retirement_value_check", "interruption_screen")).to eq("/lettings-logs/#{lettings_log.id}/retirement-value-check?referrer=interruption_screen") end end context "with a sales log" do - let(:question) { sales_log.form.questions.detect { |q| q.id == "ownershipsch" } } - - it "answer link href helper does not attach referrer when question not answered" do - expect(check_answers_href(question, sales_log)).to eq("/sales-logs/#{sales_log.id}/ownership-scheme") - end - - it "answer link href helper attaches referrer when question already answered" do - sales_log[question.id] = 1 - expect(check_answers_href(question, sales_log)).to eq("/sales-logs/#{sales_log.id}/ownership-scheme?referrer=check_answers") + it "has an update answer link href helper" do + expect(action_href(sales_log, "buyer_1_age")).to eq("/sales-logs/#{sales_log.id}/buyer-1-age?referrer=check_answers") end - it "has an action href helper" do - expect(action_href(sales_log, "buyer_1_age", "interruption_screen")).to eq("/sales-logs/#{sales_log.id}/buyer-1-age?referrer=interruption_screen") + it "returns a correct referrer in the url" do + expect(action_href(sales_log, "grant_value_check", "interruption_screen")).to eq("/sales-logs/#{sales_log.id}/grant-value-check?referrer=interruption_screen") end end end