feature/boolean (#804)

pull/816/head
Xavier Vello 3 years ago committed by GitHub
parent 14221d02a5
commit a67baa74f1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      README.md
  2. 7
      baked_in.go
  3. 6
      doc.go
  4. 6
      validator_test.go

@ -126,6 +126,7 @@ Baked-in Validations
| alphanumunicode | Alphanumeric Unicode | | alphanumunicode | Alphanumeric Unicode |
| alphaunicode | Alpha Unicode | | alphaunicode | Alpha Unicode |
| ascii | ASCII | | ascii | ASCII |
| boolean | Boolean |
| contains | Contains | | contains | Contains |
| containsany | Contains Any | | containsany | Contains Any |
| containsrune | Contains Rune | | containsrune | Contains Rune |

@ -107,6 +107,7 @@ var (
"alphanum": isAlphanum, "alphanum": isAlphanum,
"alphaunicode": isAlphaUnicode, "alphaunicode": isAlphaUnicode,
"alphanumunicode": isAlphanumUnicode, "alphanumunicode": isAlphanumUnicode,
"boolean": isBoolean,
"numeric": isNumeric, "numeric": isNumeric,
"number": isNumber, "number": isNumber,
"hexadecimal": isHexadecimal, "hexadecimal": isHexadecimal,
@ -1438,6 +1439,12 @@ func isAlphaUnicode(fl FieldLevel) bool {
return alphaUnicodeRegex.MatchString(fl.Field().String()) return alphaUnicodeRegex.MatchString(fl.Field().String())
} }
// isBoolean is the validation function for validating if the current field's value can be safely converted to a boolean.
func isBoolean(fl FieldLevel) bool {
_, err := strconv.ParseBool(fl.Field().String())
return err == nil
}
// isDefault is the opposite of required aka hasValue // isDefault is the opposite of required aka hasValue
func isDefault(fl FieldLevel) bool { func isDefault(fl FieldLevel) bool {
return !hasValue(fl) return !hasValue(fl)

@ -726,6 +726,12 @@ This validates that a string value contains unicode alphanumeric characters only
Usage: alphanumunicode Usage: alphanumunicode
Boolean
This validates that a string value can successfully be parsed into a boolean with strconv.ParseBool
Usage: boolean
Number Number
This validates that a string value contains number values only. This validates that a string value contains number values only.

@ -71,6 +71,7 @@ type TestString struct {
Gt string `validate:"gt=10"` Gt string `validate:"gt=10"`
Gte string `validate:"gte=10"` Gte string `validate:"gte=10"`
OmitEmpty string `validate:"omitempty,min=1,max=10"` OmitEmpty string `validate:"omitempty,min=1,max=10"`
Boolean string `validate:"boolean"`
Sub *SubTest Sub *SubTest
SubIgnore *SubTest `validate:"-"` SubIgnore *SubTest `validate:"-"`
Anonymous struct { Anonymous struct {
@ -7943,6 +7944,7 @@ func TestStructStringValidation(t *testing.T) {
Lte: "0123456789", Lte: "0123456789",
Gt: "01234567890", Gt: "01234567890",
Gte: "0123456789", Gte: "0123456789",
Boolean: "true",
OmitEmpty: "", OmitEmpty: "",
Sub: &SubTest{ Sub: &SubTest{
Test: "1", Test: "1",
@ -7974,6 +7976,7 @@ func TestStructStringValidation(t *testing.T) {
Gt: "1", Gt: "1",
Gte: "1", Gte: "1",
OmitEmpty: "12345678901", OmitEmpty: "12345678901",
Boolean: "nope",
Sub: &SubTest{ Sub: &SubTest{
Test: "", Test: "",
}, },
@ -7991,7 +7994,7 @@ func TestStructStringValidation(t *testing.T) {
// Assert Top Level // Assert Top Level
NotEqual(t, errs, nil) NotEqual(t, errs, nil)
Equal(t, len(errs.(ValidationErrors)), 13) Equal(t, len(errs.(ValidationErrors)), 14)
// Assert Fields // Assert Fields
AssertError(t, errs, "TestString.Required", "TestString.Required", "Required", "Required", "required") AssertError(t, errs, "TestString.Required", "TestString.Required", "Required", "Required", "required")
@ -8004,6 +8007,7 @@ func TestStructStringValidation(t *testing.T) {
AssertError(t, errs, "TestString.Gt", "TestString.Gt", "Gt", "Gt", "gt") AssertError(t, errs, "TestString.Gt", "TestString.Gt", "Gt", "Gt", "gt")
AssertError(t, errs, "TestString.Gte", "TestString.Gte", "Gte", "Gte", "gte") AssertError(t, errs, "TestString.Gte", "TestString.Gte", "Gte", "Gte", "gte")
AssertError(t, errs, "TestString.OmitEmpty", "TestString.OmitEmpty", "OmitEmpty", "OmitEmpty", "max") AssertError(t, errs, "TestString.OmitEmpty", "TestString.OmitEmpty", "OmitEmpty", "OmitEmpty", "max")
AssertError(t, errs, "TestString.Boolean", "TestString.Boolean", "Boolean", "Boolean", "boolean")
// Nested Struct Field Errs // Nested Struct Field Errs
AssertError(t, errs, "TestString.Anonymous.A", "TestString.Anonymous.A", "A", "A", "required") AssertError(t, errs, "TestString.Anonymous.A", "TestString.Anonymous.A", "A", "A", "required")

Loading…
Cancel
Save