@ -5,56 +5,76 @@ RSpec.describe Validations::Sales::SaleInformationValidations do
let ( :validator_class ) { Class . new { include Validations :: Sales :: SaleInformationValidations } }
let ( :validator_class ) { Class . new { include Validations :: Sales :: SaleInformationValidations } }
describe " # validate_deposit_rang e " do
describe " # validate_pratical_completion_date_before_saledat e " do
context " when within permitted bounds " do
context " when hodate blank " do
let ( :record ) { build ( :sales_log , deposit : 0 ) }
let ( :record ) { build ( :sales_log , hodate : nil ) }
it " does not add an error " do
it " does not add an error " do
sale_information_validator . validate_deposit_rang e ( record )
sale_information_validator . validate_pratical_completion_date_before_saledat e ( record )
expect ( record . errors [ :deposit ] ) . not_to be_present
expect ( record . errors ) . not_to be_present
end
end
end
end
context " when blank " do
context " when saledate blank " do
let ( :record ) { build ( :sales_log , deposit : nil ) }
let ( :record ) { build ( :sales_log , sale dat e: nil ) }
it " does not add an error " do
it " does not add an error " do
sale_information_validator . validate_deposit_rang e ( record )
sale_information_validator . validate_pratical_completion_date_before_saledat e ( record )
expect ( record . errors [ :deposit ] ) . not_to be_present
expect ( record . errors ) . not_to be_present
end
end
end
end
context " when below lower bound " do
context " when saledate and hodate blank " do
let ( :record ) { build ( :sales_log , deposit : - 1 ) }
let ( :record ) { build ( :sales_log , hodate : nil , saledate : nil ) }
it " adds an error " do
it " does not add an error" do
sale_information_validator . validate_deposit_rang e ( record )
sale_information_validator . validate_pratical_completion_date_before_saledat e ( record )
expect ( record . errors [ :deposit ] ) . to be_present
expect ( record . errors ) . not_ to be_present
end
end
end
end
context " when higher than upper bound " do
context " when hodate before saledate " do
let ( :record ) { build ( :sales_log , deposit : 1_000_000 ) }
let ( :record ) { build ( :sales_log , hodate : 2 . months . ago , saledate : 1 . month . ago ) }
it " adds an error" do
it " does not add the error" do
sale_information_validator . validate_deposit_rang e ( record )
sale_information_validator . validate_pratical_completion_date_before_saledat e ( record )
expect ( record . errors [ :deposit ] ) . to be_present
expect ( record . errors ) . not_ to be_present
end
end
end
end
context " when hodate after saledate " do
let ( :record ) { build ( :sales_log , hodate : 1 . month . ago , saledate : 2 . months . ago ) }
it " adds error " do
sale_information_validator . validate_pratical_completion_date_before_saledate ( record )
expect ( record . errors [ :hodate ] ) . to be_present
end
end
end
describe " # validate_pratical_completion_date_before_saledate " do
context " when hodate == saledate " do
context " when hodate blank " do
let ( :record ) { build ( :sales_log , hodate : Time . zone . parse ( " 2023-07-01 " ) , saledate : Time . zone . parse ( " 2023-07-01 " ) ) }
let ( :record ) { build ( :sales_log , hodate : nil ) }
it " does not add an error " do
it " does not add an error " do
sale_information_validator . validate_pratical_completion_date_before_saledate ( record )
sale_information_validator . validate_pratical_completion_date_before_saledate ( record )
expect ( record . errors ) . not_to be_present
expect ( record . errors [ :hodate ] ) . to be_present
end
end
end
describe " # validate_exchange_date " do
context " when exdate blank " do
let ( :record ) { build ( :sales_log , exdate : nil ) }
it " does not add an error " do
sale_information_validator . validate_exchange_date ( record )
expect ( record . errors [ :exdate ] ) . not_to be_present
end
end
end
end
@ -62,49 +82,63 @@ RSpec.describe Validations::Sales::SaleInformationValidations do
let ( :record ) { build ( :sales_log , saledate : nil ) }
let ( :record ) { build ( :sales_log , saledate : nil ) }
it " does not add an error " do
it " does not add an error " do
sale_information_validator . validate_pratical_completion_date_before_sale date ( record )
sale_information_validator . validate_exchange_ date ( record )
expect ( record . errors ) . not_to be_present
expect ( record . errors [ :exdate ] ) . not_to be_present
end
end
end
end
context " when saledate and ho date blank " do
context " when saledate and ex date blank " do
let ( :record ) { build ( :sales_log , ho date: nil , saledate : nil ) }
let ( :record ) { build ( :sales_log , ex date: nil , saledate : nil ) }
it " does not add an error " do
it " does not add an error " do
sale_information_validator . validate_pratical_completion_date_before_sale date ( record )
sale_information_validator . validate_exchange_ date ( record )
expect ( record . errors ) . not_to be_present
expect ( record . errors [ :exdate ] ) . not_to be_present
end
end
end
end
context " when ho date before saledate " do
context " when ex date before saledate " do
let ( :record ) { build ( :sales_log , ho date: 2 . months . ago , saledate : 1 . month . ago ) }
let ( :record ) { build ( :sales_log , ex date: 2 . months . ago , saledate : 1 . month . ago ) }
it " does not add the error " do
it " does not add the error " do
sale_information_validator . validate_pratical_completion_date_before_sale date ( record )
sale_information_validator . validate_exchange_ date ( record )
expect ( record . errors ) . not_to be_present
expect ( record . errors [ :exdate ] ) . not_to be_present
end
end
end
end
context " when hodate after saledate " do
context " when exdate more than 1 year before saledate " do
let ( :record ) { build ( :sales_log , hodate : 1 . month . ago , saledate : 2 . months . ago ) }
let ( :record ) { build ( :sales_log , exdate : 2 . years . ago , saledate : 1 . month . ago ) }
it " does not add the error " do
sale_information_validator . validate_exchange_date ( record )
expect ( record . errors [ :exdate ] ) . to eq (
[ " Contract exchange date must be less than 1 year before completion date " ] ,
)
end
end
context " when exdate after saledate " do
let ( :record ) { build ( :sales_log , exdate : 1 . month . ago , saledate : 2 . months . ago ) }
it " adds error " do
it " adds error " do
sale_information_validator . validate_pratical_completion_date_before_saledate ( record )
sale_information_validator . validate_exchange_ date ( record )
expect ( record . errors [ :hodate ] ) . to be_present
expect ( record . errors [ :exdate ] ) . to eq (
[ " Contract exchange date must be less than 1 year before completion date " ] ,
)
end
end
end
end
context " when hodate == saledate " do
context " when ex date == saledate " do
let ( :record ) { build ( :sales_log , hodate : Time . zone . parse ( " 2023-07-01 " ) , saledate : Time . zone . parse ( " 2023-07-01 " ) ) }
let ( :record ) { build ( :sales_log , ex date: Time . zone . parse ( " 2023-07-01 " ) , saledate : Time . zone . parse ( " 2023-07-01 " ) ) }
it " does not add an error " do
it " does not add an error " do
sale_information_validator . validate_pratical_completion_date_before_sale date ( record )
sale_information_validator . validate_exchange_ date ( record )
expect ( record . errors [ :ho date ] ) . to be_present
expect ( record . errors [ :ex date ] ) . not_ to be_present
end
end
end
end
end
end