From 07d7caf0585d17a949430ac436ed2b1e710d5933 Mon Sep 17 00:00:00 2001 From: Kat Date: Tue, 15 Mar 2022 14:16:26 +0000 Subject: [PATCH] add supported housing scharge validation --- .../validations/financial_validations.rb | 9 +- config/locales/en.yml | 3 +- .../validations/financial_validations_spec.rb | 170 ++++++++++++------ 3 files changed, 125 insertions(+), 57 deletions(-) diff --git a/app/models/validations/financial_validations.rb b/app/models/validations/financial_validations.rb index 223a48880..30c03a420 100644 --- a/app/models/validations/financial_validations.rb +++ b/app/models/validations/financial_validations.rb @@ -65,9 +65,12 @@ module Validations::FinancialValidations record.errors.add :tshortfall, I18n.t("validations.financial.tshortfall.more_than_rent") end - if record.scharge.present? && record.this_landlord? && record.weekly_value(record.scharge).present? && !record.weekly_value(record.scharge).between?(0, 55) - record.errors.add :scharge, I18n.t("validations.financial.rent.scharge.this_landlord.general_needs") - record.errors.add :landlord, I18n.t("validations.organisation.landlord.invalid_scharge") + if record.scharge.present? && record.this_landlord? && record.weekly_value(record.scharge).present? + if !record.weekly_value(record.scharge).between?(0, 55) && record.is_general_needs? + record.errors.add :scharge, I18n.t("validations.financial.rent.scharge.this_landlord.general_needs") + elsif !record.weekly_value(record.scharge).between?(0, 280) && record.is_supported_housing? + record.errors.add :scharge, I18n.t("validations.financial.rent.scharge.this_landlord.supported_housing") + end end end end diff --git a/config/locales/en.yml b/config/locales/en.yml index c384219a9..272280bcf 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -94,7 +94,8 @@ en: less_than_double_shortfall: "Answer must be more than double the shortfall in basic rent" scharge: this_landlord: - general_needs: "Service charge must be between 0 and 55 per week if the landlord is this landlord" + general_needs: "Service charge must be between 0 and 55 per week if the landlord is this landlord and it is a general needs letting" + supported_housing: "Service charge must be between 0 and 280 per week if the landlord is this landlord and it is a suported housing letting" household: reasonpref: diff --git a/spec/models/validations/financial_validations_spec.rb b/spec/models/validations/financial_validations_spec.rb index ac4ef992c..9a758ac27 100644 --- a/spec/models/validations/financial_validations_spec.rb +++ b/spec/models/validations/financial_validations_spec.rb @@ -201,65 +201,129 @@ RSpec.describe Validations::FinancialValidations do end end - context "when the landlord is this landlord and needstype is general needs" do - it "does not allow the scharge to be outside of 0 and 55 range per week when period is weekly" do - record.needstype = 1 - record.landlord = 1 - record.period = 1 - record.scharge = 56 - financial_validator.validate_rent_amount(record) - expect(record.errors["scharge"]) - .to include(match I18n.t("validations.financial.rent.scharge.this_landlord.general_needs")) - end + context "when the landlord is this landlord" do + context "when needstype is general needs" do + it "does not allow the scharge to be outside of 0 and 55 range per week when period is weekly" do + record.needstype = 1 + record.landlord = 1 + record.period = 1 + record.scharge = 56 + financial_validator.validate_rent_amount(record) + expect(record.errors["scharge"]) + .to include(match I18n.t("validations.financial.rent.scharge.this_landlord.general_needs")) + end - it "does allow the scharge to be between of 0 and 55 per week when period is weekly" do - record.needstype = 1 - record.landlord = 1 - record.period = 1 - record.scharge = 54 - financial_validator.validate_rent_amount(record) - expect(record.errors["scharge"]) - .to be_empty - end + it "does allow the scharge to be between of 0 and 55 per week when period is weekly" do + record.needstype = 1 + record.landlord = 1 + record.period = 1 + record.scharge = 54 + financial_validator.validate_rent_amount(record) + expect(record.errors["scharge"]) + .to be_empty + end - it "does not allow the scharge to be outside of 0 and 55 range per week when period is monthly" do - record.needstype = 1 - record.landlord = 1 - record.period = 4 - record.scharge = 300 - financial_validator.validate_rent_amount(record) - expect(record.errors["scharge"]) - .to include(match I18n.t("validations.financial.rent.scharge.this_landlord.general_needs")) - end + it "does not allow the scharge to be outside of 0 and 55 range per week when period is monthly" do + record.needstype = 1 + record.landlord = 1 + record.period = 4 + record.scharge = 300 + financial_validator.validate_rent_amount(record) + expect(record.errors["scharge"]) + .to include(match I18n.t("validations.financial.rent.scharge.this_landlord.general_needs")) + end - it "does allow the scharge to be between of 0 and 55 per week when period is monthly" do - record.needstype = 1 - record.landlord = 1 - record.period = 4 - record.scharge = 220 - financial_validator.validate_rent_amount(record) - expect(record.errors["scharge"]) - .to be_empty - end + it "does allow the scharge to be between of 0 and 55 per week when period is monthly" do + record.needstype = 1 + record.landlord = 1 + record.period = 4 + record.scharge = 220 + financial_validator.validate_rent_amount(record) + expect(record.errors["scharge"]) + .to be_empty + end - it "does not allow the scharge to be outside of 0 and 55 range per week when period is every 2 weeks" do - record.needstype = 1 - record.landlord = 1 - record.period = 2 - record.scharge = 111 - financial_validator.validate_rent_amount(record) - expect(record.errors["scharge"]) - .to include(match I18n.t("validations.financial.rent.scharge.this_landlord.general_needs")) + it "does not allow the scharge to be outside of 0 and 55 range per week when period is every 2 weeks" do + record.needstype = 1 + record.landlord = 1 + record.period = 2 + record.scharge = 111 + financial_validator.validate_rent_amount(record) + expect(record.errors["scharge"]) + .to include(match I18n.t("validations.financial.rent.scharge.this_landlord.general_needs")) + end + + it "does allow the scharge to be between of 0 and 55 per week when period is every 2 weeks" do + record.needstype = 1 + record.landlord = 1 + record.period = 2 + record.scharge = 109 + financial_validator.validate_rent_amount(record) + expect(record.errors["scharge"]) + .to be_empty + end end - it "does allow the scharge to be between of 0 and 55 per week when period is every 2 weeks" do - record.needstype = 1 - record.landlord = 1 - record.period = 2 - record.scharge = 109 - financial_validator.validate_rent_amount(record) - expect(record.errors["scharge"]) - .to be_empty + context "when needstype is supported housing" do + it "does not allow the scharge to be outside of 0 and 280 range per week when period is weekly" do + record.needstype = 0 + record.landlord = 1 + record.period = 1 + record.scharge = 281 + financial_validator.validate_rent_amount(record) + expect(record.errors["scharge"]) + .to include(match I18n.t("validations.financial.rent.scharge.this_landlord.supported_housing")) + end + + it "does allow the scharge to be between of 0 and 280 per week when period is weekly" do + record.needstype = 0 + record.landlord = 1 + record.period = 1 + record.scharge = 280 + financial_validator.validate_rent_amount(record) + expect(record.errors["scharge"]) + .to be_empty + end + + it "does not allow the scharge to be outside of 0 and 280 range per week when period is monthly" do + record.needstype = 0 + record.landlord = 1 + record.period = 4 + record.scharge = 1225 + financial_validator.validate_rent_amount(record) + expect(record.errors["scharge"]) + .to include(match I18n.t("validations.financial.rent.scharge.this_landlord.supported_housing")) + end + + it "does allow the scharge to be between of 0 and 280 per week when period is monthly" do + record.needstype = 0 + record.landlord = 1 + record.period = 4 + record.scharge = 1200 + financial_validator.validate_rent_amount(record) + expect(record.errors["scharge"]) + .to be_empty + end + + it "does not allow the scharge to be outside of 0 and 280 range per week when period is every 2 weeks" do + record.needstype = 0 + record.landlord = 1 + record.period = 2 + record.scharge = 561 + financial_validator.validate_rent_amount(record) + expect(record.errors["scharge"]) + .to include(match I18n.t("validations.financial.rent.scharge.this_landlord.supported_housing")) + end + + it "does allow the scharge to be between of 0 and 280 per week when period is every 2 weeks" do + record.needstype = 0 + record.landlord = 1 + record.period = 2 + record.scharge = 559 + financial_validator.validate_rent_amount(record) + expect(record.errors["scharge"]) + .to be_empty + end end end end