Skip to content

Commit

Permalink
adding more input validation on date fields
Browse files Browse the repository at this point in the history
  • Loading branch information
rajagopal28 committed Aug 2, 2021
1 parent eb5d107 commit ac62d9b
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 3 deletions.
12 changes: 9 additions & 3 deletions service/strategy/pricing_strategy.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,10 @@ func (s *Strategy) ApplySubsecuentFactorsToPricing(input *pricingengine.Generate

func (s *Strategy) FindMatchingDriverAgeFactor(input *pricingengine.GeneratePricingRequest, allDriverAgeFactords []models.RangeConfig) (*models.RangeConfig, error) {
date_of_birth := input.DateOfBirth
parse_dob_t,_ := time.Parse("2006-01-02", date_of_birth)
parse_dob_t, err := time.Parse("2006-01-02", date_of_birth)
if err != nil {
return nil, errors.New("Error wile Parsing DateOfBirth date. Error: "+ err.Error())
}
now := time.Now()
age := int(now.Sub(parse_dob_t).Hours()/(24*30*12))
log.Println("Checking the driver factor for date_of_birth=", date_of_birth, " parse_dob_t=", parse_dob_t, " age=", age)
Expand Down Expand Up @@ -82,8 +85,11 @@ func (s *Strategy) FindMatchingInsuranceGroupFactor(input *pricingengine.Generat


func (s *Strategy) FindMatchingLicenceValidityFactor(input *pricingengine.GeneratePricingRequest, allLicenceValidtyFactors []models.RangeConfig) (*models.RangeConfig, error) {
date_of_birth := input.LicenseHeldSince
parse_date_t,_ := time.Parse("2006-01-02", date_of_birth)
licence_date := input.LicenseHeldSince
parse_date_t, err := time.Parse("2006-01-02", licence_date)
if err != nil {
return nil, errors.New("Error wile Parsing LicenseHeldSince date. Error: "+ err.Error())
}
now := time.Now()
licence_length := int(now.Sub(parse_date_t).Hours()/(24*30*12))
for i:= 0; i < len(allLicenceValidtyFactors); i++ {
Expand Down
37 changes: 37 additions & 0 deletions test/strategy/pricing_strategy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,25 @@ func TestPricingStrategyVariedConfigs(tp *testing.T){
util.AssertEqual(err.Error(), "MatchingLicenceValidityFactor not found!", t)
util.AssertTrue(licence_factor_range == nil, t)
})

tp.Run("TestPricingStrategyVariedConfigsToFindMatchingLicenceValidityFactor-InvalidDate-Senario", func(t *testing.T) {
licence := "22-Jan-2020"
request.LicenseHeldSince = licence
LicenceValidityFactorList := []models.RangeConfig{
models.RangeConfig{
Start: 0,
End: 2,
IsEligible: true,
Value: 3.0,
Label: "<2 years",
},
}

licence_factor_range, err := strategies.FindMatchingLicenceValidityFactor(&request, LicenceValidityFactorList)
util.AssertTrue(err != nil, t)
util.AssertEqual(err.Error(), "Error wile Parsing LicenseHeldSince date. Error: parsing time \"22-Jan-2020\" as \"2006-01-02\": cannot parse \"an-2020\" as \"2006\"", t)
util.AssertTrue(licence_factor_range == nil, t)
})
tp.Run("TestPricingStrategyVariedConfigsToFindMatchingInsuranceGroupFactor-Success-Senario", func(t *testing.T) {
request.InsuranceGroup = 3
InsuranceGroupFactorList := []models.RangeConfig{
Expand Down Expand Up @@ -280,4 +299,22 @@ func TestPricingStrategyVariedConfigs(tp *testing.T){
util.AssertEqual(err.Error(), "MatchingDriverAgeFactor not found!", t)
util.AssertTrue(driver_factor_range == nil, t)
})

tp.Run("TestPricingStrategyVariedConfigsToFindMatchingDriverAgeFactor-InvalidDate-Senario", func(t *testing.T) {
request.DateOfBirth = "22-Jan-2020"
DriverAgeFactorList := []models.RangeConfig{
models.RangeConfig{
Start: 2,
End: 4,
IsEligible: true,
Value: 2.0,
Label: "2-4",
},
}

driver_factor_range, err := strategies.FindMatchingDriverAgeFactor(&request, DriverAgeFactorList)
util.AssertTrue(err != nil, t)
util.AssertEqual(err.Error(), "Error wile Parsing DateOfBirth date. Error: parsing time \"22-Jan-2020\" as \"2006-01-02\": cannot parse \"an-2020\" as \"2006\"", t)
util.AssertTrue(driver_factor_range == nil, t)
})
}

0 comments on commit ac62d9b

Please sign in to comment.