Browse Source

Clean up

pull/686/head
baarkerlounger 3 years ago
parent
commit
e150048820
  1. 12
      app/models/form.rb
  2. 4
      app/models/form/page.rb
  3. 23
      app/models/form/setup/subsections/setup.rb
  4. 2
      app/models/form/subsection.rb
  5. 2
      spec/models/form_spec.rb

12
app/models/form.rb

@ -29,9 +29,9 @@ class Form
pages.find { |p| p.id == id.to_s.underscore }
end
def get_question(id, case_log)
def get_question(id, case_log, current_user = nil)
all_questions = questions.select { |q| q.id == id.to_s.underscore }
routed_question = all_questions.find { |q| q.page.routed_to?(case_log, nil) } if case_log
routed_question = all_questions.find { |q| q.page.routed_to?(case_log, current_user) } if case_log
routed_question || all_questions[0]
end
@ -118,8 +118,8 @@ class Form
}.flatten
end
def invalidated_pages(case_log)
pages.select { |p| p.invalidated?(case_log, nil) }
def invalidated_pages(case_log, current_user = nil)
pages.reject { |p| p.routed_to?(case_log, current_user) }
end
def invalidated_questions(case_log)
@ -129,10 +129,10 @@ class Form
def invalidated_page_questions(case_log, current_user = nil)
# we're already treating address fields as a special case and reset their values upon saving a case_log
address_questions = %w[postcode_known la ppcodenk previous_la_known prevloc postcode_full ppostcode_full]
questions.select { |q| q.page.invalidated?(case_log, current_user) && !q.derived? && address_questions.exclude?(q.id) } || []
questions.reject { |q| q.page.routed_to?(case_log, current_user) || q.derived? || address_questions.include?(q.id) } || []
end
def enabled_page_questions(case_log, _current_user = nil)
def enabled_page_questions(case_log)
questions - invalidated_page_questions(case_log)
end

4
app/models/form/page.rb

@ -30,10 +30,6 @@ class Form::Page
end
end
def invalidated?(case_log, current_user)
!routed_to?(case_log, current_user)
end
private
def conditional_question_ids

23
app/models/form/setup/subsections/setup.rb

@ -20,24 +20,13 @@ class Form::Subsections::Setup < ::Form::Subsection
]
end
def status(case_log)
unless enabled?(case_log)
return :cannot_start_yet
end
qs = applicable_questions(case_log)
qs_optional_removed = qs.reject { |q| case_log.optional_fields.include?(q.id) }
return :not_started if qs.all? { |question| case_log[question.id].blank? || question.read_only? || question.derived? }
return :completed if qs_optional_removed.all? { |question| question.completed?(case_log) }
:in_progress
def applicable_questions(case_log)
questions.select { |q| support_only_questions.include?(q.id) } + super
end
def applicable_questions(case_log)
questions.select do |q|
(q.displayed_to_user?(case_log) && !q.derived?) ||
q.has_inferred_check_answers_value?(case_log) ||
%w[owning_organisation_id created_by_id].include?(q.id)
end
private
def support_only_questions
%w[owning_organisation_id created_by_id].freeze
end
end

2
app/models/form/subsection.rb

@ -34,7 +34,7 @@ class Form::Subsection
qs = applicable_questions(case_log)
qs_optional_removed = qs.reject { |q| case_log.optional_fields.include?(q.id) }
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? || question.derived? }
return :completed if qs_optional_removed.all? { |question| question.completed?(case_log) }
:in_progress

2
spec/models/form_spec.rb

@ -198,7 +198,7 @@ RSpec.describe Form, type: :model do
let(:case_log) { FactoryBot.build(:case_log, :in_progress, startdate: Time.utc(2023, 2, 2, 10, 36, 49)) }
it "does not count it's questions as invalidated" do
expect(form.enabled_page_questions(case_log, user).map(&:id).uniq).to include("tshortfall_known")
expect(form.enabled_page_questions(case_log).map(&:id).uniq).to include("tshortfall_known")
end
it "does not route to the page" do

Loading…
Cancel
Save