diff --git a/Gemfile.lock b/Gemfile.lock index 80b7fdf74..e70b4de2f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -357,7 +357,7 @@ GEM simplecov_json_formatter (0.1.3) stimulus-rails (1.0.2) railties (>= 6.0.0) - thor (1.1.0) + thor (1.2.1) turbo-rails (1.0.0) actionpack (>= 6.0.0) railties (>= 6.0.0) diff --git a/app/models/form/question.rb b/app/models/form/question.rb index 88a840f2b..cc276a5ab 100644 --- a/app/models/form/question.rb +++ b/app/models/form/question.rb @@ -49,6 +49,13 @@ class Form::Question end end + 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" + + case_log[id].present? + end + private def checkbox_answer_label(case_log) diff --git a/app/models/form/subsection.rb b/app/models/form/subsection.rb index f05083172..5ae163539 100644 --- a/app/models/form/subsection.rb +++ b/app/models/form/subsection.rb @@ -30,16 +30,11 @@ class Form::Subsection qs = applicable_questions(case_log) return :not_started if qs.all? { |question| case_log[question.id].blank? } - return :completed if qs.all? { |question| case_log[question.id].present? } && !invalidated?(case_log) + return :completed if qs.all? { |question| question.completed?(case_log) } :in_progress end - def invalidated?(case_log) - applicable_questions(case_log).map(&:id).include?("gdpr_acceptance") && - case_log["gdpr_acceptance"] == "No" - end - def is_incomplete?(case_log) %i[not_started in_progress].include?(status(case_log)) end