From e150048820130485a66a1ec9a604d3aec67df752 Mon Sep 17 00:00:00 2001 From: baarkerlounger Date: Wed, 22 Jun 2022 13:54:49 +0100 Subject: [PATCH] Clean up --- app/models/form.rb | 12 +++++------ app/models/form/page.rb | 4 ---- app/models/form/setup/subsections/setup.rb | 23 ++++++---------------- app/models/form/subsection.rb | 2 +- spec/models/form_spec.rb | 2 +- 5 files changed, 14 insertions(+), 29 deletions(-) diff --git a/app/models/form.rb b/app/models/form.rb index 29c62e40d..6176f8850 100644 --- a/app/models/form.rb +++ b/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 diff --git a/app/models/form/page.rb b/app/models/form/page.rb index a109252f4..601063557 100644 --- a/app/models/form/page.rb +++ b/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 diff --git a/app/models/form/setup/subsections/setup.rb b/app/models/form/setup/subsections/setup.rb index 92b4643b8..04974c44d 100644 --- a/app/models/form/setup/subsections/setup.rb +++ b/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 diff --git a/app/models/form/subsection.rb b/app/models/form/subsection.rb index b6d361fb9..7c6d86698 100644 --- a/app/models/form/subsection.rb +++ b/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 diff --git a/spec/models/form_spec.rb b/spec/models/form_spec.rb index 43a371c58..5b1cb1924 100644 --- a/spec/models/form_spec.rb +++ b/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