Browse Source

refactor: make has_inferred_check_answers_value? do what it says it does

pull/1257/head
natdeanlewissoftwire 3 years ago
parent
commit
a0376627ee
  1. 15
      app/models/form/question.rb
  2. 2
      app/models/form/subsection.rb

15
app/models/form/question.rb

@ -100,10 +100,9 @@ class Form::Question
end
def has_inferred_check_answers_value?(log)
return true if selected_answer_option_is_derived?(log)
return inferred_check_answers_value&.any? { |inferred_value| inferred_value["condition"].values.first == log[inferred_value["condition"].keys.first] } if inferred_check_answers_value.present?
return false unless inferred_check_answers_value
false
inferred_check_answers_value&.any? { |inferred_value| inferred_value["condition"].values.first == log[inferred_value["condition"].keys.first] }
end
def displayed_answer_options(log, _current_user = nil)
@ -113,7 +112,7 @@ class Form::Question
end
def action_text(log)
if has_inferred_check_answers_value?(log)
if has_inferred_check_answers_value?(log) || selected_answer_option_is_derived?(log)
"Change"
elsif type == "checkbox"
answer_options.keys.any? { |key| value_is_yes?(log[key]) } ? "Change" : "Answer"
@ -260,13 +259,13 @@ class Form::Question
@guidance_partial && @guidance_position == GuidancePosition::BOTTOM
end
private
def selected_answer_option_is_derived?(log)
selected_option = answer_options&.dig(log[id].to_s.presence)
selected_option.is_a?(Hash) && selected_option["depends_on"] && form.depends_on_met(selected_option["depends_on"], log)
end
private
def has_inferred_display_value?(log)
inferred_check_answers_value.present? && inferred_check_answers_value.any? { |inferred_value| log[inferred_value["condition"].keys.first] == inferred_value["condition"].values.first }
end
@ -309,8 +308,8 @@ private
def inferred_answer_value(log)
return unless inferred_check_answers_value
inferred_answer = inferred_check_answers_value.find { |inferred_value| inferred_value["condition"].values.first == log[inferred_value["condition"].keys.first] }
inferred_answer["value"] if inferred_answer.present?
inferred_answer = inferred_check_answers_value.find { |inferred_value| log[inferred_value["condition"].keys.first] == inferred_value["condition"].values.first }
inferred_answer["value"] if inferred_answer
end
RADIO_YES_VALUE = {

2
app/models/form/subsection.rb

@ -44,7 +44,7 @@ class Form::Subsection
def applicable_questions(log)
questions.select do |q|
(q.displayed_to_user?(log) && !q.derived?) || q.has_inferred_check_answers_value?(log)
(q.displayed_to_user?(log) && !q.derived?) || q.has_inferred_check_answers_value?(log) || q.selected_answer_option_is_derived?(log)
end
end

Loading…
Cancel
Save