@ -1,6 +1,8 @@
require " rails_helper "
require " rails_helper "
RSpec . describe Validations :: DateValidations do
RSpec . describe Validations :: DateValidations do
include CollectionTimeHelper
subject ( :date_validator ) { validator_class . new }
subject ( :date_validator ) { validator_class . new }
let ( :validator_class ) { Class . new { include Validations :: DateValidations } }
let ( :validator_class ) { Class . new { include Validations :: DateValidations } }
@ -54,44 +56,22 @@ RSpec.describe Validations::DateValidations do
expect ( record . errors [ " mrcdate " ] ) . to be_empty
expect ( record . errors [ " mrcdate " ] ) . to be_empty
end
end
context " with 2024 logs or earlier " do
it " cannot be more than 20 years before the tenancy start date " do
it " cannot be more than 10 years before the tenancy start date " do
record . startdate = current_collection_start_date
record . startdate = Time . zone . local ( 2024 , 4 , 1 )
record . mrcdate = current_collection_start_date - 20 . years - 1 . day
record . mrcdate = Time . zone . local ( 2014 , 1 , 31 )
date_validator . validate_property_major_repairs ( record )
date_validator . validate_property_major_repairs ( record )
expect ( record . errors [ " mrcdate " ] )
expect ( record . errors [ " mrcdate " ] )
. to include ( match I18n . t ( " validations.lettings.date.mrcdate.twenty_years_before_tenancy_start " ) )
. to include ( match I18n . t ( " validations.lettings.date.mrcdate.ten_years_before_tenancy_start " ) )
expect ( record . errors [ " startdate " ] )
expect ( record . errors [ " startdate " ] )
. to include ( match I18n . t ( " validations.lettings.date.startdate.twenty_years_after_mrc_date " ) )
. to include ( match I18n . t ( " validations.lettings.date.startdate.ten_years_after_mrc_date " ) )
end
it " must be within 10 years of the tenancy start date " do
record . startdate = Time . zone . local ( 2024 , 2 , 1 )
record . mrcdate = Time . zone . local ( 2014 , 2 , 1 )
date_validator . validate_property_major_repairs ( record )
expect ( record . errors [ " mrcdate " ] ) . to be_empty
expect ( record . errors [ " startdate " ] ) . to be_empty
end
end
end
context " with 2025 logs or later " do
it " can be within 20 years of the tenancy start date " do
it " cannot be more than 20 years before the tenancy start date " do
record . startdate = current_collection_start_date
record . startdate = Time . zone . local ( 2026 , 2 , 1 )
record . mrcdate = current_collection_start_date - 20 . years
record . mrcdate = Time . zone . local ( 2006 , 1 , 31 )
date_validator . validate_property_major_repairs ( record )
date_validator . validate_property_major_repairs ( record )
expect ( record . errors [ " mrcdate " ] ) . to be_empty
expect ( record . errors [ " mrcdate " ] )
expect ( record . errors [ " startdate " ] ) . to be_empty
. to include ( match I18n . t ( " validations.lettings.date.mrcdate.twenty_years_before_tenancy_start " ) )
expect ( record . errors [ " startdate " ] )
. to include ( match I18n . t ( " validations.lettings.date.startdate.twenty_years_after_mrc_date " ) )
end
it " must be within 20 years of the tenancy start date " do
record . startdate = Time . zone . local ( 2026 , 2 , 1 )
record . mrcdate = Time . zone . local ( 2006 , 2 , 1 )
date_validator . validate_property_major_repairs ( record )
expect ( record . errors [ " mrcdate " ] ) . to be_empty
expect ( record . errors [ " startdate " ] ) . to be_empty
end
end
end
context " when reason for vacancy is first let of property " do
context " when reason for vacancy is first let of property " do
@ -148,45 +128,23 @@ RSpec.describe Validations::DateValidations do
expect ( record . errors [ " voiddate " ] ) . to be_empty
expect ( record . errors [ " voiddate " ] ) . to be_empty
end
end
context " with 2024 logs or earlier " do
it " cannot be more than 20 years before the tenancy start date " do
it " cannot be more than 10 years before the tenancy start date " do
record . startdate = current_collection_start_date
record . startdate = Time . zone . local ( 2024 , 4 , 1 )
record . voiddate = current_collection_start_date - 20 . years - 1 . day
record . voiddate = Time . zone . local ( 2014 , 1 , 31 )
date_validator . validate_property_void_date ( record )
date_validator . validate_property_void_date ( record )
date_validator . validate_startdate ( record )
expect ( record . errors [ " voiddate " ] )
expect ( record . errors [ " voiddate " ] )
. to include ( match I18n . t ( " validations.lettings.date.void_date.ten_years_before_tenancy_start " ) )
. to include ( match I18n . t ( " validations.lettings.date.void_date.twenty_years_before_tenancy_start " ) )
expect ( record . errors [ " startdate " ] )
expect ( record . errors [ " startdate " ] )
. to include ( match I18n . t ( " validations.lettings.date.startdate.ten_years_after_void_date " ) )
. to include ( match I18n . t ( " validations.lettings.date.startdate.twenty_years_after_void_date " ) )
end
it " must be within 10 years of the tenancy start date " do
record . startdate = Time . zone . local ( 2024 , 2 , 1 )
record . voiddate = Time . zone . local ( 2014 , 2 , 1 )
date_validator . validate_property_void_date ( record )
expect ( record . errors [ " voiddate " ] ) . to be_empty
expect ( record . errors [ " startdate " ] ) . to be_empty
end
end
end
context " with 2025 logs or later " do
it " can be within 20 years of the tenancy start date " do
it " cannot be more than 20 years before the tenancy start date " do
record . startdate = current_collection_start_date
record . startdate = Time . zone . local ( 2026 , 2 , 1 )
record . voiddate = current_collection_start_date - 20 . years
record . voiddate = Time . zone . local ( 2006 , 1 , 31 )
date_validator . validate_property_void_date ( record )
date_validator . validate_property_void_date ( record )
expect ( record . errors [ " voiddate " ] ) . to be_empty
date_validator . validate_startdate ( record )
expect ( record . errors [ " startdate " ] ) . to be_empty
expect ( record . errors [ " voiddate " ] )
. to include ( match I18n . t ( " validations.lettings.date.void_date.twenty_years_before_tenancy_start " ) )
expect ( record . errors [ " startdate " ] )
. to include ( match I18n . t ( " validations.lettings.date.startdate.twenty_years_after_void_date " ) )
end
it " must be within 20 years of the tenancy start date " do
record . startdate = Time . zone . local ( 2026 , 2 , 1 )
record . voiddate = Time . zone . local ( 2006 , 2 , 1 )
date_validator . validate_property_void_date ( record )
expect ( record . errors [ " voiddate " ] ) . to be_empty
expect ( record . errors [ " startdate " ] ) . to be_empty
end
end
end
context " when major repairs have been carried out " do
context " when major repairs have been carried out " do