Browse Source

CLDC-2670: fix issue with wrong referrer behaviour on interrupt screens

pull/2362/head
Robert Sullivan 2 years ago
parent
commit
bdce099f48
  1. 5
      app/helpers/form_page_helper.rb
  2. 2
      app/views/form/_check_answers_summary_list.html.erb
  3. 1
      app/views/form/_interruption_screen_question.html.erb
  4. 1
      app/views/form/check_answers.html.erb
  5. 7
      app/views/form/review.html.erb
  6. 30
      spec/helpers/form_page_helper_spec.rb

5
app/helpers/form_page_helper.rb

@ -1,9 +1,4 @@
module FormPageHelper 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) def action_href(log, page_id, referrer)
send("#{log.model_name.param_key}_#{page_id}_path", log, referrer:) send("#{log.model_name.param_key}_#{page_id}_path", log, referrer:)
end end

2
app/views/form/_check_answers_summary_list.html.erb

@ -28,7 +28,7 @@
<% if @log.collection_period_open_for_editing? %> <% if @log.collection_period_open_for_editing? %>
<% row.with_action( <% row.with_action(
text: question.action_text(@log), 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, visually_hidden_text: question.check_answer_label.to_s.downcase,
) %> ) %>
<% end %> <% end %>

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

@ -10,6 +10,7 @@
lettings_log:, lettings_log:,
questions: soft_validation_affected_questions(question, @log).filter { |q| q.page.routed_to?(@log, current_user) }, questions: soft_validation_affected_questions(question, @log).filter { |q| q.page.routed_to?(@log, current_user) },
referrer: "interruption_screen", referrer: "interruption_screen",
refer_unanswered: true,
} %> } %>
</div> </div>
</div> </div>

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

@ -27,6 +27,7 @@
lettings_log: @log, lettings_log: @log,
questions: total_applicable_questions(subsection, @log, current_user), questions: total_applicable_questions(subsection, @log, current_user),
referrer: "check_answers", referrer: "check_answers",
refer_unanswered: false,
} %> } %>
<% end %> <% end %>

7
app/views/form/review.html.erb

@ -19,7 +19,12 @@
<h3 class="govuk-summary-card__title"><%= subsection.label %></h3> <h3 class="govuk-summary-card__title"><%= subsection.label %></h3>
</div> </div>
<div class="govuk-summary-card__content"> <div class="govuk-summary-card__content">
<%= 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,
} %>
</div> </div>
</div> </div>
<% end %> <% end %>

30
spec/helpers/form_page_helper_spec.rb

@ -6,36 +6,22 @@ RSpec.describe FormPageHelper do
let(:sales_log) { FactoryBot.create(:sales_log) } let(:sales_log) { FactoryBot.create(:sales_log) }
context "with a lettings log" do context "with a lettings log" do
let(:question) { lettings_log.form.questions.detect { |q| q.id == "needstype" } } 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")
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")
end end
it "has an action href helper" do it "returns a correct referrer in the url" do
expect(action_href(lettings_log, "net_income", "interruption_screen")).to eq("/lettings-logs/#{lettings_log.id}/net-income?referrer=interruption_screen") 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
end end
context "with a sales log" do context "with a sales log" do
let(:question) { sales_log.form.questions.detect { |q| q.id == "ownershipsch" } } 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")
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")
end end
it "has an action href helper" do it "returns a correct referrer in the url" do
expect(action_href(sales_log, "buyer_1_age", "interruption_screen")).to eq("/sales-logs/#{sales_log.id}/buyer-1-age?referrer=interruption_screen") 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 end
end end

Loading…
Cancel
Save