Browse Source

Add Page#interruption_screen? method

pull/1215/head
Jack S 4 years ago
parent
commit
f5ebabbecb
  1. 20
      app/controllers/form_controller.rb
  2. 4
      app/models/form/page.rb
  3. 2
      spec/fixtures/forms/2021_2022.json
  4. 16
      spec/models/form/page_spec.rb

20
app/controllers/form_controller.rb

@ -129,20 +129,26 @@ private
def successful_redirect_path
if is_referrer_check_answers?
page_ids = @log.form.subsection_for_page(@page).pages.map(&:id)
page_ids = form.subsection_for_page(@page).pages.map(&:id)
page_index = page_ids.index(@page.id)
next_page = @log.form.next_page(@page, @log, current_user)
previous_page = @log.form.previous_page(page_ids, page_index, @log, current_user)
if next_page.to_s.include?("value_check") || next_page == previous_page
return send("#{@log.class.name.underscore}_#{next_page}_path", @log, { referrer: "check_answers" })
next_page_id = form.next_page(@page, @log, current_user)
next_page = form.get_page(next_page_id)
previous_page = form.previous_page(page_ids, page_index, @log, current_user)
if next_page&.interruption_screen? || next_page_id == previous_page
return send("#{@log.class.name.underscore}_#{next_page_id}_path", @log, { referrer: "check_answers" })
else
return send("#{@log.model_name.param_key}_#{@log.form.subsection_for_page(@page).id}_check_answers_path", @log)
return send("#{@log.model_name.param_key}_#{form.subsection_for_page(@page).id}_check_answers_path", @log)
end
end
redirect_path = @log.form.next_page_redirect_path(@page, @log, current_user)
redirect_path = form.next_page_redirect_path(@page, @log, current_user)
send(redirect_path, @log)
end
def form
@log&.form
end
def mandatory_questions_with_no_response(responses_for_page)
session["fields"] = {}
calc_questions = @page.questions.map(&:result_field)

4
app/models/form/page.rb

@ -32,6 +32,10 @@ class Form::Page
end
end
def interruption_screen?
questions.all? { |question| question.type == "interruption_screen" }
end
private
def conditional_question_ids

2
spec/fixtures/forms/2021_2022.json vendored

@ -208,7 +208,7 @@
"check_answer_label": "Retirement age soft validation",
"hidden_in_check_answers": true,
"header": "Are you sure this person is retired?",
"type": "radio",
"type": "interruption_screen",
"answer_options": {
"0": {
"value": "Yes"

16
spec/models/form/page_spec.rb

@ -47,6 +47,22 @@ RSpec.describe Form::Page, type: :model do
end
end
describe "#interruption_screen?" do
context "when it has regular questions" do
it "returns false" do
expect(page.interruption_screen?).to be false
end
end
context "when it has interruption_screen question" do
let(:page) { form.get_page("retirement_value_check") }
it "returns true" do
expect(page.interruption_screen?).to be true
end
end
end
context "with a lettings log" do
let(:lettings_log) { FactoryBot.build(:lettings_log, :in_progress) }

Loading…
Cancel
Save