From 926a4cc0683050428187a9abeaea6fe543006c95 Mon Sep 17 00:00:00 2001 From: Kat Date: Mon, 19 Feb 2024 12:28:45 +0000 Subject: [PATCH] Validate periodic tenancy length --- app/models/validations/tenancy_validations.rb | 9 +++- .../validations/tenancy_validations_spec.rb | 47 +++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/app/models/validations/tenancy_validations.rb b/app/models/validations/tenancy_validations.rb index 012317f1e..26cccdd81 100644 --- a/app/models/validations/tenancy_validations.rb +++ b/app/models/validations/tenancy_validations.rb @@ -21,6 +21,13 @@ module Validations::TenancyValidations min_tenancy_length: min_tenancy_length(record), ), }, + { + condition: (record.is_periodic_tenancy? && !is_in_range) && is_present, + error: I18n.t( + "validations.tenancy.length.secure", + min_tenancy_length: min_tenancy_length(record), + ), + }, ] rent_type_independent_conditions = [ { @@ -54,6 +61,6 @@ module Validations::TenancyValidations end def min_tenancy_length(record) - record.is_supported_housing? || record.renttype == 3 ? 1 : 2 + record.is_supported_housing? || record.renttype == 3 || record.is_periodic_tenancy? ? 1 : 2 end end diff --git a/spec/models/validations/tenancy_validations_spec.rb b/spec/models/validations/tenancy_validations_spec.rb index ca0e84334..3d39e1e39 100644 --- a/spec/models/validations/tenancy_validations_spec.rb +++ b/spec/models/validations/tenancy_validations_spec.rb @@ -232,6 +232,53 @@ RSpec.describe Validations::TenancyValidations do end end end + + context "when type of tenancy is periodic" do + let(:expected_error) do + I18n.t( + "validations.tenancy.length.secure", + min_tenancy_length: 1, + ) + end + + before { record.tenancy = 8 } + + context "when tenancy length is less than 1" do + it "adds an error" do + record.tenancylength = 0 + tenancy_validator.validate_fixed_term_tenancy(record) + expect(record.errors["needstype"]).to include(match(expected_error)) + expect(record.errors["tenancylength"]).to include(match(expected_error)) + expect(record.errors["tenancy"]).to include(match(expected_error)) + end + end + + context "when tenancy length is greater than 99" do + it "adds an error" do + record.tenancylength = 100 + tenancy_validator.validate_fixed_term_tenancy(record) + expect(record.errors["needstype"]).to include(match(expected_error)) + expect(record.errors["tenancylength"]).to include(match(expected_error)) + expect(record.errors["tenancy"]).to include(match(expected_error)) + end + end + + context "when tenancy length is between 2-99" do + it "does not add an error" do + record.tenancylength = 3 + tenancy_validator.validate_fixed_term_tenancy(record) + expect(record.errors).to be_empty + end + end + + context "when tenancy length has not been answered" do + it "does not add an error" do + record.tenancylength = nil + tenancy_validator.validate_fixed_term_tenancy(record) + expect(record.errors).to be_empty + end + end + end end end end