diff --git a/app/controllers/form_controller.rb b/app/controllers/form_controller.rb
index 12dfcebf5..a1c053efc 100644
--- a/app/controllers/form_controller.rb
+++ b/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
diff --git a/app/helpers/interruption_screen_helper.rb b/app/helpers/interruption_screen_helper.rb
index e8bb85379..de29ccfc6 100644
--- a/app/helpers/interruption_screen_helper.rb
+++ b/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
diff --git a/app/views/form/_interruption_screen_question.html.erb b/app/views/form/_interruption_screen_question.html.erb
index 498618321..7e3625b7e 100644
--- a/app/views/form/_interruption_screen_question.html.erb
+++ b/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 %>
diff --git a/app/views/form/page.html.erb b/app/views/form/page.html.erb
index 2c135af98..7f7f9a683 100644
--- a/app/views/form/page.html.erb
+++ b/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 %>
<% if !@page.interruption_screen? && if request.query_parameters["referrer"] != "check_answers" %>
diff --git a/spec/components/check_answers_summary_list_card_component_spec.rb b/spec/components/check_answers_summary_list_card_component_spec.rb
index 8bf9f4a45..4afe0fbc2 100644
--- a/spec/components/check_answers_summary_list_card_component_spec.rb
+++ b/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
diff --git a/spec/features/form/validations_spec.rb b/spec/features/form/validations_spec.rb
index c7c611266..201059655 100644
--- a/spec/features/form/validations_spec.rb
+++ b/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")
diff --git a/spec/helpers/form_page_helper_spec.rb b/spec/helpers/form_page_helper_spec.rb
new file mode 100644
index 000000000..4e940d03b
--- /dev/null
+++ b/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
diff --git a/spec/models/form/question_spec.rb b/spec/models/form/question_spec.rb
index 0a2867e7f..751523d37 100644
--- a/spec/models/form/question_spec.rb
+++ b/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" }