Browse Source

Page routing can also depend on subsection

pull/206/head
baarkerlounger 4 years ago
parent
commit
e85d565c27
  1. 10
      app/models/form/page.rb
  2. 2
      app/models/form/question.rb
  3. 12
      spec/models/form/page_spec.rb

10
app/models/form/page.rb

@ -22,9 +22,17 @@ class Form::Page
end
def routed_to?(case_log)
return true unless depends_on || subsection.depends_on
subsection.enabled?(case_log) && depends_on_met(case_log)
end
private
def depends_on_met(case_log)
return true unless depends_on
subsection.enabled?(case_log) && depends_on.all? do |question, value|
depends_on.all? do |question, value|
!case_log[question].nil? && case_log[question] == value
end
end

2
app/models/form/question.rb

@ -80,7 +80,7 @@ class Form::Question
# Special case as No is a valid answer but doesn't let you progress and use the service
return false if id == "gdpr_acceptance" && case_log[id] == "No"
case_log[id].present?
case_log[id].present? || !case_log.respond_to?(id.to_sym)
end
private

12
spec/models/form/page_spec.rb

@ -63,5 +63,17 @@ RSpec.describe Form::Page, type: :model do
expect(subject.routed_to?(case_log)).to be true
end
end
context "when the page's subsection has routing conditions" do
let(:section_id) { "submission" }
let(:subsection_id) { "declaration" }
let(:page_id) { "declaration" }
let(:completed_case_log) { FactoryBot.build(:case_log, :completed, incfreq: "Weekly") }
it "evaluates the sections dependencies" do
expect(subject.routed_to?(case_log)).to be false
expect(subject.routed_to?(completed_case_log)).to be true
end
end
end
end

Loading…
Cancel
Save