@ -4,8 +4,8 @@ RSpec.describe Validations::SharedValidations do
subject ( :shared_validator ) { validator_class . new }
let ( :validator_class ) { Class . new { include Validations :: SharedValidations } }
let ( :record ) { FactoryBot . create ( :lettings_log ) }
let ( :sales_record ) { FactoryBot . create ( :sales_log , :completed ) }
let ( :lettings_log ) { FactoryBot . create ( :lettings_log ) }
let ( :sales_log ) { FactoryBot . create ( :sales_log , :completed ) }
let ( :fake_2021_2022_form ) { Form . new ( " spec/fixtures/forms/2021_2022.json " ) }
describe " numeric min max validations " do
@ -15,100 +15,100 @@ RSpec.describe Validations::SharedValidations do
context " when validating age " do
it " validates that person 1's age is a number " do
record . age1 = " random "
shared_validator . validate_numeric_min_max ( record )
expect ( record . errors [ " age1 " ] )
lettings_log . age1 = " random "
shared_validator . validate_numeric_min_max ( lettings_log )
expect ( lettings_log . errors [ " age1 " ] )
. to include ( match I18n . t ( " validations.numeric.within_range " , field : " Lead tenant’s age " , min : 16 , max : 120 ) )
end
it " validates that other household member ages are a number " do
record . age2 = " random "
shared_validator . validate_numeric_min_max ( record )
expect ( record . errors [ " age2 " ] )
lettings_log . age2 = " random "
shared_validator . validate_numeric_min_max ( lettings_log )
expect ( lettings_log . errors [ " age2 " ] )
. to include ( match I18n . t ( " validations.numeric.within_range " , field : " Person 2’s age " , min : 1 , max : 120 ) )
end
it " validates that person 1's age is greater than 16 " do
record . age1 = 15
shared_validator . validate_numeric_min_max ( record )
expect ( record . errors [ " age1 " ] )
lettings_log . age1 = 15
shared_validator . validate_numeric_min_max ( lettings_log )
expect ( lettings_log . errors [ " age1 " ] )
. to include ( match I18n . t ( " validations.numeric.within_range " , field : " Lead tenant’s age " , min : 16 , max : 120 ) )
end
it " validates that other household member ages are greater than 1 " do
record . age2 = 0
shared_validator . validate_numeric_min_max ( record )
expect ( record . errors [ " age2 " ] )
lettings_log . age2 = 0
shared_validator . validate_numeric_min_max ( lettings_log )
expect ( lettings_log . errors [ " age2 " ] )
. to include ( match I18n . t ( " validations.numeric.within_range " , field : " Person 2’s age " , min : 1 , max : 120 ) )
end
it " validates that person 1's age is less than 121 " do
record . age1 = 121
shared_validator . validate_numeric_min_max ( record )
expect ( record . errors [ " age1 " ] )
lettings_log . age1 = 121
shared_validator . validate_numeric_min_max ( lettings_log )
expect ( lettings_log . errors [ " age1 " ] )
. to include ( match I18n . t ( " validations.numeric.within_range " , field : " Lead tenant’s age " , min : 16 , max : 120 ) )
end
it " validates that other household member ages are greater than 121 " do
record . age2 = 123
shared_validator . validate_numeric_min_max ( record )
expect ( record . errors [ " age2 " ] )
lettings_log . age2 = 123
shared_validator . validate_numeric_min_max ( lettings_log )
expect ( lettings_log . errors [ " age2 " ] )
. to include ( match I18n . t ( " validations.numeric.within_range " , field : " Person 2’s age " , min : 1 , max : 120 ) )
end
it " validates that person 1's age is between 16 and 120 " do
record . age1 = 63
shared_validator . validate_numeric_min_max ( record )
expect ( record . errors [ " age1 " ] ) . to be_empty
lettings_log . age1 = 63
shared_validator . validate_numeric_min_max ( lettings_log )
expect ( lettings_log . errors [ " age1 " ] ) . to be_empty
end
it " validates that other household member ages are between 1 and 120 " do
record . age6 = 45
shared_validator . validate_numeric_min_max ( record )
expect ( record . errors [ " age6 " ] ) . to be_empty
lettings_log . age6 = 45
shared_validator . validate_numeric_min_max ( lettings_log )
expect ( lettings_log . errors [ " age6 " ] ) . to be_empty
end
context " with sales log " do
it " validates that person 2's age is between 0 and 110 for non joint purchase " do
sales_record . jointpur = 2
sales_record . hholdcount = 1
sales_record . details_known_2 = 1
sales_record . age2 = 130
shared_validator . validate_numeric_min_max ( sales_record )
expect ( sales_record . errors [ " age2 " ] . first ) . to eq ( " Person 2’s age must be between 0 and 110 " )
sales_log . jointpur = 2
sales_log . hholdcount = 1
sales_log . details_known_2 = 1
sales_log . age2 = 130
shared_validator . validate_numeric_min_max ( sales_log )
expect ( sales_log . errors [ " age2 " ] . first ) . to eq ( " Person 2’s age must be between 0 and 110 " )
end
it " validates that buyer 2's age is between 0 and 110 for joint purchase " do
sales_record . jointpur = 1
sales_record . age2 = 130
shared_validator . validate_numeric_min_max ( sales_record )
expect ( sales_record . errors [ " age2 " ] . first ) . to eq ( " Buyer 2’s age must be between 0 and 110 " )
sales_log . jointpur = 1
sales_log . age2 = 130
shared_validator . validate_numeric_min_max ( sales_log )
expect ( sales_log . errors [ " age2 " ] . first ) . to eq ( " Buyer 2’s age must be between 0 and 110 " )
end
end
end
it " adds the correct validation text when a question has a min but not a max " do
sales_record . savings = - 10
shared_validator . validate_numeric_min_max ( sales_record )
expect ( sales_record . errors [ " savings " ] ) . to include ( match I18n . t ( " validations.numeric.above_min " , field : " Buyer’s total savings (to nearest £10) before any deposit paid " , min : " £0 " ) )
sales_log . savings = - 10
shared_validator . validate_numeric_min_max ( sales_log )
expect ( sales_log . errors [ " savings " ] ) . to include ( match I18n . t ( " validations.numeric.above_min " , field : " Buyer’s total savings (to nearest £10) before any deposit paid " , min : " £0 " ) )
end
context " when validating percent " do
it " validates that suffixes are added in the error message " do
sales_record . ownershipsch = 1
sales_record . staircase = 1
sales_record . stairbought = 150
shared_validator . validate_numeric_min_max ( sales_record )
expect ( sales_record . errors [ " stairbought " ] )
sales_log . ownershipsch = 1
sales_log . staircase = 1
sales_log . stairbought = 150
shared_validator . validate_numeric_min_max ( sales_log )
expect ( sales_log . errors [ " stairbought " ] )
. to include ( match I18n . t ( " validations.numeric.within_range " , field : " Percentage bought in this staircasing transaction " , min : " 0% " , max : " 100% " ) )
end
end
context " when validating price " do
it " validates that £ prefix and , is added in the error message " do
sales_record . income1 = - 5
shared_validator . validate_numeric_min_max ( sales_record )
expect ( sales_record . errors [ " income1 " ] )
sales_log . income1 = - 5
shared_validator . validate_numeric_min_max ( sales_log )
expect ( sales_log . errors [ " income1 " ] )
. to include ( match I18n . t ( " validations.numeric.within_range " , field : " Buyer 1’s gross annual income " , min : " £0 " , max : " £999,999 " ) )
end
end
@ -116,18 +116,18 @@ RSpec.describe Validations::SharedValidations do
describe " radio options validations " do
it " allows only possible values " do
record . needstype = 1
shared_validator . validate_valid_radio_option ( record )
lettings_log . needstype = 1
shared_validator . validate_valid_radio_option ( lettings_log )
expect ( record . errors [ " needstype " ] ) . to be_empty
expect ( lettings_log . errors [ " needstype " ] ) . to be_empty
end
it " denies impossible values " do
record . needstype = 3
shared_validator . validate_valid_radio_option ( record )
lettings_log . needstype = 3
shared_validator . validate_valid_radio_option ( lettings_log )
expect ( record . errors [ " needstype " ] ) . to be_present
expect ( record . errors [ " needstype " ] ) . to eql ( [ " Enter a valid value for needs type " ] )
expect ( lettings_log . errors [ " needstype " ] ) . to be_present
expect ( lettings_log . errors [ " needstype " ] ) . to eql ( [ " Enter a valid value for needs type " ] )
end
context " when feature is toggled off " do
@ -136,10 +136,10 @@ RSpec.describe Validations::SharedValidations do
end
it " allows any values " do
record . needstype = 3
shared_validator . validate_valid_radio_option ( record )
lettings_log . needstype = 3
shared_validator . validate_valid_radio_option ( lettings_log )
expect ( record . errors [ " needstype " ] ) . to be_empty
expect ( lettings_log . errors [ " needstype " ] ) . to be_empty
end
end
end