Browse Source

Change how we route back to interruption screen

pull/1584/head
Kat 3 years ago
parent
commit
5708593280
  1. 7
      app/controllers/form_controller.rb
  2. 4
      app/helpers/interruption_screen_helper.rb
  3. 2
      app/views/form/_interruption_screen_question.html.erb
  4. 1
      app/views/form/page.html.erb
  5. 6
      spec/components/check_answers_summary_list_card_component_spec.rb
  6. 18
      spec/features/form/validations_spec.rb
  7. 12
      spec/helpers/form_page_helper_spec.rb
  8. 5
      spec/models/form/question_spec.rb

7
app/controllers/form_controller.rb

@ -46,6 +46,10 @@ class FormController < ApplicationController
end
def show_page
if request.params["referrer"] == "interruption_screen"
@interruption_page_id = request.headers["HTTP_REFERER"].split("/")[-1].underscore
end
if @log
page_id = request.path.split("/")[-1].underscore
@page = form.get_page(page_id)
@ -122,8 +126,7 @@ private
end
def interruption_screen_referrer
referrer = request.headers["HTTP_REFERER"].presence || ""
return CGI.parse(referrer.split("?")[-1])["referrer"][0] if referrer.present? && CGI.parse(referrer.split("?")[-1]).present?
params[@log.model_name.param_key]["interruption_page_id"]
end
def successful_redirect_path

4
app/helpers/interruption_screen_helper.rb

@ -33,8 +33,8 @@ module InterruptionScreenHelper
question.page.affected_question_ids.map { |question_id| log.form.get_question(question_id, log) }
end
def interruption_action_href(log, page_id, current_page_id)
send("#{log.model_name.param_key}_#{page_id}_path", log, referrer: current_page_id)
def interruption_action_href(log, page_id)
send("#{log.model_name.param_key}_#{page_id}_path", log, referrer: "interruption_screen")
end
private

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

@ -38,7 +38,7 @@
<% if @log.collection_period_open? %>
<% row.action(
text: affected_question.action_text(@log),
href: interruption_action_href(@log, affected_question.page.id, question.page.id),
href: interruption_action_href(@log, affected_question.page.id),
visually_hidden_text: affected_question.check_answer_label.to_s.downcase,
) %>
<% end %>

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

@ -59,6 +59,7 @@
<% end %>
<%= f.hidden_field :page, value: @page.id %>
<%= f.hidden_field :interruption_page_id, value: @interruption_page_id %>
<div class="govuk-button-group">
<% if !@page.interruption_screen? && if request.query_parameters["referrer"] != "check_answers" %>

6
spec/components/check_answers_summary_list_card_component_spec.rb

@ -62,13 +62,13 @@ RSpec.describe CheckAnswersSummaryListCardComponent, type: :component do
context "when in 23/24 collection" do
context "when given a set of questions" do
let(:user) { build(:user) }
let(:log) { build(:lettings_log, :completed, age2: 99, startdate: Time.zone.local(2023, 5, 1)) }
let(:user) { create(:user) }
let(:log) { create(:lettings_log, :completed, age2: 99, startdate: Time.zone.local(2023, 5, 1)) }
let(:subsection_id) { "household_characteristics" }
let(:subsection) { log.form.get_subsection(subsection_id) }
let(:questions) { subsection.applicable_questions(log) }
it "renders a summary list card includinq question numbers for the answers to those questions" do
it "renders a summary list card including question numbers for the answers to those questions" do
expect(rendered).to have_content(questions.first.answer_label(log))
expect(rendered).to have_content("Q32 - Lead tenant’s age")
end

18
spec/features/form/validations_spec.rb

@ -150,17 +150,17 @@ RSpec.describe "validations" do
expect(page).to have_content("Net income is outside the expected range based on the lead tenant’s working situation")
expect(page).to have_content("You told us the lead tenant’s working situation is: full-time – 30 hours or more")
expect(page).to have_content("The household income you have entered is £750.00 every week")
click_button("Save and continue")
click_button("Confirm and continue")
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-uc-proportion")
end
it "allows to fix the questions that trigger the soft validation" do
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check")
expect(page).to have_link("Change", href: "/lettings-logs/#{lettings_log.id}/net-income?referrer=net_income_value_check").twice
expect(page).to have_link("Change", href: "/lettings-logs/#{lettings_log.id}/person-1-working-situation?referrer=net_income_value_check")
expect(page).to have_link("Change", href: "/lettings-logs/#{lettings_log.id}/net-income?referrer=interruption_screen").twice
expect(page).to have_link("Change", href: "/lettings-logs/#{lettings_log.id}/person-1-working-situation?referrer=interruption_screen")
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check")
click_link("Change", href: "/lettings-logs/#{lettings_log.id}/net-income?referrer=net_income_value_check", match: :first)
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income?referrer=net_income_value_check")
click_link("Change", href: "/lettings-logs/#{lettings_log.id}/net-income?referrer=interruption_screen", match: :first)
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income?referrer=interruption_screen")
fill_in("lettings-log-earnings-field", with: income_under_soft_limit)
choose("lettings-log-incfreq-1-field", allow_label_click: true)
click_button("Save and continue")
@ -171,11 +171,11 @@ RSpec.describe "validations" do
it "allows to fix the questions from different sections" do
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check")
expect(page).to have_link("Change", href: "/lettings-logs/#{lettings_log.id}/net-income?referrer=net_income_value_check").twice
expect(page).to have_link("Change", href: "/lettings-logs/#{lettings_log.id}/person-1-working-situation?referrer=net_income_value_check")
expect(page).to have_link("Change", href: "/lettings-logs/#{lettings_log.id}/net-income?referrer=interruption_screen").twice
expect(page).to have_link("Change", href: "/lettings-logs/#{lettings_log.id}/person-1-working-situation?referrer=interruption_screen")
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check")
click_link("Change", href: "/lettings-logs/#{lettings_log.id}/person-1-working-situation?referrer=net_income_value_check")
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/person-1-working-situation?referrer=net_income_value_check")
click_link("Change", href: "/lettings-logs/#{lettings_log.id}/person-1-working-situation?referrer=interruption_screen")
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/person-1-working-situation?referrer=interruption_screen")
choose("lettings-log-ecstat1-10-field", allow_label_click: true)
click_button("Save and continue")
expect(page).to have_current_path("/lettings-logs/#{lettings_log.id}/net-income-value-check")

12
spec/helpers/form_page_helper_spec.rb

@ -0,0 +1,12 @@
require "rails_helper"
RSpec.describe FormPageHelper do
describe "#action_href" do
let(:lettings_log) { FactoryBot.build(:lettings_log) }
it "has an update answer link href helper" do
lettings_log.id = 1
expect(action_href(lettings_log, "net_income")).to eq("/lettings-logs/1/net-income?referrer=check_answers")
end
end
end

5
spec/models/form/question_spec.rb

@ -257,11 +257,6 @@ RSpec.describe Form::Question, type: :model do
expect(question.action_text(lettings_log)).to match(/Change/)
end
it "has an update answer link href helper" do
lettings_log.id = 1
expect(action_href(lettings_log, page.id)).to eq("/lettings-logs/1/net-income?referrer=check_answers")
end
context "when the question has an inferred answer" do
let(:section_id) { "tenancy_and_property" }
let(:subsection_id) { "property_information" }

Loading…
Cancel
Save