From 000bda9abdfc578f604071f8169eebc580acf904 Mon Sep 17 00:00:00 2001 From: baarkerlounger Date: Thu, 30 Jun 2022 13:33:57 +0100 Subject: [PATCH] Fix tests --- app/controllers/form_controller.rb | 5 +++-- app/models/case_log.rb | 1 - app/models/form/question.rb | 8 +++++++- app/models/validations/submission_validations.rb | 10 ---------- spec/features/form/form_navigation_spec.rb | 4 ++-- spec/features/form/page_routing_spec.rb | 1 + spec/features/form/progressive_total_field_spec.rb | 1 + 7 files changed, 14 insertions(+), 16 deletions(-) delete mode 100644 app/models/validations/submission_validations.rb diff --git a/app/controllers/form_controller.rb b/app/controllers/form_controller.rb index 101cfa368..43c3cb20f 100644 --- a/app/controllers/form_controller.rb +++ b/app/controllers/form_controller.rb @@ -15,7 +15,7 @@ class FormController < ApplicationController else redirect_path = "case_log_#{@page.id}_path" mandatory_questions_with_no_response.map do |question| - @case_log.errors.add question.id.to_sym, I18n.t("validations.not_answered", question: question.display_label.downcase) + @case_log.errors.add question.id.to_sym, question.unanswered_error_message end session[:errors] = @case_log.errors.to_json Rails.logger.info "User triggered validation(s) on: #{@case_log.errors.map(&:attribute).join(', ')}" @@ -128,12 +128,13 @@ private def mandatory_questions_with_no_response(responses_for_page) @page.questions.select do |question| - question_is_required?(question) && question_missing_response?(responses_for_page, question) + question_is_required?(question) && question_missing_response?(responses_for_page, question) end end def question_is_required?(question) CaseLog::OPTIONAL_FIELDS.exclude?(question.id) && + @page.questions.map(&:result_field).exclude?(question.id) && @page.subsection.applicable_questions(@case_log).map(&:id).include?(question.id) end diff --git a/app/models/case_log.rb b/app/models/case_log.rb index 038df317f..506263126 100644 --- a/app/models/case_log.rb +++ b/app/models/case_log.rb @@ -8,7 +8,6 @@ class CaseLogValidator < ActiveModel::Validator include Validations::TenancyValidations include Validations::DateValidations include Validations::LocalAuthorityValidations - include Validations::SubmissionValidations def validate(record) validation_methods = public_methods.select { |method| method.starts_with?("validate_") } diff --git a/app/models/form/question.rb b/app/models/form/question.rb index 3d2f7a8a3..c17d7438e 100644 --- a/app/models/form/question.rb +++ b/app/models/form/question.rb @@ -173,10 +173,16 @@ class Form::Question type == "radio" && RADIO_REFUSED_VALUE[id.to_sym]&.include?(value) end - def display_label + def display_label check_answer_label || header || id.humanize end + def unanswered_error_message + return I18n.t("validations.declaration.missing") if id == "declaration" + + I18n.t("validations.not_answered", question: display_label.downcase) + end + private def selected_answer_option_is_derived?(case_log) diff --git a/app/models/validations/submission_validations.rb b/app/models/validations/submission_validations.rb deleted file mode 100644 index c44799892..000000000 --- a/app/models/validations/submission_validations.rb +++ /dev/null @@ -1,10 +0,0 @@ -module Validations::SubmissionValidations - # Validations methods need to be called 'validate_' to run on model save - # or 'validate_' to run on submit as well - - def validate_declaration(record) - if record.declaration&.zero? - record.errors.add :declaration, I18n.t("validations.declaration.missing") - end - end -end diff --git a/spec/features/form/form_navigation_spec.rb b/spec/features/form/form_navigation_spec.rb index b572e8783..7e4fc1589 100644 --- a/spec/features/form/form_navigation_spec.rb +++ b/spec/features/form/form_navigation_spec.rb @@ -137,7 +137,7 @@ RSpec.describe "Form Navigation" do expect(page).to have_title("Error") end - context "when the page has a main and conditional question" do + context "when the page has a main and conditional question" do context "when the conditional question is required but not answered" do xit "shows a validation error for the conditional question", js: true do visit("/logs/#{id}/armed-forces") @@ -147,7 +147,7 @@ RSpec.describe "Form Navigation" do expect(page).to have_selector("#case-log-leftreg-error") expect(page).to have_title("Error") end - end + end end end diff --git a/spec/features/form/page_routing_spec.rb b/spec/features/form/page_routing_spec.rb index 83a1078ff..644bbb608 100644 --- a/spec/features/form/page_routing_spec.rb +++ b/spec/features/form/page_routing_spec.rb @@ -43,6 +43,7 @@ RSpec.describe "Form Page Routing" do choose("case-log-preg-occ-2-field", allow_label_click: true) click_button("Save and continue") expect(page).to have_current_path("/logs/#{id}/conditional-question-no-page") + choose("case-log-cbl-0-field", allow_label_click: true) click_button("Save and continue") expect(page).to have_current_path("/logs/#{id}/conditional-question/check-answers") end diff --git a/spec/features/form/progressive_total_field_spec.rb b/spec/features/form/progressive_total_field_spec.rb index 2e9b0cdf9..1a42fcc1f 100644 --- a/spec/features/form/progressive_total_field_spec.rb +++ b/spec/features/form/progressive_total_field_spec.rb @@ -33,6 +33,7 @@ RSpec.describe "Accessible Automcomplete" do it "total displays despite error message", js: true do visit("/logs/#{case_log.id}/rent") + choose("case-log-period-1-field", allow_label_click: true) fill_in("case-log-brent-field", with: 500) fill_in("case-log-scharge-field", with: 50) fill_in("case-log-pscharge-field", with: 50)