Browse Source

Fix subsection status method

pull/244/head
Kat 4 years ago
parent
commit
30438cbf03
  1. 4
      app/models/form/subsection.rb
  2. 2
      spec/fixtures/forms/2021_2022.json
  3. 15
      spec/models/form/subsection_spec.rb

4
app/models/form/subsection.rb

@ -32,7 +32,7 @@ class Form::Subsection
qs = applicable_questions(case_log) qs = applicable_questions(case_log)
return :not_started if qs.all? { |question| case_log[question.id].blank? || question.read_only? } 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 :in_progress
end end
@ -58,7 +58,7 @@ class Form::Subsection
end end
def answered_questions(case_log) 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 end
def unanswered_questions(case_log) def unanswered_questions(case_log)

2
spec/fixtures/forms/2021_2022.json vendored

@ -441,7 +441,7 @@
"dependent_question": { "dependent_question": {
"check_answer_label": "Dependent Question", "check_answer_label": "Dependent Question",
"header": "Question to test page routing", "header": "Question to test page routing",
"type": "checkbox", "type": "radio",
"answer_options": { "answer_options": {
"0": "Option A", "0": "Option A",
"1": "Option B" "1": "Option B"

15
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) expect(subject.status(case_log)).to eq(:in_progress)
end 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 it "has status helpers" do
expect(subject.is_incomplete?(case_log)).to be(true) expect(subject.is_incomplete?(case_log)).to be(true)
expect(subject.is_started?(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 end
it "has question helpers for the number of answered questions" do it "has question helpers for the number of answered questions" do
subsection_definition = section_definition["subsections"]["household_needs"] subsection_definition = section_definition["subsections"]["household_needs"]
subject = Form::Subsection.new("household_needs", subsection_definition, section) subject = Form::Subsection.new("household_needs", subsection_definition, section)
expected_questions = %w[armedforces illness accessibility_requirements la condition_effects] expected_questions = %w[armedforces illness accessibility_requirements la condition_effects]
case_log.armedforces = "No" case_log.armedforces = "No"
case_log.illness = "No" case_log.illness = "No"

Loading…
Cancel
Save