diff --git a/app/models/form/question.rb b/app/models/form/question.rb index 5b2e9d5c3..b37ff4ffc 100644 --- a/app/models/form/question.rb +++ b/app/models/form/question.rb @@ -80,6 +80,7 @@ class Form::Question def completed?(case_log) # 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" + return answer_options.keys.any? { |key| case_log[key] == "Yes" } if type == "checkbox" case_log[id].present? || !case_log.respond_to?(id.to_sym) end diff --git a/app/models/form/subsection.rb b/app/models/form/subsection.rb index da129c6dd..e3166a4e1 100644 --- a/app/models/form/subsection.rb +++ b/app/models/form/subsection.rb @@ -32,7 +32,7 @@ class Form::Subsection qs = applicable_questions(case_log) return :not_started if qs.all? { |question| case_log[question.id].blank? || question.read_only? } - return :completed if qs.all? { |question| question.type == "checkbox" ? question.answer_options.keys.any? { |key| case_log[key] == "Yes" } : question.completed?(case_log) } + return :completed if qs.all? { |question| question.completed?(case_log) } :in_progress end @@ -58,7 +58,7 @@ class Form::Subsection end def answered_questions(case_log) - applicable_questions(case_log).select { |question| question.type == "checkbox" ? question.answer_options.keys.any? { |key| case_log[key] == "Yes" } : case_log[question.id].present? } + applicable_questions(case_log).select { |question| question.completed?(case_log) } end def unanswered_questions(case_log)