Skip to content

Commit ab0111b

Browse files
committed
✅ test: add test case for issues #250
1 parent 637f9df commit ab0111b

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

issues_test.go

+53
Original file line numberDiff line numberDiff line change
@@ -1597,6 +1597,59 @@ func TestIssues_247(t *testing.T) {
15971597
fmt.Println(v.Errors)
15981598
}
15991599

1600+
// https://github.com/gookit/validate/issues/250
1601+
// Does not work with *int ?
1602+
func TestIssues_250(t *testing.T) {
1603+
type Salary struct {
1604+
MinSalary *int `json:"MinSalary" validate:"int|min:10000" message:"The minimum salary is 10.000 EUR"`
1605+
OkSalary *int `json:"OkSalary" validate:"int|min:10000" message:"The ok salary is larger than 10.000 EUR"`
1606+
HappySalary *int `json:"HappySalary" validate:"int|min:10000" message:"The happy salary is larger than 10.000 EUR"`
1607+
}
1608+
1609+
// works: optional
1610+
st := &Salary{}
1611+
v := validate.Struct(st)
1612+
assert.True(t, v.Validate())
1613+
1614+
// works
1615+
iv := 3
1616+
st = &Salary{
1617+
MinSalary: &iv,
1618+
}
1619+
v = validate.Struct(st)
1620+
assert.False(t, v.Validate())
1621+
assert.ErrMsg(t, v.Errors, "MinSalary: The minimum salary is 10.000 EUR")
1622+
1623+
// works: use zero value
1624+
iv2 := 0
1625+
st = &Salary{
1626+
MinSalary: &iv2,
1627+
}
1628+
v = validate.Struct(st)
1629+
assert.False(t, v.Validate())
1630+
assert.ErrMsg(t, v.Errors, "MinSalary: The minimum salary is 10.000 EUR")
1631+
1632+
// case 2
1633+
type A struct {
1634+
A1 *int `validate:"int|min:200"`
1635+
A2 *int `validate:"int|min:200"`
1636+
}
1637+
1638+
// works
1639+
i := 3
1640+
pa := A{A1: &i, A2: nil}
1641+
v = validate.Struct(pa)
1642+
assert.False(t, v.Validate())
1643+
assert.StrContains(t, v.Errors.String(), "A1 min value is 200")
1644+
1645+
// works
1646+
i2 := 0
1647+
pa = A{A1: &i2, A2: nil}
1648+
v = validate.Struct(pa)
1649+
assert.False(t, v.Validate())
1650+
assert.StrContains(t, v.Errors.String(), "A1 min value is 200")
1651+
}
1652+
16001653
// DataIssues252 struct
16011654
type DataIssues252 struct {
16021655
PtrStrings *[]string `validate:"strings"`

0 commit comments

Comments
 (0)