Browse Source

Add helper unit test

pull/235/head
baarkerlounger 3 years ago
parent
commit
5e1c7b7d91
  1. 6
      app/helpers/conditional_questions_helper.rb
  2. 6
      app/models/form/page.rb
  3. 2
      app/views/form/_radio_question.html.erb
  4. 8
      spec/helpers/conditional_questions_helper_spec.rb

6
app/helpers/conditional_questions_helper.rb

@ -3,10 +3,10 @@ module ConditionalQuestionsHelper
page.questions.map(&:conditional_for).compact.map(&:keys).flatten
end
def find_conditional_question(page, conditional_for, answer_value)
return if conditional_for.nil?
def find_conditional_question(page, question, answer_value)
return if question.conditional_for.nil?
conditional_key = conditional_for.find { |_, conditional_value| conditional_value.include? answer_value }&.first
conditional_key = question.conditional_for.find { |_, conditional_value| conditional_value.include? answer_value }&.first
page.questions.find { |q| q.id == conditional_key }
end

6
app/models/form/page.rb

@ -29,14 +29,14 @@ class Form::Page
def non_conditional_questions
@non_conditional_questions ||= questions.reject do |q|
conditional_questions_ids.include?(q.id)
conditional_question_ids.include?(q.id)
end
end
private
def conditional_questions_ids
@conditional_questions ||= questions.flat_map { |q|
def conditional_question_ids
@conditional_question_ids ||= questions.flat_map { |q|
next if q.conditional_for.blank?
# TODO: remove this condition once all conditional questions no longer need JS

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

@ -9,7 +9,7 @@
<% if key.starts_with?("divider") %>
<%= f.govuk_radio_divider %>
<% else %>
<% conditional_question = find_conditional_question(@page, question.conditional_for, val) %>
<% conditional_question = find_conditional_question(@page, question, val) %>
<% if conditional_question.nil? %>
<%= f.govuk_radio_button question.id, val, label: { text: val }, **stimulus_html_attributes(question) %>
<% else %>

8
spec/helpers/conditional_questions_helper_spec.rb

@ -12,6 +12,14 @@ RSpec.describe ConditionalQuestionsHelper do
end
end
describe "find conditional question" do
let(:question) { page.questions.find { |q| q.id == "armedforces" } }
let(:answer_value) { "A current or former regular in the UK Armed Forces (excluding National Service)" }
it "returns the conditional question for a given answer option" do
expect(find_conditional_question(page, question, answer_value))
end
end
describe "display question key div" do
let(:conditional_question) { page.questions.find { |q| q.id == "leftreg" } }

Loading…
Cancel
Save