diff --git a/app/models/form/subsection.rb b/app/models/form/subsection.rb index 50c5ba960..da129c6dd 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.completed?(case_log) } + return :completed if qs.all? { |question| question.type == "checkbox" ? question.answer_options.keys.any? { |key| case_log[key] == "Yes" } : 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.type == "checkbox" ? question.answer_options.keys.any? { |key| case_log[key] == "Yes" } : case_log[question.id].present? } end def unanswered_questions(case_log) diff --git a/spec/fixtures/forms/2021_2022.json b/spec/fixtures/forms/2021_2022.json index fa3c24efd..172a480bc 100644 --- a/spec/fixtures/forms/2021_2022.json +++ b/spec/fixtures/forms/2021_2022.json @@ -441,7 +441,7 @@ "dependent_question": { "check_answer_label": "Dependent Question", "header": "Question to test page routing", - "type": "checkbox", + "type": "radio", "answer_options": { "0": "Option A", "1": "Option B" diff --git a/spec/models/form/subsection_spec.rb b/spec/models/form/subsection_spec.rb index 4e3c22973..532d3b59a 100644 --- a/spec/models/form/subsection_spec.rb +++ b/spec/models/form/subsection_spec.rb @@ -35,6 +35,17 @@ RSpec.describe Form::Subsection, type: :model do expect(subject.status(case_log)).to eq(:in_progress) end + it "has a completed status for completed subsection" do + subsection_definition = section_definition["subsections"]["household_needs"] + subject = Form::Subsection.new("household_needs", subsection_definition, section) + case_log.armedforces = "No" + case_log.illness = "No" + case_log.housingneeds_a = "Yes" + case_log.la = "York" + case_log.illness_type_1 = "Yes" + expect(subject.status(case_log)).to eq(:completed) + end + it "has status helpers" do expect(subject.is_incomplete?(case_log)).to be(true) expect(subject.is_started?(case_log)).to be(true) @@ -47,8 +58,8 @@ RSpec.describe Form::Subsection, type: :model do end it "has question helpers for the number of answered questions" do - subsection_definition = section_definition["subsections"]["household_needs"] - subject = Form::Subsection.new("household_needs", subsection_definition, section) + subsection_definition = section_definition["subsections"]["household_needs"] + subject = Form::Subsection.new("household_needs", subsection_definition, section) expected_questions = %w[armedforces illness accessibility_requirements la condition_effects] case_log.armedforces = "No" case_log.illness = "No"