diff --git a/spec/models/validations/tenancy_validations_spec.rb b/spec/models/validations/tenancy_validations_spec.rb index 09b3c5314..9e80fc2d1 100644 --- a/spec/models/validations/tenancy_validations_spec.rb +++ b/spec/models/validations/tenancy_validations_spec.rb @@ -4,7 +4,7 @@ RSpec.describe Validations::TenancyValidations do subject(:tenancy_validator) { validator_class.new } let(:validator_class) { Class.new { include Validations::TenancyValidations } } - let(:record) { FactoryBot.create(:case_log) } + let(:record) { FactoryBot.create(:case_log, startdate: Time.zone.local(2021, 5, 1)) } describe "fixed term tenancy validations" do context "when fixed term tenancy" do @@ -62,44 +62,134 @@ RSpec.describe Validations::TenancyValidations do end end - context "when type of tenancy is secure" do - let(:expected_error) { I18n.t("validations.tenancy.length.secure") } + context "when the collection start year is before 2022" do + context "when type of tenancy is secure" do + let(:expected_error) { I18n.t("validations.tenancy.length.secure") } - before { record.tenancy = 1 } + before { record.tenancy = 1 } - context "when tenancy length is greater than 1" do - it "adds an error" do - record.tenancylength = 1 - tenancy_validator.validate_fixed_term_tenancy(record) - expect(record.errors["tenancylength"]).to include(match(expected_error)) - expect(record.errors["tenancy"]).to include(match(expected_error)) + context "when tenancy length is greater than 1" do + it "adds an error" do + record.tenancylength = 1 + tenancy_validator.validate_fixed_term_tenancy(record) + expect(record.errors["tenancylength"]).to include(match(expected_error)) + expect(record.errors["tenancy"]).to include(match(expected_error)) + end end - end - context "when tenancy length is less than 100" do - it "adds an error" do - record.tenancylength = 100 - tenancy_validator.validate_fixed_term_tenancy(record) - expect(record.errors["tenancylength"]).to include(match(expected_error)) - expect(record.errors["tenancy"]).to include(match(expected_error)) + context "when tenancy length is less than 100" do + it "adds an error" do + record.tenancylength = 100 + tenancy_validator.validate_fixed_term_tenancy(record) + 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["tenancylength"]).to be_empty + expect(record.errors["tenancy"]).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["tenancylength"]).to be_empty + expect(record.errors["tenancy"]).to be_empty + end end 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["tenancylength"]).to be_empty - expect(record.errors["tenancy"]).to be_empty + context "when the collection start year is 2022 or later" do + let(:record) { FactoryBot.create(:case_log, startdate: Time.zone.local(2022, 5, 1)) } + + context "when type of tenancy is Secure - fixed term" do + let(:expected_error) { I18n.t("validations.tenancy.length.secure") } + + before { record.tenancy = 6 } + + context "when tenancy length is greater than 1" do + it "adds an error" do + record.tenancylength = 1 + tenancy_validator.validate_fixed_term_tenancy(record) + 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 less than 100" do + it "adds an error" do + record.tenancylength = 100 + tenancy_validator.validate_fixed_term_tenancy(record) + 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["tenancylength"]).to be_empty + expect(record.errors["tenancy"]).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["tenancylength"]).to be_empty + expect(record.errors["tenancy"]).to be_empty + end 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["tenancylength"]).to be_empty - expect(record.errors["tenancy"]).to be_empty + context "when type of tenancy is Secure - lifetime" do + let(:expected_error) { I18n.t("validations.tenancy.length.secure") } + + before { record.tenancy = 7 } + + context "when tenancy length is greater than 1" do + it "adds an error" do + record.tenancylength = 1 + tenancy_validator.validate_fixed_term_tenancy(record) + 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 less than 100" do + it "adds an error" do + record.tenancylength = 100 + tenancy_validator.validate_fixed_term_tenancy(record) + 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["tenancylength"]).to be_empty + expect(record.errors["tenancy"]).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["tenancylength"]).to be_empty + expect(record.errors["tenancy"]).to be_empty + end end end end diff --git a/spec/requests/case_logs_controller_spec.rb b/spec/requests/case_logs_controller_spec.rb index 9a9dd60e1..10dac2f82 100644 --- a/spec/requests/case_logs_controller_spec.rb +++ b/spec/requests/case_logs_controller_spec.rb @@ -232,6 +232,7 @@ RSpec.describe CaseLogsController, type: :request do owning_organisation: organisation, mrcdate: Time.zone.local(2022, 2, 1), startdate: Time.zone.local(2022, 12, 1), + tenancy: 6, managing_organisation: organisation) end @@ -260,6 +261,7 @@ RSpec.describe CaseLogsController, type: :request do owning_organisation: organisation, mrcdate: Time.zone.local(2022, 2, 1), startdate: Time.zone.local(2022, 12, 1), + tenancy: 6, managing_organisation: organisation) end let!(:case_log_2022_in_progress) do @@ -267,6 +269,7 @@ RSpec.describe CaseLogsController, type: :request do owning_organisation: organisation, mrcdate: Time.zone.local(2022, 2, 1), startdate: Time.zone.local(2022, 12, 1), + tenancy: 6, managing_organisation: organisation) end