diff --git a/app/models/case_log.rb b/app/models/case_log.rb index 09cac5d5a..47f957696 100644 --- a/app/models/case_log.rb +++ b/app/models/case_log.rb @@ -1,6 +1,7 @@ class CaseLogValidator < ActiveModel::Validator # Validations methods need to be called 'validate_' to run on model save # or form page submission + include Validations::SetupValidations include Validations::HouseholdValidations include Validations::PropertyValidations include Validations::FinancialValidations diff --git a/app/models/validations/setup_validations.rb b/app/models/validations/setup_validations.rb new file mode 100644 index 000000000..927a32de9 --- /dev/null +++ b/app/models/validations/setup_validations.rb @@ -0,0 +1,13 @@ +module Validations::SetupValidations + def validate_intermediate_rent_product_name(record) + if intermediate_product_rent_type?(record) && record.intermediate_rent_product_name.blank? + record.errors.add :intermediate_rent_product_name, I18n.t("validations.setup.intermediate_rent_product_name.blank") + end + end + +private + + def intermediate_product_rent_type?(record) + record.rent_type == 5 + end +end diff --git a/config/locales/en.yml b/config/locales/en.yml index 9f5d8056f..9095c67d6 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -47,6 +47,10 @@ en: taken: "Email already exists" invalid: "Enter an email address in the correct format, like name@example.com" blank: "Enter an email address" + + setup: + intermediate_rent_product_name: + blank: "Enter name of other intermediate rent product" property: mrcdate: diff --git a/spec/models/case_log_spec.rb b/spec/models/case_log_spec.rb index be636dfa8..a441b5ae7 100644 --- a/spec/models/case_log_spec.rb +++ b/spec/models/case_log_spec.rb @@ -56,6 +56,10 @@ RSpec.describe CaseLog do expect(validator).to receive(:validate_startdate) end + it "validates intermediate rent product name" do + expect(validator).to receive(:validate_intermediate_rent_product_name) + end + it "validates other household member details" do expect(validator).to receive(:validate_household_number_of_other_members) end diff --git a/spec/models/validations/setup_validations_spec.rb b/spec/models/validations/setup_validations_spec.rb new file mode 100644 index 000000000..0c333d6d7 --- /dev/null +++ b/spec/models/validations/setup_validations_spec.rb @@ -0,0 +1,33 @@ +require "rails_helper" + +RSpec.describe Validations::SetupValidations do + subject(:setup_validator) { setup_validator_class.new } + + let(:setup_validator_class) { Class.new { include Validations::SetupValidations } } + let(:record) { FactoryBot.create(:case_log) } + + describe "#validate_intermediate_rent_product_name" do + it "adds an error when the intermediate rent product name is not provided but the rent type was given as other intermediate rent product" do + record.rent_type = 5 + record.intermediate_rent_product_name = nil + setup_validator.validate_intermediate_rent_product_name(record) + expect(record.errors["intermediate_rent_product_name"]) + .to include(match I18n.t("validations.setup.intermediate_rent_product_name.blank")) + end + + it "adds an error when the intermediate rent product name is blank but the rent type was given as other intermediate rent product" do + record.rent_type = 5 + record.intermediate_rent_product_name = "" + setup_validator.validate_intermediate_rent_product_name(record) + expect(record.errors["intermediate_rent_product_name"]) + .to include(match I18n.t("validations.setup.intermediate_rent_product_name.blank")) + end + + it "Does not add an error when the intermediate rent product name is provided and the rent type was given as other intermediate rent product" do + record.rent_type = 5 + record.intermediate_rent_product_name = "Example" + setup_validator.validate_intermediate_rent_product_name(record) + expect(record.errors["intermediate_rent_product_name"]).to be_empty + end + end +end