mirror of
https://gitee.com/johng/gf.git
synced 2024-12-02 04:07:47 +08:00
improve package gvalid
This commit is contained in:
parent
3be19e58e1
commit
cea6e4c3d9
@ -107,7 +107,7 @@ func (r *Request) doParse(pointer interface{}, requestType int) error {
|
||||
}
|
||||
}
|
||||
// Validation.
|
||||
if err := gvalid.CheckStructWithData(r.Context(), pointer, data, nil); err != nil {
|
||||
if err = gvalid.New().Data(pointer, data).Run(r.Context()); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -120,16 +120,14 @@ func (r *Request) doParse(pointer interface{}, requestType int) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := j.Var().Scan(pointer); err != nil {
|
||||
if err = j.Var().Scan(pointer); err != nil {
|
||||
return err
|
||||
}
|
||||
for i := 0; i < reflectVal2.Len(); i++ {
|
||||
if err := gvalid.CheckStructWithData(
|
||||
r.Context(),
|
||||
reflectVal2.Index(i),
|
||||
j.Get(gconv.String(i)).Map(),
|
||||
nil,
|
||||
); err != nil {
|
||||
|
||||
if err = gvalid.New().
|
||||
Data(reflectVal2.Index(i), j.Get(gconv.String(i)).Map()).
|
||||
Run(r.Context()); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
@ -424,7 +424,7 @@ func Test_Params_Struct(t *testing.T) {
|
||||
if err := r.GetStruct(user); err != nil {
|
||||
r.Response.WriteExit(err)
|
||||
}
|
||||
if err := gvalid.CheckStruct(r.Context(), user, nil); err != nil {
|
||||
if err := gvalid.New().Data(user).Run(r.Context()); err != nil {
|
||||
r.Response.WriteExit(err)
|
||||
}
|
||||
}
|
||||
|
@ -8,7 +8,6 @@
|
||||
package gvalid
|
||||
|
||||
import (
|
||||
"context"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
@ -177,7 +176,6 @@ var (
|
||||
"no": {},
|
||||
}
|
||||
|
||||
defaultValidator = New() // defaultValidator is the default validator for package functions.
|
||||
structTagPriority = []string{"gvalid", "valid", "v"} // structTagPriority specifies the validation tag priority array.
|
||||
aliasNameTagPriority = []string{"param", "params", "p"} // aliasNameTagPriority specifies the alias tag priority array.
|
||||
|
||||
@ -199,65 +197,6 @@ var (
|
||||
}
|
||||
)
|
||||
|
||||
// CheckValue checks single value with specified rules.
|
||||
// It returns nil if successful validation.
|
||||
//
|
||||
// The parameter `value` can be any type of variable, which will be converted to string
|
||||
// for validation.
|
||||
// The parameter `rules` can be one or more rules, multiple rules joined using char '|'.
|
||||
// The parameter `messages` specifies the custom error messages, which can be type of:
|
||||
// string/map/struct/*struct.
|
||||
// The optional parameter `params` specifies the extra validation parameters for some rules
|
||||
// like: required-*、same、different, etc.
|
||||
func CheckValue(ctx context.Context, value interface{}, rules string, messages interface{}, params ...interface{}) Error {
|
||||
var data interface{}
|
||||
if len(params) > 0 {
|
||||
data = params[0]
|
||||
}
|
||||
return defaultValidator.Rules(rules).Data(data).Messages(messages).CheckValue(ctx, value)
|
||||
}
|
||||
|
||||
// CheckMap validates map and returns the error result. It returns nil if with successful validation.
|
||||
//
|
||||
// The parameter `rules` can be type of []string/map[string]string. It supports sequence in error result
|
||||
// if `rules` is type of []string.
|
||||
// The optional parameter `messages` specifies the custom error messages for specified keys and rules.
|
||||
func CheckMap(ctx context.Context, params interface{}, rules interface{}, messages ...CustomMsg) Error {
|
||||
var customErrorMessages CustomMsg
|
||||
if len(messages) > 0 {
|
||||
customErrorMessages = messages[0]
|
||||
}
|
||||
return defaultValidator.Rules(rules).Messages(customErrorMessages).CheckMap(ctx, params)
|
||||
}
|
||||
|
||||
// CheckStruct validates struct and returns the error result.
|
||||
//
|
||||
// The parameter `object` should be type of struct/*struct.
|
||||
// The parameter `rules` can be type of []string/map[string]string. It supports sequence in error result
|
||||
// if `rules` is type of []string.
|
||||
// The optional parameter `messages` specifies the custom error messages for specified keys and rules.
|
||||
func CheckStruct(ctx context.Context, object interface{}, rules interface{}, messages ...CustomMsg) Error {
|
||||
var customErrorMessages CustomMsg
|
||||
if len(messages) > 0 {
|
||||
customErrorMessages = messages[0]
|
||||
}
|
||||
return defaultValidator.Rules(rules).Messages(customErrorMessages).CheckStruct(ctx, object)
|
||||
}
|
||||
|
||||
// CheckStructWithData validates struct with given parameter map and returns the error result.
|
||||
//
|
||||
// The parameter `object` should be type of struct/*struct.
|
||||
// The parameter `rules` can be type of []string/map[string]string. It supports sequence in error result
|
||||
// if `rules` is type of []string.
|
||||
// The optional parameter `messages` specifies the custom error messages for specified keys and rules.
|
||||
func CheckStructWithData(ctx context.Context, object interface{}, data interface{}, rules interface{}, messages ...CustomMsg) Error {
|
||||
var customErrorMessages CustomMsg
|
||||
if len(messages) > 0 {
|
||||
customErrorMessages = messages[0]
|
||||
}
|
||||
return defaultValidator.Data(data).Rules(rules).Messages(customErrorMessages).CheckStruct(ctx, object)
|
||||
}
|
||||
|
||||
// parseSequenceTag parses one sequence tag to field, rule and error message.
|
||||
// The sequence tag is like: [alias@]rule[...#msg...]
|
||||
func parseSequenceTag(tag string) (field, rule, msg string) {
|
||||
|
@ -7,15 +7,20 @@
|
||||
package gvalid
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"reflect"
|
||||
|
||||
"github.com/gogf/gf/v2/i18n/gi18n"
|
||||
"github.com/gogf/gf/v2/internal/utils"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
)
|
||||
|
||||
// Validator is the validation manager for chaining operations.
|
||||
type Validator struct {
|
||||
i18nManager *gi18n.Manager // I18n manager for error message translation.
|
||||
key string // Single validation key.
|
||||
value interface{} // Single validation value.
|
||||
data interface{} // Validation data, which is usually a map.
|
||||
data interface{} // Validation data, which can be a map, struct or a certain value to be validated.
|
||||
assoc interface{} // Associated data, which is usually a map, for union validation.
|
||||
rules interface{} // Custom validation data.
|
||||
messages interface{} // Custom validation error messages, which can be string or type of CustomMsg.
|
||||
ruleFuncMap map[string]RuleFunc // ruleFuncMap stores custom rule functions for current Validator.
|
||||
@ -32,6 +37,50 @@ func New() *Validator {
|
||||
}
|
||||
}
|
||||
|
||||
// Run starts validating the given data with rules and messages.
|
||||
func (v *Validator) Run(ctx context.Context) Error {
|
||||
if v.data == nil {
|
||||
return newValidationErrorByStr(
|
||||
internalParamsErrRuleName,
|
||||
errors.New(`no data passed for validation`),
|
||||
)
|
||||
}
|
||||
|
||||
originValueAndKind := utils.OriginValueAndKind(v.data)
|
||||
switch originValueAndKind.OriginKind {
|
||||
case reflect.Map:
|
||||
isMapValidation := false
|
||||
if v.rules == nil {
|
||||
isMapValidation = true
|
||||
} else if utils.IsMap(v.rules) || utils.IsSlice(v.rules) {
|
||||
isMapValidation = true
|
||||
}
|
||||
if isMapValidation {
|
||||
return v.doCheckMap(ctx, v.data)
|
||||
}
|
||||
|
||||
case reflect.Struct:
|
||||
isStructValidation := false
|
||||
if v.rules == nil {
|
||||
isStructValidation = true
|
||||
} else if v.rules != nil && (utils.IsMap(v.rules) || utils.IsSlice(v.rules)) {
|
||||
isStructValidation = true
|
||||
}
|
||||
if isStructValidation {
|
||||
return v.doCheckStruct(ctx, v.data)
|
||||
}
|
||||
}
|
||||
|
||||
return v.doCheckValue(ctx, doCheckValueInput{
|
||||
Name: "",
|
||||
Value: v.data,
|
||||
Rule: gconv.String(v.rules),
|
||||
Messages: v.messages,
|
||||
DataRaw: v.assoc,
|
||||
DataMap: gconv.Map(v.assoc),
|
||||
})
|
||||
}
|
||||
|
||||
// Clone creates and returns a new Validator which is a shallow copy of current one.
|
||||
func (v *Validator) Clone() *Validator {
|
||||
newValidator := New()
|
||||
@ -64,15 +113,18 @@ func (v *Validator) CaseInsensitive() *Validator {
|
||||
}
|
||||
|
||||
// Data is a chaining operation function, which sets validation data for current operation.
|
||||
// The parameter `data` is usually type of map, which specifies the parameter map used in validation.
|
||||
// Calling this function also sets `useDataInsteadOfObjectAttributes` true no mather the `data` is nil or not.
|
||||
func (v *Validator) Data(data interface{}) *Validator {
|
||||
// The optional parameter `assoc` is usually type of map, which specifies the parameter map used in union validation.
|
||||
// Calling this function with `assoc` also sets `useDataInsteadOfObjectAttributes` true
|
||||
func (v *Validator) Data(data interface{}, assoc ...interface{}) *Validator {
|
||||
if data == nil {
|
||||
return v
|
||||
}
|
||||
newValidator := v.Clone()
|
||||
newValidator.data = data
|
||||
newValidator.useDataInsteadOfObjectAttributes = true
|
||||
if len(assoc) > 0 {
|
||||
newValidator.assoc = assoc[0]
|
||||
newValidator.useDataInsteadOfObjectAttributes = true
|
||||
}
|
||||
return newValidator
|
||||
}
|
||||
|
||||
|
@ -17,12 +17,6 @@ import (
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
)
|
||||
|
||||
// CheckMap validates map and returns the error result. It returns nil if with successful validation.
|
||||
// The parameter `params` should be type of map.
|
||||
func (v *Validator) CheckMap(ctx context.Context, params interface{}) Error {
|
||||
return v.doCheckMap(ctx, params)
|
||||
}
|
||||
|
||||
func (v *Validator) doCheckMap(ctx context.Context, params interface{}) Error {
|
||||
if params == nil {
|
||||
return nil
|
||||
|
@ -17,12 +17,6 @@ import (
|
||||
"github.com/gogf/gf/v2/util/gutil"
|
||||
)
|
||||
|
||||
// CheckStruct validates struct and returns the error result.
|
||||
// The parameter `object` should be type of struct/*struct.
|
||||
func (v *Validator) CheckStruct(ctx context.Context, object interface{}) Error {
|
||||
return v.doCheckStruct(ctx, object)
|
||||
}
|
||||
|
||||
func (v *Validator) doCheckStruct(ctx context.Context, object interface{}) Error {
|
||||
var (
|
||||
errorMaps = make(map[string]map[string]error) // Returning error.
|
||||
@ -53,7 +47,7 @@ func (v *Validator) doCheckStruct(ctx context.Context, object interface{}) Error
|
||||
checkRules = make([]fieldRule, 0)
|
||||
nameToRuleMap = make(map[string]string) // just for internally searching index purpose.
|
||||
customMessage = make(CustomMsg) // Custom rule error message map.
|
||||
checkValueData = v.data // Ready to be validated data, which can be type of .
|
||||
checkValueData = v.assoc // Ready to be validated data, which can be type of .
|
||||
)
|
||||
if checkValueData == nil {
|
||||
checkValueData = object
|
||||
@ -111,10 +105,10 @@ func (v *Validator) doCheckStruct(ctx context.Context, object interface{}) Error
|
||||
return nil
|
||||
}
|
||||
// Input parameter map handling.
|
||||
if v.data == nil || !v.useDataInsteadOfObjectAttributes {
|
||||
if v.assoc == nil || !v.useDataInsteadOfObjectAttributes {
|
||||
inputParamMap = make(map[string]interface{})
|
||||
} else {
|
||||
inputParamMap = gconv.Map(v.data)
|
||||
inputParamMap = gconv.Map(v.assoc)
|
||||
}
|
||||
// Checks and extends the parameters map with struct alias tag.
|
||||
if !v.useDataInsteadOfObjectAttributes {
|
||||
|
@ -33,19 +33,6 @@ type iTime interface {
|
||||
IsZero() bool
|
||||
}
|
||||
|
||||
// CheckValue checks single value with specified rules.
|
||||
// It returns nil if successful validation.
|
||||
func (v *Validator) CheckValue(ctx context.Context, value interface{}) Error {
|
||||
return v.doCheckValue(ctx, doCheckValueInput{
|
||||
Name: "",
|
||||
Value: value,
|
||||
Rule: gconv.String(v.rules),
|
||||
Messages: v.messages,
|
||||
DataRaw: v.data,
|
||||
DataMap: gconv.Map(v.data),
|
||||
})
|
||||
}
|
||||
|
||||
type doCheckValueInput struct {
|
||||
Name string // Name specifies the name of parameter `value`.
|
||||
Value interface{} // Value specifies the value for the rules to be validated.
|
||||
@ -563,7 +550,7 @@ func (v *Validator) doCheckValueRecursively(ctx context.Context, in doCheckValue
|
||||
validator := v.Clone()
|
||||
validator.rules = nil
|
||||
validator.messages = nil
|
||||
if err := validator.Data(in.Value).doCheckStruct(ctx, reflect.New(in.Type).Interface()); err != nil {
|
||||
if err := validator.Data(reflect.New(in.Type).Interface(), in.Value).Run(ctx); err != nil {
|
||||
// It merges the errors into single error map.
|
||||
for k, m := range err.(*validationError).errors {
|
||||
in.ErrorMaps[k] = m
|
||||
@ -575,12 +562,8 @@ func (v *Validator) doCheckValueRecursively(ctx context.Context, in doCheckValue
|
||||
|
||||
case reflect.Map:
|
||||
var (
|
||||
dataMap = gconv.Map(in.Value)
|
||||
validator = v.Clone()
|
||||
dataMap = gconv.Map(in.Value)
|
||||
)
|
||||
// Ignore data, rules and messages from parent.
|
||||
validator.rules = nil
|
||||
validator.messages = nil
|
||||
for _, item := range dataMap {
|
||||
originTypeAndKind := utils.OriginTypeAndKind(item)
|
||||
v.doCheckValueRecursively(ctx, doCheckValueRecursivelyInput{
|
||||
|
@ -32,7 +32,7 @@ func ExampleCheckMap() {
|
||||
"password@required|length:6,16|same{password}2#密码不能为空|密码长度应当在{min}到{max}之间|两次密码输入不相等",
|
||||
"password2@required|length:6,16#",
|
||||
}
|
||||
if e := gvalid.CheckMap(gctx.New(), params, rules); e != nil {
|
||||
if e := g.Validator().Data(params).Rules(rules).Run(gctx.New()); e != nil {
|
||||
fmt.Println(e.Map())
|
||||
fmt.Println(e.FirstItem())
|
||||
fmt.Println(e.FirstError())
|
||||
@ -54,7 +54,7 @@ func ExampleCheckMap2() {
|
||||
"password@required|length:6,16|same:password2#密码不能为空|密码长度应当在{min}到{max}之间|两次密码输入不相等",
|
||||
"password2@required|length:6,16#",
|
||||
}
|
||||
if e := gvalid.CheckMap(gctx.New(), params, rules); e != nil {
|
||||
if e := g.Validator().Data(params).Rules(rules).Run(gctx.New()); e != nil {
|
||||
fmt.Println(e.Map())
|
||||
fmt.Println(e.FirstItem())
|
||||
fmt.Println(e.FirstError())
|
||||
@ -76,7 +76,7 @@ func ExampleCheckStruct() {
|
||||
Page: 1,
|
||||
Size: 10,
|
||||
}
|
||||
err := gvalid.CheckStruct(gctx.New(), obj, nil)
|
||||
err := g.Validator().Data(obj).Rules(nil).Run(gctx.New())
|
||||
fmt.Println(err == nil)
|
||||
// Output:
|
||||
// true
|
||||
@ -93,7 +93,7 @@ func ExampleCheckStruct2() {
|
||||
Page: 1,
|
||||
Size: 10,
|
||||
}
|
||||
err := gvalid.CheckStruct(gctx.New(), obj, nil)
|
||||
err := g.Validator().Data(obj).Rules(nil).Run(gctx.New())
|
||||
fmt.Println(err == nil)
|
||||
// Output:
|
||||
// true
|
||||
@ -110,7 +110,7 @@ func ExampleCheckStruct3() {
|
||||
Page: 1,
|
||||
Size: 10,
|
||||
}
|
||||
err := gvalid.CheckStruct(gctx.New(), obj, nil)
|
||||
err := g.Validator().Data(obj).Rules(nil).Run(gctx.New())
|
||||
fmt.Println(err)
|
||||
// Output:
|
||||
// project id must between 1, 10000
|
||||
@ -143,7 +143,7 @@ func ExampleRegisterRule() {
|
||||
}
|
||||
return nil
|
||||
})
|
||||
err := gvalid.CheckStruct(gctx.New(), user, nil)
|
||||
err := g.Validator().Data(user).Rules(nil).Run(gctx.New())
|
||||
fmt.Println(err.Error())
|
||||
// May Output:
|
||||
// 用户名称已被占用
|
||||
@ -177,14 +177,14 @@ func ExampleRegisterRule_OverwriteRequired() {
|
||||
}
|
||||
return nil
|
||||
})
|
||||
fmt.Println(gvalid.CheckValue(gctx.New(), "", "required", "It's required"))
|
||||
fmt.Println(gvalid.CheckValue(gctx.New(), 0, "required", "It's required"))
|
||||
fmt.Println(gvalid.CheckValue(gctx.New(), false, "required", "It's required"))
|
||||
fmt.Println(g.Validator().Data("").Rules("required").Messages("It's required").Run(gctx.New()))
|
||||
fmt.Println(g.Validator().Data(0).Rules("required").Messages("It's required").Run(gctx.New()))
|
||||
fmt.Println(g.Validator().Data(false).Rules("required").Messages("It's required").Run(gctx.New()))
|
||||
gvalid.DeleteRule(rule)
|
||||
fmt.Println("rule deleted")
|
||||
fmt.Println(gvalid.CheckValue(gctx.New(), "", "required", "It's required"))
|
||||
fmt.Println(gvalid.CheckValue(gctx.New(), 0, "required", "It's required"))
|
||||
fmt.Println(gvalid.CheckValue(gctx.New(), false, "required", "It's required"))
|
||||
fmt.Println(g.Validator().Data("").Rules("required").Messages("It's required").Run(gctx.New()))
|
||||
fmt.Println(g.Validator().Data(0).Rules("required").Messages("It's required").Run(gctx.New()))
|
||||
fmt.Println(g.Validator().Data(false).Rules("required").Messages("It's required").Run(gctx.New()))
|
||||
// Output:
|
||||
// It's required
|
||||
// It's required
|
||||
@ -199,10 +199,10 @@ func ExampleValidator_Rules() {
|
||||
data := g.Map{
|
||||
"password": "123",
|
||||
}
|
||||
err := g.Validator().Data(data).
|
||||
err := g.Validator().Data("", data).
|
||||
Rules("required-with:password").
|
||||
Messages("请输入确认密码").
|
||||
CheckValue(gctx.New(), "")
|
||||
Run(gctx.New())
|
||||
fmt.Println(err.String())
|
||||
|
||||
// Output:
|
||||
@ -212,7 +212,7 @@ func ExampleValidator_Rules() {
|
||||
func ExampleValidator_CheckValue() {
|
||||
err := g.Validator().Rules("min:18").
|
||||
Messages("未成年人不允许注册哟").
|
||||
CheckValue(gctx.New(), 16)
|
||||
Data(16).Run(gctx.New())
|
||||
fmt.Println(err.String())
|
||||
|
||||
// Output:
|
||||
@ -240,7 +240,7 @@ func ExampleValidator_CheckMap() {
|
||||
err := g.Validator().
|
||||
Messages(messages).
|
||||
Rules(rules).
|
||||
CheckMap(gctx.New(), params)
|
||||
Data(params).Run(gctx.New())
|
||||
if err != nil {
|
||||
g.Dump(err.Maps())
|
||||
}
|
||||
@ -269,7 +269,7 @@ func ExampleValidator_CheckStruct() {
|
||||
if err := gconv.Scan(data, &user); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
err := g.Validator().Data(data).CheckStruct(gctx.New(), user)
|
||||
err := g.Validator().Data(user, data).Run(gctx.New())
|
||||
if err != nil {
|
||||
fmt.Println(err.Items())
|
||||
}
|
||||
@ -289,7 +289,7 @@ func ExampleValidator_Required() {
|
||||
ID: 1,
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
||||
@ -313,7 +313,7 @@ func ExampleValidator_RequiredIf() {
|
||||
Gender: 1,
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
||||
@ -337,7 +337,7 @@ func ExampleValidator_RequiredUnless() {
|
||||
Gender: 1,
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
||||
@ -362,7 +362,7 @@ func ExampleValidator_RequiredWith() {
|
||||
WifeName: "Ann",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
||||
@ -387,7 +387,7 @@ func ExampleValidator_RequiredWithAll() {
|
||||
WifeName: "Ann",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
||||
@ -411,7 +411,7 @@ func ExampleValidator_RequiredWithout() {
|
||||
Gender: 1,
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
||||
@ -434,7 +434,7 @@ func ExampleValidator_RequiredWithoutAll() {
|
||||
Gender: 1,
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
||||
@ -461,7 +461,7 @@ func ExampleValidator_Date() {
|
||||
Date5: "2021/Oct/31",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(gstr.Join(err.Strings(), "\n"))
|
||||
}
|
||||
|
||||
@ -488,7 +488,7 @@ func ExampleValidator_Datetime() {
|
||||
Date4: "2021/Dec/01 23:00:00", // error
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(gstr.Join(err.Strings(), "\n"))
|
||||
}
|
||||
|
||||
@ -515,7 +515,7 @@ func ExampleValidator_DateFormat() {
|
||||
Date4: "2021-11-01 23:00", // error
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(gstr.Join(err.Strings(), "\n"))
|
||||
}
|
||||
|
||||
@ -541,7 +541,7 @@ func ExampleValidator_Email() {
|
||||
MailAddr4: "gf#goframe.org", // error
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(gstr.Join(err.Strings(), "\n"))
|
||||
}
|
||||
|
||||
@ -567,7 +567,7 @@ func ExampleValidator_Phone() {
|
||||
PhoneNumber4: "1357891234", // error len must be 11
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(gstr.Join(err.Strings(), "\n"))
|
||||
}
|
||||
|
||||
@ -594,7 +594,7 @@ func ExampleValidator_PhoneLoose() {
|
||||
PhoneNumber4: "1357891234", // error len must be 11
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(gstr.Join(err.Strings(), "\n"))
|
||||
}
|
||||
|
||||
@ -620,7 +620,7 @@ func ExampleValidator_Telephone() {
|
||||
Telephone4: "775421451", // error len must be 7 or 8
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(gstr.Join(err.Strings(), "\n"))
|
||||
}
|
||||
|
||||
@ -646,7 +646,7 @@ func ExampleValidator_Passport() {
|
||||
Passport4: "gf", // error length between 6 and 18
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(gstr.Join(err.Strings(), "\n"))
|
||||
}
|
||||
|
||||
@ -669,7 +669,7 @@ func ExampleValidator_Password() {
|
||||
Password2: "gofra", // error length between 6 and 18
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(err)
|
||||
}
|
||||
|
||||
@ -694,7 +694,7 @@ func ExampleValidator_Password2() {
|
||||
Password4: "goframe123", // error must contain lower and upper letters and numbers.
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(gstr.Join(err.Strings(), "\n"))
|
||||
}
|
||||
|
||||
@ -719,7 +719,7 @@ func ExampleValidator_Password3() {
|
||||
Password3: "Goframe123", // error must contain lower and upper letters, numbers and special chars.
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(gstr.Join(err.Strings(), "\n"))
|
||||
}
|
||||
|
||||
@ -743,7 +743,7 @@ func ExampleValidator_Postcode() {
|
||||
Postcode3: "1000000", // error length must be 6
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(gstr.Join(err.Strings(), "\n"))
|
||||
}
|
||||
|
||||
@ -763,7 +763,7 @@ func ExampleValidator_ResidentId() {
|
||||
ResidentID1: "320107199506285482",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(err)
|
||||
}
|
||||
|
||||
@ -782,7 +782,7 @@ func ExampleValidator_BankCard() {
|
||||
BankCard1: "6225760079930218",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(err)
|
||||
}
|
||||
|
||||
@ -805,7 +805,7 @@ func ExampleValidator_QQ() {
|
||||
QQ3: "514258412a", // error all number
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(gstr.Join(err.Strings(), "\n"))
|
||||
}
|
||||
|
||||
@ -831,7 +831,7 @@ func ExampleValidator_IP() {
|
||||
IP4: "ze80::812b:1158:1f43:f0d1",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(gstr.Join(err.Strings(), "\n"))
|
||||
}
|
||||
|
||||
@ -853,7 +853,7 @@ func ExampleValidator_IPV4() {
|
||||
IP2: "520.255.255.255",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(err)
|
||||
}
|
||||
|
||||
@ -874,7 +874,7 @@ func ExampleValidator_IPV6() {
|
||||
IP2: "ze80::812b:1158:1f43:f0d1",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(err)
|
||||
}
|
||||
|
||||
@ -895,7 +895,7 @@ func ExampleValidator_Mac() {
|
||||
Mac2: "Z0-CC-6A-D6-B1-1A",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(err)
|
||||
}
|
||||
|
||||
@ -918,7 +918,7 @@ func ExampleValidator_Url() {
|
||||
URL3: "ws://goframe.org",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(err)
|
||||
}
|
||||
|
||||
@ -943,7 +943,7 @@ func ExampleValidator_Domain() {
|
||||
Domain4: "1a.2b",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(gstr.Join(err.Strings(), "\n"))
|
||||
}
|
||||
|
||||
@ -965,7 +965,7 @@ func ExampleValidator_Size() {
|
||||
Size2: "goframe",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(err)
|
||||
}
|
||||
|
||||
@ -986,7 +986,7 @@ func ExampleValidator_Length() {
|
||||
Length2: "goframe",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(err)
|
||||
}
|
||||
|
||||
@ -1007,7 +1007,7 @@ func ExampleValidator_MinLength() {
|
||||
MinLength2: "goframe",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(err)
|
||||
}
|
||||
|
||||
@ -1028,7 +1028,7 @@ func ExampleValidator_MaxLength() {
|
||||
MaxLength2: "goframe",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(err)
|
||||
}
|
||||
|
||||
@ -1053,7 +1053,7 @@ func ExampleValidator_Between() {
|
||||
Score2: -0.5,
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(gstr.Join(err.Strings(), "\n"))
|
||||
}
|
||||
|
||||
@ -1079,7 +1079,7 @@ func ExampleValidator_Min() {
|
||||
Score2: 10.1,
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(gstr.Join(err.Strings(), "\n"))
|
||||
}
|
||||
|
||||
@ -1105,7 +1105,7 @@ func ExampleValidator_Max() {
|
||||
Score2: 10.1,
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(gstr.Join(err.Strings(), "\n"))
|
||||
}
|
||||
|
||||
@ -1127,7 +1127,7 @@ func ExampleValidator_Json() {
|
||||
JSON2: "{\"name\":\"goframe\",\"author\":\"郭强\",\"test\"}",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(err)
|
||||
}
|
||||
|
||||
@ -1150,7 +1150,7 @@ func ExampleValidator_Integer() {
|
||||
Str: "goframe",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(gstr.Join(err.Strings(), "\n"))
|
||||
}
|
||||
|
||||
@ -1174,7 +1174,7 @@ func ExampleValidator_Float() {
|
||||
Str: "goframe",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(err)
|
||||
}
|
||||
|
||||
@ -1203,7 +1203,7 @@ func ExampleValidator_Boolean() {
|
||||
Str3: "goframe",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(gstr.Join(err.Strings(), "\n"))
|
||||
}
|
||||
|
||||
@ -1226,7 +1226,7 @@ func ExampleValidator_Same() {
|
||||
Password2: "goframe.net",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
||||
@ -1248,7 +1248,7 @@ func ExampleValidator_Different() {
|
||||
OtherMailAddr: "gf@goframe.org",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
||||
@ -1270,7 +1270,7 @@ func ExampleValidator_In() {
|
||||
Gender: 3,
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
||||
@ -1292,7 +1292,7 @@ func ExampleValidator_NotIn() {
|
||||
InvalidIndex: 1,
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
||||
@ -1314,7 +1314,7 @@ func ExampleValidator_Regex() {
|
||||
Regex3: "10000",
|
||||
}
|
||||
)
|
||||
if err := g.Validator().CheckStruct(ctx, req); err != nil {
|
||||
if err := g.Validator().Data(req).Run(ctx); err != nil {
|
||||
fmt.Print(gstr.Join(err.Strings(), "\n"))
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,7 @@ func Test_CheckMap1(t *testing.T) {
|
||||
"id": "required|between:1,100",
|
||||
"name": "required|length:6,16",
|
||||
}
|
||||
if m := gvalid.CheckMap(context.TODO(), data, rules); m == nil {
|
||||
if m := g.Validator().Data(data).Rules(rules).Run(context.TODO()); m == nil {
|
||||
t.Error("CheckMap校验失败")
|
||||
} else {
|
||||
t.Assert(len(m.Maps()), 2)
|
||||
@ -39,7 +39,7 @@ func Test_CheckMap1(t *testing.T) {
|
||||
func Test_CheckMap2(t *testing.T) {
|
||||
var params interface{}
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
if err := gvalid.CheckMap(context.TODO(), params, nil, nil); err == nil {
|
||||
if err := g.Validator().Data(params).Rules(nil).Messages(nil).Run(context.TODO()); err == nil {
|
||||
t.Assert(err, nil)
|
||||
}
|
||||
})
|
||||
@ -59,7 +59,7 @@ func Test_CheckMap2(t *testing.T) {
|
||||
"length": "名称长度为{min}到{max}个字符",
|
||||
},
|
||||
}
|
||||
if m := gvalid.CheckMap(context.TODO(), kvmap, rules, msgs); m == nil {
|
||||
if m := g.Validator().Data(kvmap).Rules(rules).Messages(msgs).Run(context.TODO()); m == nil {
|
||||
t.Error("CheckMap校验失败")
|
||||
}
|
||||
|
||||
@ -78,7 +78,7 @@ func Test_CheckMap2(t *testing.T) {
|
||||
"length": "名称长度为{min}到{max}个字符",
|
||||
},
|
||||
}
|
||||
if m := gvalid.CheckMap(context.TODO(), kvmap, rules, msgs); m != nil {
|
||||
if m := g.Validator().Data(kvmap).Rules(rules).Messages(msgs).Run(context.TODO()); m != nil {
|
||||
t.Error(m)
|
||||
}
|
||||
|
||||
@ -97,7 +97,7 @@ func Test_CheckMap2(t *testing.T) {
|
||||
"length": "名称长度为{min}到{max}个字符",
|
||||
},
|
||||
}
|
||||
if m := gvalid.CheckMap(context.TODO(), kvmap, rules, msgs); m != nil {
|
||||
if m := g.Validator().Data(kvmap).Rules(rules).Messages(msgs).Run(context.TODO()); m != nil {
|
||||
t.Error(m)
|
||||
}
|
||||
|
||||
@ -116,7 +116,7 @@ func Test_CheckMap2(t *testing.T) {
|
||||
"length": "名称长度为{min}到{max}个字符",
|
||||
},
|
||||
}
|
||||
if m := gvalid.CheckMap(context.TODO(), kvmap, rules2, msgs); m != nil {
|
||||
if m := g.Validator().Data(kvmap).Rules(rules2).Messages(msgs).Run(context.TODO()); m != nil {
|
||||
t.Error(m)
|
||||
}
|
||||
|
||||
@ -135,7 +135,7 @@ func Test_CheckMap2(t *testing.T) {
|
||||
"length": "名称长度为{min}到{max}个字符",
|
||||
},
|
||||
}
|
||||
if m := gvalid.CheckMap(context.TODO(), kvmap, rules2, msgs); m != nil {
|
||||
if m := g.Validator().Data(kvmap).Rules(rules2).Messages(msgs).Run(context.TODO()); m != nil {
|
||||
t.Error(m)
|
||||
}
|
||||
|
||||
@ -154,7 +154,7 @@ func Test_CheckMap2(t *testing.T) {
|
||||
"length": "名称长度为{min}到{max}个字符",
|
||||
},
|
||||
}
|
||||
if m := gvalid.CheckMap(context.TODO(), kvmap, rules2, msgs); m != nil {
|
||||
if m := g.Validator().Data(kvmap).Rules(rules2).Messages(msgs).Run(context.TODO()); m != nil {
|
||||
t.Error(m)
|
||||
}
|
||||
}
|
||||
@ -167,7 +167,7 @@ func Test_CheckMapWithNilAndNotRequiredField(t *testing.T) {
|
||||
"id": "required",
|
||||
"name": "length:4,16",
|
||||
}
|
||||
if m := gvalid.CheckMap(context.TODO(), data, rules); m != nil {
|
||||
if m := g.Validator().Data(data).Rules(rules).Run(context.TODO()); m != nil {
|
||||
t.Error(m)
|
||||
}
|
||||
}
|
||||
@ -184,7 +184,7 @@ func Test_Sequence(t *testing.T) {
|
||||
"password@required|length:6,16|same:password2#密码不能为空|密码长度应当在{min}到{max}之间|两次密码输入不相等",
|
||||
"password2@required|length:6,16#",
|
||||
}
|
||||
err := gvalid.CheckMap(context.TODO(), params, rules)
|
||||
err := g.Validator().Data(params).Rules(rules).Run(context.TODO())
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(len(err.Map()), 2)
|
||||
t.Assert(err.Map()["required"], "账号不能为空")
|
||||
@ -224,7 +224,7 @@ func Test_Map_Bail(t *testing.T) {
|
||||
"password@required|length:6,16|same:password2#密码不能为空|密码长度应当在{min}到{max}之间|两次密码输入不相等",
|
||||
"password2@required|length:6,16#",
|
||||
}
|
||||
err := g.Validator().Bail().Rules(rules).CheckMap(ctx, params)
|
||||
err := g.Validator().Bail().Rules(rules).Data(params).Run(ctx)
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(err.String(), "账号不能为空")
|
||||
})
|
||||
@ -240,7 +240,7 @@ func Test_Map_Bail(t *testing.T) {
|
||||
"password@required|length:6,16|same:password2#密码不能为空|密码长度应当在{min}到{max}之间|两次密码输入不相等",
|
||||
"password2@required|length:6,16#",
|
||||
}
|
||||
err := g.Validator().Bail().Rules(rules).CheckMap(ctx, params)
|
||||
err := g.Validator().Bail().Rules(rules).Data(params).Run(ctx)
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(err.String(), "账号不能为空")
|
||||
})
|
||||
|
@ -14,7 +14,6 @@ import (
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/gtime"
|
||||
"github.com/gogf/gf/v2/test/gtest"
|
||||
"github.com/gogf/gf/v2/util/gvalid"
|
||||
)
|
||||
|
||||
func Test_CheckStruct(t *testing.T) {
|
||||
@ -35,7 +34,7 @@ func Test_CheckStruct(t *testing.T) {
|
||||
"Age": "年龄为18到30周岁",
|
||||
}
|
||||
obj := &Object{"john", 16}
|
||||
err := gvalid.CheckStruct(context.TODO(), obj, rules, msgs)
|
||||
err := g.Validator().Data(obj).Rules(rules).Messages(msgs).Run(context.TODO())
|
||||
t.Assert(err, nil)
|
||||
})
|
||||
|
||||
@ -56,7 +55,7 @@ func Test_CheckStruct(t *testing.T) {
|
||||
"Age": "年龄为18到30周岁",
|
||||
}
|
||||
obj := &Object{"john", 16}
|
||||
err := gvalid.CheckStruct(context.TODO(), obj, rules, msgs)
|
||||
err := g.Validator().Data(obj).Rules(rules).Messages(msgs).Run(context.TODO())
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(len(err.Maps()), 2)
|
||||
t.Assert(err.Maps()["Name"]["required"], "")
|
||||
@ -81,7 +80,7 @@ func Test_CheckStruct(t *testing.T) {
|
||||
"Age": "年龄为18到30周岁",
|
||||
}
|
||||
obj := &Object{"john", 16}
|
||||
err := gvalid.CheckStruct(context.TODO(), obj, rules, msgs)
|
||||
err := g.Validator().Data(obj).Rules(rules).Messages(msgs).Run(context.TODO())
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(len(err.Maps()), 2)
|
||||
t.Assert(err.Maps()["Name"]["required"], "")
|
||||
@ -106,7 +105,7 @@ func Test_CheckStruct(t *testing.T) {
|
||||
"Age": "年龄为18到30周岁",
|
||||
}
|
||||
obj := &Object{"john", 16}
|
||||
err := gvalid.CheckStruct(context.TODO(), obj, rules, msgs)
|
||||
err := g.Validator().Data(obj).Rules(rules).Messages(msgs).Run(context.TODO())
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(len(err.Maps()), 2)
|
||||
t.Assert(err.Maps()["Name"]["required"], "")
|
||||
@ -120,7 +119,7 @@ func Test_CheckStruct(t *testing.T) {
|
||||
Password string `json:"password" gvalid:"password@required#登录密码不能为空"`
|
||||
}
|
||||
var login LoginRequest
|
||||
err := gvalid.CheckStruct(context.TODO(), login, nil)
|
||||
err := g.Validator().Data(login).Rules(nil).Run(context.TODO())
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(len(err.Maps()), 2)
|
||||
t.Assert(err.Maps()["username"]["required"], "用户名不能为空")
|
||||
@ -133,7 +132,7 @@ func Test_CheckStruct(t *testing.T) {
|
||||
Password string `json:"password" gvalid:"@required#登录密码不能为空"`
|
||||
}
|
||||
var login LoginRequest
|
||||
err := gvalid.CheckStruct(context.TODO(), login, nil)
|
||||
err := g.Validator().Data(login).Rules(nil).Run(context.TODO())
|
||||
t.Assert(err, nil)
|
||||
})
|
||||
|
||||
@ -143,7 +142,7 @@ func Test_CheckStruct(t *testing.T) {
|
||||
Password string `json:"password" gvalid:"password@required#登录密码不能为空"`
|
||||
}
|
||||
var login LoginRequest
|
||||
err := gvalid.CheckStruct(context.TODO(), login, nil)
|
||||
err := g.Validator().Data(login).Rules(nil).Run(context.TODO())
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(err.Maps()["password"]["required"], "登录密码不能为空")
|
||||
})
|
||||
@ -161,7 +160,7 @@ func Test_CheckStruct(t *testing.T) {
|
||||
Username: "john",
|
||||
Password: "123456",
|
||||
}
|
||||
err := gvalid.CheckStruct(context.TODO(), user, nil)
|
||||
err := g.Validator().Data(user).Rules(nil).Run(context.TODO())
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(len(err.Maps()), 1)
|
||||
t.Assert(err.Maps()["uid"]["min"], "ID不能为空")
|
||||
@ -184,7 +183,7 @@ func Test_CheckStruct(t *testing.T) {
|
||||
"username@required#用户名不能为空",
|
||||
}
|
||||
|
||||
err := gvalid.CheckStruct(context.TODO(), user, rules)
|
||||
err := g.Validator().Data(user).Rules(rules).Run(context.TODO())
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(len(err.Maps()), 1)
|
||||
t.Assert(err.Maps()["uid"]["min"], "ID不能为空")
|
||||
@ -202,7 +201,7 @@ func Test_CheckStruct(t *testing.T) {
|
||||
Username: "john",
|
||||
Password: "123456",
|
||||
}
|
||||
err := gvalid.CheckStruct(context.TODO(), user, nil)
|
||||
err := g.Validator().Data(user).Rules(nil).Run(context.TODO())
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(len(err.Maps()), 1)
|
||||
})
|
||||
@ -220,7 +219,7 @@ func Test_CheckStruct(t *testing.T) {
|
||||
Username: "john",
|
||||
Password: "123456",
|
||||
}
|
||||
err := gvalid.CheckStruct(context.TODO(), user, nil)
|
||||
err := g.Validator().Data(user).Rules(nil).Run(context.TODO())
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(len(err.Maps()), 1)
|
||||
t.Assert(err.Maps()["uid"]["min"], "ID不能为空")
|
||||
@ -249,7 +248,7 @@ func Test_CheckStruct_EmbeddedObject_Attribute(t *testing.T) {
|
||||
obj.Type = 1
|
||||
obj.Name = "john"
|
||||
obj.Time = gtime.Now()
|
||||
err := gvalid.CheckStruct(context.TODO(), obj, rules, ruleMsg)
|
||||
err := g.Validator().Data(obj).Rules(rules).Messages(ruleMsg).Run(context.TODO())
|
||||
t.Assert(err, nil)
|
||||
})
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
@ -273,7 +272,7 @@ func Test_CheckStruct_EmbeddedObject_Attribute(t *testing.T) {
|
||||
obj := &Object{}
|
||||
obj.Type = 1
|
||||
obj.Name = "john"
|
||||
err := gvalid.CheckStruct(context.TODO(), obj, rules, ruleMsg)
|
||||
err := g.Validator().Data(obj).Rules(rules).Messages(ruleMsg).Run(context.TODO())
|
||||
t.Assert(err, nil)
|
||||
})
|
||||
}
|
||||
@ -296,7 +295,7 @@ func Test_CheckStruct_With_EmbeddedObject(t *testing.T) {
|
||||
Pass2: "2",
|
||||
},
|
||||
}
|
||||
err := gvalid.CheckStruct(context.TODO(), user, nil)
|
||||
err := g.Validator().Data(user).Rules(nil).Run(context.TODO())
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(err.Maps()["name"], g.Map{"required": "请输入您的姓名"})
|
||||
t.Assert(err.Maps()["password1"], g.Map{"same": "您两次输入的密码不一致"})
|
||||
@ -322,7 +321,7 @@ func Test_CheckStruct_With_StructAttribute(t *testing.T) {
|
||||
Pass2: "2",
|
||||
},
|
||||
}
|
||||
err := gvalid.CheckStruct(context.TODO(), user, nil)
|
||||
err := g.Validator().Data(user).Rules(nil).Run(context.TODO())
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(err.Maps()["name"], g.Map{"required": "请输入您的姓名"})
|
||||
t.Assert(err.Maps()["password1"], g.Map{"same": "您两次输入的密码不一致"})
|
||||
@ -341,7 +340,7 @@ func Test_CheckStruct_Optional(t *testing.T) {
|
||||
Page: 1,
|
||||
Size: 10,
|
||||
}
|
||||
err := gvalid.CheckStruct(context.TODO(), obj, nil)
|
||||
err := g.Validator().Data(obj).Rules(nil).Run(context.TODO())
|
||||
t.Assert(err, nil)
|
||||
})
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
@ -354,7 +353,7 @@ func Test_CheckStruct_Optional(t *testing.T) {
|
||||
Page: 1,
|
||||
Size: 10,
|
||||
}
|
||||
err := gvalid.CheckStruct(context.TODO(), obj, nil)
|
||||
err := g.Validator().Data(obj).Rules(nil).Run(context.TODO())
|
||||
t.Assert(err, nil)
|
||||
})
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
@ -367,7 +366,7 @@ func Test_CheckStruct_Optional(t *testing.T) {
|
||||
Page: 1,
|
||||
Size: 10,
|
||||
}
|
||||
err := gvalid.CheckStruct(context.TODO(), obj, nil)
|
||||
err := g.Validator().Data(obj).Rules(nil).Run(context.TODO())
|
||||
t.Assert(err.String(), "project id must between 1, 10000")
|
||||
})
|
||||
}
|
||||
@ -383,7 +382,7 @@ func Test_CheckStruct_NoTag(t *testing.T) {
|
||||
Page: 1,
|
||||
Size: 10,
|
||||
}
|
||||
err := gvalid.CheckStruct(context.TODO(), obj, nil)
|
||||
err := g.Validator().Data(obj).Rules(nil).Run(context.TODO())
|
||||
t.Assert(err, nil)
|
||||
})
|
||||
}
|
||||
@ -400,7 +399,7 @@ func Test_CheckStruct_InvalidRule(t *testing.T) {
|
||||
Age: 18,
|
||||
Phone: "123",
|
||||
}
|
||||
err := gvalid.CheckStruct(context.TODO(), obj, nil)
|
||||
err := g.Validator().Data(obj).Rules(nil).Run(context.TODO())
|
||||
t.AssertNE(err, nil)
|
||||
})
|
||||
}
|
||||
@ -415,7 +414,12 @@ func TestValidator_CheckStructWithData(t *testing.T) {
|
||||
Uid: 1,
|
||||
Nickname: "john",
|
||||
}
|
||||
t.Assert(gvalid.CheckStructWithData(context.TODO(), data, g.Map{"uid": 1, "nickname": "john"}, nil), nil)
|
||||
t.Assert(g.Validator().Data(
|
||||
data,
|
||||
g.Map{"uid": 1, "nickname": "john"},
|
||||
).Run(context.TODO()),
|
||||
nil,
|
||||
)
|
||||
})
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
type UserApiSearch struct {
|
||||
@ -423,7 +427,7 @@ func TestValidator_CheckStructWithData(t *testing.T) {
|
||||
Nickname string `v:"required-with:uid"`
|
||||
}
|
||||
data := UserApiSearch{}
|
||||
t.AssertNE(gvalid.CheckStructWithData(context.TODO(), data, g.Map{}, nil), nil)
|
||||
t.AssertNE(g.Validator().Data(data, g.Map{}).Run(context.TODO()), nil)
|
||||
})
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
type UserApiSearch struct {
|
||||
@ -433,7 +437,7 @@ func TestValidator_CheckStructWithData(t *testing.T) {
|
||||
data := UserApiSearch{
|
||||
Uid: 1,
|
||||
}
|
||||
t.AssertNE(gvalid.CheckStructWithData(context.TODO(), data, g.Map{}, nil), nil)
|
||||
t.AssertNE(g.Validator().Data(data, g.Map{}).Run(context.TODO()), nil)
|
||||
})
|
||||
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
@ -447,7 +451,7 @@ func TestValidator_CheckStructWithData(t *testing.T) {
|
||||
StartTime: nil,
|
||||
EndTime: nil,
|
||||
}
|
||||
t.Assert(gvalid.CheckStructWithData(context.TODO(), data, g.Map{}, nil), nil)
|
||||
t.Assert(g.Validator().Data(data, g.Map{}).Run(context.TODO()), nil)
|
||||
})
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
type UserApiSearch struct {
|
||||
@ -460,6 +464,6 @@ func TestValidator_CheckStructWithData(t *testing.T) {
|
||||
StartTime: gtime.Now(),
|
||||
EndTime: nil,
|
||||
}
|
||||
t.AssertNE(gvalid.CheckStructWithData(context.TODO(), data, g.Map{"start_time": gtime.Now()}, nil), nil)
|
||||
t.AssertNE(g.Validator().Data(data, g.Map{"start_time": gtime.Now()}).Run(context.TODO()), nil)
|
||||
})
|
||||
}
|
||||
|
@ -11,20 +11,19 @@ import (
|
||||
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/test/gtest"
|
||||
"github.com/gogf/gf/v2/util/gvalid"
|
||||
)
|
||||
|
||||
func Test_CI(t *testing.T) {
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
err := gvalid.CheckValue(ctx, "id", "in:Id,Name", nil)
|
||||
err := g.Validator().Data("id").Rules("in:Id,Name").Messages(nil).Run(ctx)
|
||||
t.AssertNE(err, nil)
|
||||
})
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
err := gvalid.CheckValue(ctx, "id", "ci|in:Id,Name", nil)
|
||||
err := g.Validator().Data("id").Rules("ci|in:Id,Name").Messages(nil).Run(ctx)
|
||||
t.AssertNil(err)
|
||||
})
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
err := g.Validator().CaseInsensitive().Rules("in:Id,Name").CheckValue(ctx, "id")
|
||||
err := g.Validator().CaseInsensitive().Rules("in:Id,Name").Data("id").Run(ctx)
|
||||
t.AssertNil(err)
|
||||
})
|
||||
}
|
||||
|
@ -11,8 +11,8 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/test/gtest"
|
||||
"github.com/gogf/gf/v2/util/gvalid"
|
||||
)
|
||||
|
||||
func Test_Map(t *testing.T) {
|
||||
@ -20,7 +20,7 @@ func Test_Map(t *testing.T) {
|
||||
var (
|
||||
rule = "ipv4"
|
||||
val = "0.0.0"
|
||||
err = gvalid.CheckValue(context.TODO(), val, rule, nil)
|
||||
err = g.Validator().Data(val).Rules(rule).Messages(nil).Run(context.TODO())
|
||||
msg = map[string]string{
|
||||
"ipv4": "The value `0.0.0` is not a valid IPv4 address",
|
||||
}
|
||||
@ -34,7 +34,7 @@ func Test_FirstString(t *testing.T) {
|
||||
var (
|
||||
rule = "ipv4"
|
||||
val = "0.0.0"
|
||||
err = gvalid.CheckValue(context.TODO(), val, rule, nil)
|
||||
err = g.Validator().Data(val).Rules(rule).Messages(nil).Run(context.TODO())
|
||||
)
|
||||
t.Assert(err.FirstError(), "The value `0.0.0` is not a valid IPv4 address")
|
||||
})
|
||||
@ -46,7 +46,7 @@ func Test_CustomError1(t *testing.T) {
|
||||
"integer": "请输入一个整数",
|
||||
"length": "参数长度不对啊老铁",
|
||||
}
|
||||
e := gvalid.CheckValue(context.TODO(), "6.66", rule, msgs)
|
||||
e := g.Validator().Data("6.66").Rules(rule).Messages(msgs).Run(context.TODO())
|
||||
if e == nil || len(e.Map()) != 2 {
|
||||
t.Error("规则校验失败")
|
||||
} else {
|
||||
@ -66,7 +66,7 @@ func Test_CustomError1(t *testing.T) {
|
||||
func Test_CustomError2(t *testing.T) {
|
||||
rule := "integer|length:6,16"
|
||||
msgs := "请输入一个整数|参数长度不对啊老铁"
|
||||
e := gvalid.CheckValue(context.TODO(), "6.66", rule, msgs)
|
||||
e := g.Validator().Data("6.66").Rules(rule).Messages(msgs).Run(context.TODO())
|
||||
if e == nil || len(e.Map()) != 2 {
|
||||
t.Error("规则校验失败")
|
||||
} else {
|
||||
|
@ -34,9 +34,9 @@ func Test_CustomRule1(t *testing.T) {
|
||||
)
|
||||
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
err := gvalid.CheckValue(context.TODO(), "123456", rule, "custom message")
|
||||
err := g.Validator().Data("123456").Rules(rule).Messages("custom message").Run(ctx)
|
||||
t.Assert(err.String(), "custom message")
|
||||
err = gvalid.CheckValue(context.TODO(), "123456", rule, "custom message", g.Map{"data": "123456"})
|
||||
err = g.Validator().Data("123456", g.Map{"data": "123456"}).Rules(rule).Messages("custom message").Run(ctx)
|
||||
t.Assert(err, nil)
|
||||
})
|
||||
// Error with struct validation.
|
||||
@ -49,7 +49,7 @@ func Test_CustomRule1(t *testing.T) {
|
||||
Value: "123",
|
||||
Data: "123456",
|
||||
}
|
||||
err := gvalid.CheckStruct(context.TODO(), st, nil)
|
||||
err := g.Validator().Data(st).Rules(nil).Run(ctx)
|
||||
t.Assert(err.String(), "自定义错误")
|
||||
})
|
||||
// No error with struct validation.
|
||||
@ -62,7 +62,7 @@ func Test_CustomRule1(t *testing.T) {
|
||||
Value: "123456",
|
||||
Data: "123456",
|
||||
}
|
||||
err := gvalid.CheckStruct(context.TODO(), st, nil)
|
||||
err := g.Validator().Data(st).Rules(nil).Run(ctx)
|
||||
t.Assert(err, nil)
|
||||
})
|
||||
}
|
||||
@ -79,8 +79,8 @@ func Test_CustomRule2(t *testing.T) {
|
||||
// Check.
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
errStr := "data map should not be empty"
|
||||
t.Assert(gvalid.CheckValue(context.TODO(), g.Map{}, rule, errStr).String(), errStr)
|
||||
t.Assert(gvalid.CheckValue(context.TODO(), g.Map{"k": "v"}, rule, errStr), nil)
|
||||
t.Assert(g.Validator().Data(g.Map{}).Messages(errStr).Rules(rule).Run(ctx), errStr)
|
||||
t.Assert(g.Validator().Data(g.Map{"k": "v"}).Rules(rule).Messages(errStr).Run(ctx), nil)
|
||||
})
|
||||
// Error with struct validation.
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
@ -92,7 +92,7 @@ func Test_CustomRule2(t *testing.T) {
|
||||
Value: map[string]string{},
|
||||
Data: "123456",
|
||||
}
|
||||
err := gvalid.CheckStruct(context.TODO(), st, nil)
|
||||
err := g.Validator().Data(st).Rules(nil).Run(ctx)
|
||||
t.Assert(err.String(), "自定义错误")
|
||||
})
|
||||
// No error with struct validation.
|
||||
@ -105,7 +105,7 @@ func Test_CustomRule2(t *testing.T) {
|
||||
Value: map[string]string{"k": "v"},
|
||||
Data: "123456",
|
||||
}
|
||||
err := gvalid.CheckStruct(context.TODO(), st, nil)
|
||||
err := g.Validator().Data(st).Rules(nil).Run(ctx)
|
||||
t.Assert(err, nil)
|
||||
})
|
||||
}
|
||||
@ -122,9 +122,9 @@ func Test_CustomRule_AllowEmpty(t *testing.T) {
|
||||
// Check.
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
errStr := "error"
|
||||
t.Assert(gvalid.CheckValue(context.TODO(), "", rule, errStr), nil)
|
||||
t.Assert(gvalid.CheckValue(context.TODO(), "gf", rule, errStr), nil)
|
||||
t.Assert(gvalid.CheckValue(context.TODO(), "gf2", rule, errStr).String(), errStr)
|
||||
t.Assert(g.Validator().Data("").Rules(rule).Messages(errStr).Run(ctx), "")
|
||||
t.Assert(g.Validator().Data("gf").Rules(rule).Messages(errStr).Run(ctx), "")
|
||||
t.Assert(g.Validator().Data("gf2").Rules(rule).Messages(errStr).Run(ctx), errStr)
|
||||
})
|
||||
// Error with struct validation.
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
@ -136,7 +136,7 @@ func Test_CustomRule_AllowEmpty(t *testing.T) {
|
||||
Value: "",
|
||||
Data: "123456",
|
||||
}
|
||||
err := gvalid.CheckStruct(context.TODO(), st, nil)
|
||||
err := g.Validator().Data(st).Rules(nil).Run(ctx)
|
||||
t.Assert(err, nil)
|
||||
})
|
||||
// No error with struct validation.
|
||||
@ -149,7 +149,7 @@ func Test_CustomRule_AllowEmpty(t *testing.T) {
|
||||
Value: "john",
|
||||
Data: "123456",
|
||||
}
|
||||
err := gvalid.CheckStruct(context.TODO(), st, nil)
|
||||
err := g.Validator().Data(st).Rules(nil).Run(ctx)
|
||||
t.Assert(err.String(), "自定义错误")
|
||||
})
|
||||
}
|
||||
@ -170,14 +170,15 @@ func TestValidator_RuleFunc(t *testing.T) {
|
||||
err := g.Validator().Rules(ruleName).
|
||||
Messages("custom message").
|
||||
RuleFunc(ruleName, ruleFunc).
|
||||
CheckValue(ctx, "123456")
|
||||
Data("123456").
|
||||
Run(ctx)
|
||||
t.Assert(err.String(), "custom message")
|
||||
err = g.Validator().
|
||||
Rules(ruleName).
|
||||
Messages("custom message").
|
||||
Data(g.Map{"data": "123456"}).
|
||||
Data("123456", g.Map{"data": "123456"}).
|
||||
RuleFunc(ruleName, ruleFunc).
|
||||
CheckValue(ctx, "123456")
|
||||
Run(ctx)
|
||||
t.AssertNil(err)
|
||||
})
|
||||
// Error with struct validation.
|
||||
@ -190,7 +191,7 @@ func TestValidator_RuleFunc(t *testing.T) {
|
||||
Value: "123",
|
||||
Data: "123456",
|
||||
}
|
||||
err := g.Validator().RuleFunc(ruleName, ruleFunc).CheckStruct(ctx, st)
|
||||
err := g.Validator().RuleFunc(ruleName, ruleFunc).Data(st).Run(ctx)
|
||||
t.Assert(err.String(), "自定义错误")
|
||||
})
|
||||
// No error with struct validation.
|
||||
@ -203,7 +204,7 @@ func TestValidator_RuleFunc(t *testing.T) {
|
||||
Value: "123456",
|
||||
Data: "123456",
|
||||
}
|
||||
err := g.Validator().RuleFunc(ruleName, ruleFunc).CheckStruct(ctx, st)
|
||||
err := g.Validator().RuleFunc(ruleName, ruleFunc).Data(st).Run(ctx)
|
||||
t.AssertNil(err)
|
||||
})
|
||||
}
|
||||
@ -226,16 +227,15 @@ func TestValidator_RuleFuncMap(t *testing.T) {
|
||||
Messages("custom message").
|
||||
RuleFuncMap(map[string]gvalid.RuleFunc{
|
||||
ruleName: ruleFunc,
|
||||
}).CheckValue(ctx, "123456")
|
||||
}).Data("123456").Run(ctx)
|
||||
t.Assert(err.String(), "custom message")
|
||||
err = g.Validator().
|
||||
Rules(ruleName).
|
||||
Messages("custom message").
|
||||
Data(g.Map{"data": "123456"}).
|
||||
Data("123456", g.Map{"data": "123456"}).
|
||||
RuleFuncMap(map[string]gvalid.RuleFunc{
|
||||
ruleName: ruleFunc,
|
||||
}).
|
||||
CheckValue(ctx, "123456")
|
||||
}).Run(ctx)
|
||||
t.AssertNil(err)
|
||||
})
|
||||
// Error with struct validation.
|
||||
@ -251,7 +251,7 @@ func TestValidator_RuleFuncMap(t *testing.T) {
|
||||
err := g.Validator().
|
||||
RuleFuncMap(map[string]gvalid.RuleFunc{
|
||||
ruleName: ruleFunc,
|
||||
}).CheckStruct(ctx, st)
|
||||
}).Data(st).Run(ctx)
|
||||
t.Assert(err.String(), "自定义错误")
|
||||
})
|
||||
// No error with struct validation.
|
||||
@ -267,7 +267,7 @@ func TestValidator_RuleFuncMap(t *testing.T) {
|
||||
err := g.Validator().
|
||||
RuleFuncMap(map[string]gvalid.RuleFunc{
|
||||
ruleName: ruleFunc,
|
||||
}).CheckStruct(ctx, st)
|
||||
}).Data(st).Run(ctx)
|
||||
t.AssertNil(err)
|
||||
})
|
||||
}
|
||||
|
@ -24,14 +24,14 @@ func TestValidator_I18n(t *testing.T) {
|
||||
validator = gvalid.New().I18n(i18nManager)
|
||||
)
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
err = validator.Rules("required").CheckValue(ctx, "")
|
||||
err = validator.Rules("required").Data("").Run(ctx)
|
||||
t.Assert(err.String(), "The field is required")
|
||||
|
||||
err = validator.Rules("required").CheckValue(ctxCn, "")
|
||||
err = validator.Rules("required").Data("").Run(ctxCn)
|
||||
t.Assert(err.String(), "字段不能为空")
|
||||
})
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
err = validator.Rules("required").Messages("CustomMessage").CheckValue(ctxCn, "")
|
||||
err = validator.Rules("required").Messages("CustomMessage").Data("").Run(ctxCn)
|
||||
t.Assert(err.String(), "自定义错误")
|
||||
})
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
@ -44,7 +44,7 @@ func TestValidator_I18n(t *testing.T) {
|
||||
Page: 1,
|
||||
Size: 10,
|
||||
}
|
||||
err = validator.CheckStruct(ctxCn, obj)
|
||||
err = validator.Data(obj).Run(ctxCn)
|
||||
t.Assert(err.String(), "项目ID必须大于等于1并且要小于等于10000")
|
||||
})
|
||||
}
|
||||
|
@ -12,7 +12,6 @@ import (
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
|
||||
"github.com/gogf/gf/v2/test/gtest"
|
||||
"github.com/gogf/gf/v2/util/gvalid"
|
||||
)
|
||||
|
||||
func Test_CheckStruct_Recursive_Struct(t *testing.T) {
|
||||
@ -33,7 +32,7 @@ func Test_CheckStruct_Recursive_Struct(t *testing.T) {
|
||||
Pass2: "2",
|
||||
},
|
||||
}
|
||||
err := gvalid.CheckStruct(ctx, user, nil)
|
||||
err := g.Validator().Data(user).Run(ctx)
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(err.Maps()["Name"], g.Map{"required": "The Name field is required"})
|
||||
t.Assert(err.Maps()["Pass1"], g.Map{"same": "The Pass1 value `1` must be the same as field Pass2"})
|
||||
@ -60,7 +59,7 @@ func Test_CheckStruct_Recursive_Struct_WithData(t *testing.T) {
|
||||
"Pass2": 200,
|
||||
},
|
||||
}
|
||||
err := g.Validator().Data(data).CheckStruct(ctx, user)
|
||||
err := g.Validator().Data(user, data).Run(ctx)
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(err.Maps()["Name"], nil)
|
||||
t.Assert(err.Maps()["Pass1"], g.Map{"same": "The Pass1 value `100` must be the same as field Pass2"})
|
||||
@ -92,7 +91,7 @@ func Test_CheckStruct_Recursive_SliceStruct(t *testing.T) {
|
||||
},
|
||||
},
|
||||
}
|
||||
err := gvalid.CheckStruct(ctx, user, nil)
|
||||
err := g.Validator().Data(user).Rules(nil).Run(ctx)
|
||||
g.Dump(err.Items())
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(err.Maps()["Name"], g.Map{"required": "The Name field is required"})
|
||||
@ -125,7 +124,7 @@ func Test_CheckStruct_Recursive_SliceStruct_Bail(t *testing.T) {
|
||||
},
|
||||
},
|
||||
}
|
||||
err := g.Validator().Bail().CheckStruct(ctx, user)
|
||||
err := g.Validator().Bail().Data(user).Run(ctx)
|
||||
g.Dump(err.Items())
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(err.Maps()["Name"], nil)
|
||||
@ -146,7 +145,7 @@ func Test_CheckStruct_Recursive_SliceStruct_Required(t *testing.T) {
|
||||
Passes []Pass
|
||||
}
|
||||
user := &User{}
|
||||
err := gvalid.CheckStruct(ctx, user, nil)
|
||||
err := g.Validator().Data(user).Rules(nil).Run(ctx)
|
||||
g.Dump(err.Items())
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(err.Maps()["Name"], g.Map{"required": "The Name field is required"})
|
||||
@ -179,7 +178,7 @@ func Test_CheckStruct_Recursive_MapStruct(t *testing.T) {
|
||||
},
|
||||
},
|
||||
}
|
||||
err := gvalid.CheckStruct(ctx, user, nil)
|
||||
err := g.Validator().Data(user).Rules(nil).Run(ctx)
|
||||
g.Dump(err.Items())
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(err.Maps()["Name"], g.Map{"required": "The Name field is required"})
|
||||
@ -207,7 +206,7 @@ func Test_CheckMap_Recursive_SliceStruct(t *testing.T) {
|
||||
},
|
||||
},
|
||||
}
|
||||
err := gvalid.CheckMap(ctx, user, nil)
|
||||
err := g.Validator().Data(user).Run(ctx)
|
||||
g.Dump(err.Items())
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(err.Maps()["Name"], nil)
|
||||
|
@ -7,7 +7,6 @@
|
||||
package gvalid_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
@ -17,7 +16,6 @@ import (
|
||||
"github.com/gogf/gf/v2/os/gctx"
|
||||
"github.com/gogf/gf/v2/os/gtime"
|
||||
"github.com/gogf/gf/v2/test/gtest"
|
||||
"github.com/gogf/gf/v2/util/gvalid"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -30,9 +28,9 @@ func Test_Check(t *testing.T) {
|
||||
val1 := 0
|
||||
val2 := 7
|
||||
val3 := 20
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.Assert(err1, "InvalidRules: abc:6,16")
|
||||
t.Assert(err2, "InvalidRules: abc:6,16")
|
||||
t.Assert(err3, "InvalidRules: abc:6,16")
|
||||
@ -40,16 +38,16 @@ func Test_Check(t *testing.T) {
|
||||
}
|
||||
|
||||
func Test_Required(t *testing.T) {
|
||||
if m := gvalid.CheckValue(context.TODO(), "1", "required", nil); m != nil {
|
||||
if m := g.Validator().Data("1").Rules("required").Messages(nil).Run(ctx); m != nil {
|
||||
t.Error(m)
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "", "required", nil); m == nil {
|
||||
if m := g.Validator().Data("").Rules("required").Messages(nil).Run(ctx); m == nil {
|
||||
t.Error(m)
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "", "required-if: id,1,age,18", nil, map[string]interface{}{"id": 1, "age": 19}); m == nil {
|
||||
if m := g.Validator().Data("", map[string]interface{}{"id": 1, "age": 19}).Rules("required-if: id,1,age,18").Messages(nil).Run(ctx); m == nil {
|
||||
t.Error("Required校验失败")
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "", "required-if: id,1,age,18", nil, map[string]interface{}{"id": 2, "age": 19}); m != nil {
|
||||
if m := g.Validator().Data("", map[string]interface{}{"id": 2, "age": 19}).Rules("required-if: id,1,age,18").Messages(nil).Run(ctx); m != nil {
|
||||
t.Error("Required校验失败")
|
||||
}
|
||||
}
|
||||
@ -57,20 +55,20 @@ func Test_Required(t *testing.T) {
|
||||
func Test_RequiredIf(t *testing.T) {
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
rule := "required-if:id,1,age,18"
|
||||
t.AssertNE(gvalid.CheckValue(context.TODO(), "", rule, nil, g.Map{"id": 1}), nil)
|
||||
t.Assert(gvalid.CheckValue(context.TODO(), "", rule, nil, g.Map{"id": 0}), nil)
|
||||
t.AssertNE(gvalid.CheckValue(context.TODO(), "", rule, nil, g.Map{"age": 18}), nil)
|
||||
t.Assert(gvalid.CheckValue(context.TODO(), "", rule, nil, g.Map{"age": 20}), nil)
|
||||
t.AssertNE(g.Validator().Data("", g.Map{"id": 1}).Rules(rule).Messages(nil).Run(ctx), nil)
|
||||
t.Assert(g.Validator().Data("", g.Map{"id": 0}).Rules(rule).Messages(nil).Run(ctx), nil)
|
||||
t.AssertNE(g.Validator().Data("", g.Map{"age": 18}).Rules(rule).Messages(nil).Run(ctx), nil)
|
||||
t.Assert(g.Validator().Data("", g.Map{"age": 20}).Rules(rule).Messages(nil).Run(ctx), nil)
|
||||
})
|
||||
}
|
||||
|
||||
func Test_RequiredUnless(t *testing.T) {
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
rule := "required-unless:id,1,age,18"
|
||||
t.Assert(gvalid.CheckValue(context.TODO(), "", rule, nil, g.Map{"id": 1}), nil)
|
||||
t.AssertNE(gvalid.CheckValue(context.TODO(), "", rule, nil, g.Map{"id": 0}), nil)
|
||||
t.Assert(gvalid.CheckValue(context.TODO(), "", rule, nil, g.Map{"age": 18}), nil)
|
||||
t.AssertNE(gvalid.CheckValue(context.TODO(), "", rule, nil, g.Map{"age": 20}), nil)
|
||||
t.Assert(g.Validator().Data("", g.Map{"id": 1}).Rules(rule).Messages(nil).Run(ctx), nil)
|
||||
t.AssertNE(g.Validator().Data("", g.Map{"id": 0}).Rules(rule).Messages(nil).Run(ctx), nil)
|
||||
t.Assert(g.Validator().Data("", g.Map{"age": 18}).Rules(rule).Messages(nil).Run(ctx), nil)
|
||||
t.AssertNE(g.Validator().Data("", g.Map{"age": 20}).Rules(rule).Messages(nil).Run(ctx), nil)
|
||||
})
|
||||
}
|
||||
|
||||
@ -88,9 +86,9 @@ func Test_RequiredWith(t *testing.T) {
|
||||
"id": 100,
|
||||
"name": "john",
|
||||
}
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params1)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params2)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params3)
|
||||
err1 := g.Validator().Data(val1, params1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val1, params2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val1, params3).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.Assert(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.AssertNE(err3, nil)
|
||||
@ -108,9 +106,9 @@ func Test_RequiredWith(t *testing.T) {
|
||||
params3 := g.Map{
|
||||
"time": time.Time{},
|
||||
}
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params1)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params2)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params3)
|
||||
err1 := g.Validator().Data(val1, params1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val1, params2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val1, params3).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.Assert(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -127,9 +125,9 @@ func Test_RequiredWith(t *testing.T) {
|
||||
params3 := g.Map{
|
||||
"time": time.Now(),
|
||||
}
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params1)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params2)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params3)
|
||||
err1 := g.Validator().Data(val1, params1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val1, params2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val1, params3).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.Assert(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.AssertNE(err3, nil)
|
||||
@ -146,7 +144,7 @@ func Test_RequiredWith(t *testing.T) {
|
||||
StartTime: nil,
|
||||
EndTime: nil,
|
||||
}
|
||||
t.Assert(gvalid.CheckStruct(context.TODO(), data, nil), nil)
|
||||
t.Assert(g.Validator().Data(data).Run(ctx), nil)
|
||||
})
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
type UserApiSearch struct {
|
||||
@ -159,7 +157,7 @@ func Test_RequiredWith(t *testing.T) {
|
||||
StartTime: nil,
|
||||
EndTime: gtime.Now(),
|
||||
}
|
||||
t.AssertNE(gvalid.CheckStruct(context.TODO(), data, nil), nil)
|
||||
t.AssertNE(g.Validator().Data(data).Run(ctx), nil)
|
||||
})
|
||||
}
|
||||
|
||||
@ -177,9 +175,9 @@ func Test_RequiredWithAll(t *testing.T) {
|
||||
"id": 100,
|
||||
"name": "john",
|
||||
}
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params1)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params2)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params3)
|
||||
err1 := g.Validator().Data(val1, params1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val1, params2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val1, params3).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.Assert(err1, nil)
|
||||
t.Assert(err2, nil)
|
||||
t.AssertNE(err3, nil)
|
||||
@ -200,9 +198,9 @@ func Test_RequiredWithOut(t *testing.T) {
|
||||
"id": 100,
|
||||
"name": "john",
|
||||
}
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params1)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params2)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params3)
|
||||
err1 := g.Validator().Data(val1, params1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val1, params2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val1, params3).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -223,9 +221,9 @@ func Test_RequiredWithOutAll(t *testing.T) {
|
||||
"id": 100,
|
||||
"name": "john",
|
||||
}
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params1)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params2)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params3)
|
||||
err1 := g.Validator().Data(val1, params1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val1, params2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val1, params3).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.Assert(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -243,14 +241,14 @@ func Test_Date(t *testing.T) {
|
||||
val6 := "2010/11/01"
|
||||
val7 := "2010=11=01"
|
||||
val8 := "123"
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, rule, nil)
|
||||
err5 := gvalid.CheckValue(context.TODO(), val5, rule, nil)
|
||||
err6 := gvalid.CheckValue(context.TODO(), val6, rule, nil)
|
||||
err7 := gvalid.CheckValue(context.TODO(), val7, rule, nil)
|
||||
err8 := gvalid.CheckValue(context.TODO(), val8, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules(rule).Messages(nil).Run(ctx)
|
||||
err5 := g.Validator().Data(val5).Rules(rule).Messages(nil).Run(ctx)
|
||||
err6 := g.Validator().Data(val6).Rules(rule).Messages(nil).Run(ctx)
|
||||
err7 := g.Validator().Data(val7).Rules(rule).Messages(nil).Run(ctx)
|
||||
err8 := g.Validator().Data(val8).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -273,7 +271,7 @@ func Test_Datetime(t *testing.T) {
|
||||
"2010.11.01 12:00:00": false,
|
||||
}
|
||||
for k, v := range m {
|
||||
err := g.Validator().Rules(`datetime`).CheckValue(ctx, k)
|
||||
err := g.Validator().Rules(`datetime`).Data(k).Run(ctx)
|
||||
if v {
|
||||
t.AssertNil(err)
|
||||
} else {
|
||||
@ -291,12 +289,12 @@ func Test_DateFormat(t *testing.T) {
|
||||
val4 := "201011-01"
|
||||
val5 := "2010~11~01"
|
||||
val6 := "2010-11~01"
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, "date-format:Y", nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, "date-format:Ym", nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, "date-format:Y.m", nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, "date-format:Ym-d", nil)
|
||||
err5 := gvalid.CheckValue(context.TODO(), val5, "date-format:Y~m~d", nil)
|
||||
err6 := gvalid.CheckValue(context.TODO(), val6, "date-format:Y~m~d", nil)
|
||||
err1 := g.Validator().Data(val1).Rules("date-format:Y").Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules("date-format:Ym").Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules("date-format:Y.m").Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules("date-format:Ym-d").Messages(nil).Run(ctx)
|
||||
err5 := g.Validator().Data(val5).Rules("date-format:Y~m~d").Messages(nil).Run(ctx)
|
||||
err6 := g.Validator().Data(val6).Rules("date-format:Y~m~d").Messages(nil).Run(ctx)
|
||||
t.Assert(err1, nil)
|
||||
t.Assert(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -307,8 +305,8 @@ func Test_DateFormat(t *testing.T) {
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
t1 := gtime.Now()
|
||||
t2 := time.Time{}
|
||||
err1 := gvalid.CheckValue(context.TODO(), t1, "date-format:Y", nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), t2, "date-format:Y", nil)
|
||||
err1 := g.Validator().Data(t1).Rules("date-format:Y").Run(ctx)
|
||||
err2 := g.Validator().Data(t2).Rules("date-format:Y").Run(ctx)
|
||||
t.Assert(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
})
|
||||
@ -321,10 +319,10 @@ func Test_Email(t *testing.T) {
|
||||
value2 := "m@www@johngcn"
|
||||
value3 := "m-m_m@mail.johng.cn"
|
||||
value4 := "m.m-m@johng.cn"
|
||||
err1 := gvalid.CheckValue(context.TODO(), value1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), value2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), value3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), value4, rule, nil)
|
||||
err1 := g.Validator().Data(value1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(value2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(value3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(value4).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -334,10 +332,10 @@ func Test_Email(t *testing.T) {
|
||||
|
||||
func Test_Phone(t *testing.T) {
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
err1 := gvalid.CheckValue(context.TODO(), "1361990897", "phone", nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), "13619908979", "phone", nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), "16719908979", "phone", nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), "19719908989", "phone", nil)
|
||||
err1 := g.Validator().Data("1361990897").Rules("phone").Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data("13619908979").Rules("phone").Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data("16719908979").Rules("phone").Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data("19719908989").Rules("phone").Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1.String(), nil)
|
||||
t.Assert(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -347,12 +345,12 @@ func Test_Phone(t *testing.T) {
|
||||
|
||||
func Test_PhoneLoose(t *testing.T) {
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
err1 := gvalid.CheckValue(context.TODO(), "13333333333", "phone-loose", nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), "15555555555", "phone-loose", nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), "16666666666", "phone-loose", nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), "23333333333", "phone-loose", nil)
|
||||
err5 := gvalid.CheckValue(context.TODO(), "1333333333", "phone-loose", nil)
|
||||
err6 := gvalid.CheckValue(context.TODO(), "10333333333", "phone-loose", nil)
|
||||
err1 := g.Validator().Data("13333333333").Rules("phone-loose").Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data("15555555555").Rules("phone-loose").Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data("16666666666").Rules("phone-loose").Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data("23333333333").Rules("phone-loose").Messages(nil).Run(ctx)
|
||||
err5 := g.Validator().Data("1333333333").Rules("phone-loose").Messages(nil).Run(ctx)
|
||||
err6 := g.Validator().Data("10333333333").Rules("phone-loose").Messages(nil).Run(ctx)
|
||||
t.Assert(err1, nil)
|
||||
t.Assert(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -370,11 +368,11 @@ func Test_Telephone(t *testing.T) {
|
||||
val3 := "86292651"
|
||||
val4 := "028-8692651"
|
||||
val5 := "0830-8692651"
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, rule, nil)
|
||||
err5 := gvalid.CheckValue(context.TODO(), val5, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules(rule).Messages(nil).Run(ctx)
|
||||
err5 := g.Validator().Data(val5).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -391,11 +389,11 @@ func Test_Passport(t *testing.T) {
|
||||
val3 := "aaaaa"
|
||||
val4 := "aaaaaa"
|
||||
val5 := "a123_456"
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, rule, nil)
|
||||
err5 := gvalid.CheckValue(context.TODO(), val5, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules(rule).Messages(nil).Run(ctx)
|
||||
err5 := g.Validator().Data(val5).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.AssertNE(err3, nil)
|
||||
@ -412,11 +410,11 @@ func Test_Password(t *testing.T) {
|
||||
val3 := "a12345-6"
|
||||
val4 := ">,/;'[09-"
|
||||
val5 := "a123_456"
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, rule, nil)
|
||||
err5 := gvalid.CheckValue(context.TODO(), val5, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules(rule).Messages(nil).Run(ctx)
|
||||
err5 := g.Validator().Data(val5).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -435,13 +433,13 @@ func Test_Password2(t *testing.T) {
|
||||
val5 := "a123_456"
|
||||
val6 := "Nant1986"
|
||||
val7 := "Nant1986!"
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, rule, nil)
|
||||
err5 := gvalid.CheckValue(context.TODO(), val5, rule, nil)
|
||||
err6 := gvalid.CheckValue(context.TODO(), val6, rule, nil)
|
||||
err7 := gvalid.CheckValue(context.TODO(), val7, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules(rule).Messages(nil).Run(ctx)
|
||||
err5 := g.Validator().Data(val5).Rules(rule).Messages(nil).Run(ctx)
|
||||
err6 := g.Validator().Data(val6).Rules(rule).Messages(nil).Run(ctx)
|
||||
err7 := g.Validator().Data(val7).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.AssertNE(err3, nil)
|
||||
@ -462,13 +460,13 @@ func Test_Password3(t *testing.T) {
|
||||
val5 := "a123_456"
|
||||
val6 := "Nant1986"
|
||||
val7 := "Nant1986!"
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, rule, nil)
|
||||
err5 := gvalid.CheckValue(context.TODO(), val5, rule, nil)
|
||||
err6 := gvalid.CheckValue(context.TODO(), val6, rule, nil)
|
||||
err7 := gvalid.CheckValue(context.TODO(), val7, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules(rule).Messages(nil).Run(ctx)
|
||||
err5 := g.Validator().Data(val5).Rules(rule).Messages(nil).Run(ctx)
|
||||
err6 := g.Validator().Data(val6).Rules(rule).Messages(nil).Run(ctx)
|
||||
err7 := g.Validator().Data(val7).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.AssertNE(err3, nil)
|
||||
@ -484,8 +482,8 @@ func Test_Postcode(t *testing.T) {
|
||||
rule := "postcode"
|
||||
val1 := "12345"
|
||||
val2 := "610036"
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.Assert(err2, nil)
|
||||
})
|
||||
@ -499,11 +497,11 @@ func Test_ResidentId(t *testing.T) {
|
||||
val3 := "311128500121201"
|
||||
val4 := "510521198607185367"
|
||||
val5 := "51052119860718536x"
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, rule, nil)
|
||||
err5 := gvalid.CheckValue(context.TODO(), val5, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules(rule).Messages(nil).Run(ctx)
|
||||
err5 := g.Validator().Data(val5).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.AssertNE(err3, nil)
|
||||
@ -517,8 +515,8 @@ func Test_BankCard(t *testing.T) {
|
||||
rule := "bank-card"
|
||||
val1 := "6230514630000424470"
|
||||
val2 := "6230514630000424473"
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.Assert(err2, nil)
|
||||
})
|
||||
@ -532,11 +530,11 @@ func Test_QQ(t *testing.T) {
|
||||
val3 := "10000"
|
||||
val4 := "38996181"
|
||||
val5 := "389961817"
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, rule, nil)
|
||||
err5 := gvalid.CheckValue(context.TODO(), val5, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules(rule).Messages(nil).Run(ctx)
|
||||
err5 := g.Validator().Data(val5).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -546,31 +544,31 @@ func Test_QQ(t *testing.T) {
|
||||
}
|
||||
|
||||
func Test_Ip(t *testing.T) {
|
||||
if m := gvalid.CheckValue(context.TODO(), "10.0.0.1", "ip", nil); m != nil {
|
||||
if m := g.Validator().Data("10.0.0.1").Rules("ip").Messages(nil).Run(ctx); m != nil {
|
||||
t.Error(m)
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "10.0.0.1", "ipv4", nil); m != nil {
|
||||
if m := g.Validator().Data("10.0.0.1").Rules("ipv4").Messages(nil).Run(ctx); m != nil {
|
||||
t.Error(m)
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "0.0.0.0", "ipv4", nil); m != nil {
|
||||
if m := g.Validator().Data("0.0.0.0").Rules("ipv4").Messages(nil).Run(ctx); m != nil {
|
||||
t.Error(m)
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "1920.0.0.0", "ipv4", nil); m == nil {
|
||||
if m := g.Validator().Data("1920.0.0.0").Rules("ipv4").Messages(nil).Run(ctx); m == nil {
|
||||
t.Error("ipv4校验失败")
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "1920.0.0.0", "ip", nil); m == nil {
|
||||
if m := g.Validator().Data("1920.0.0.0").Rules("ip").Messages(nil).Run(ctx); m == nil {
|
||||
t.Error("ipv4校验失败")
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "fe80::5484:7aff:fefe:9799", "ipv6", nil); m != nil {
|
||||
if m := g.Validator().Data("fe80::5484:7aff:fefe:9799").Rules("ipv6").Messages(nil).Run(ctx); m != nil {
|
||||
t.Error(m)
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "fe80::5484:7aff:fefe:9799123", "ipv6", nil); m == nil {
|
||||
if m := g.Validator().Data("fe80::5484:7aff:fefe:9799123").Rules("ipv6").Messages(nil).Run(ctx); m == nil {
|
||||
t.Error(m)
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "fe80::5484:7aff:fefe:9799", "ip", nil); m != nil {
|
||||
if m := g.Validator().Data("fe80::5484:7aff:fefe:9799").Rules("ip").Messages(nil).Run(ctx); m != nil {
|
||||
t.Error(m)
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "fe80::5484:7aff:fefe:9799123", "ip", nil); m == nil {
|
||||
if m := g.Validator().Data("fe80::5484:7aff:fefe:9799123").Rules("ip").Messages(nil).Run(ctx); m == nil {
|
||||
t.Error(m)
|
||||
}
|
||||
}
|
||||
@ -583,11 +581,11 @@ func Test_IPv4(t *testing.T) {
|
||||
val3 := "1.1.1.1"
|
||||
val4 := "255.255.255.0"
|
||||
val5 := "127.0.0.1"
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, rule, nil)
|
||||
err5 := gvalid.CheckValue(context.TODO(), val5, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules(rule).Messages(nil).Run(ctx)
|
||||
err5 := g.Validator().Data(val5).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.Assert(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -604,11 +602,11 @@ func Test_IPv6(t *testing.T) {
|
||||
val3 := "1030::C9B4:FF12:48AA:1A2B"
|
||||
val4 := "2000:0:0:0:0:0:0:1"
|
||||
val5 := "0000:0000:0000:0000:0000:ffff:c0a8:5909"
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, rule, nil)
|
||||
err5 := gvalid.CheckValue(context.TODO(), val5, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules(rule).Messages(nil).Run(ctx)
|
||||
err5 := g.Validator().Data(val5).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.Assert(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -623,9 +621,9 @@ func Test_MAC(t *testing.T) {
|
||||
val1 := "192.168.1.1"
|
||||
val2 := "44-45-53-54-00-00"
|
||||
val3 := "01:00:5e:00:00:00"
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.Assert(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -639,10 +637,10 @@ func Test_URL(t *testing.T) {
|
||||
val2 := "https://www.baidu.com"
|
||||
val3 := "http://127.0.0.1"
|
||||
val4 := "file:///tmp/test.txt"
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.Assert(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -669,7 +667,7 @@ func Test_Domain(t *testing.T) {
|
||||
}
|
||||
var err error
|
||||
for k, v := range m {
|
||||
err = gvalid.CheckValue(context.TODO(), k, "domain", nil)
|
||||
err = g.Validator().Data(k).Rules("domain").Messages(nil).Run(ctx)
|
||||
if v {
|
||||
// fmt.Println(k)
|
||||
t.Assert(err, nil)
|
||||
@ -683,10 +681,10 @@ func Test_Domain(t *testing.T) {
|
||||
|
||||
func Test_Length(t *testing.T) {
|
||||
rule := "length:6,16"
|
||||
if m := gvalid.CheckValue(context.TODO(), "123456", rule, nil); m != nil {
|
||||
if m := g.Validator().Data("123456").Rules(rule).Messages(nil).Run(ctx); m != nil {
|
||||
t.Error(m)
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "12345", rule, nil); m == nil {
|
||||
if m := g.Validator().Data("12345").Rules(rule).Messages(nil).Run(ctx); m == nil {
|
||||
t.Error("长度校验失败")
|
||||
}
|
||||
}
|
||||
@ -696,18 +694,18 @@ func Test_MinLength(t *testing.T) {
|
||||
msgs := map[string]string{
|
||||
"min-length": "地址长度至少为{min}位",
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "123456", rule, nil); m != nil {
|
||||
if m := g.Validator().Data("123456").Rules(rule).Messages(nil).Run(ctx); m != nil {
|
||||
t.Error(m)
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "12345", rule, nil); m == nil {
|
||||
if m := g.Validator().Data("12345").Rules(rule).Messages(nil).Run(ctx); m == nil {
|
||||
t.Error("长度校验失败")
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "12345", rule, msgs); m == nil {
|
||||
if m := g.Validator().Data("12345").Rules(rule).Messages(msgs).Run(ctx); m == nil {
|
||||
t.Error("长度校验失败")
|
||||
}
|
||||
|
||||
rule2 := "min-length:abc"
|
||||
if m := gvalid.CheckValue(context.TODO(), "123456", rule2, nil); m == nil {
|
||||
if m := g.Validator().Data("123456").Rules(rule2).Messages(nil).Run(ctx); m == nil {
|
||||
t.Error("长度校验失败")
|
||||
}
|
||||
}
|
||||
@ -717,41 +715,41 @@ func Test_MaxLength(t *testing.T) {
|
||||
msgs := map[string]string{
|
||||
"max-length": "地址长度至大为{max}位",
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "12345", rule, nil); m != nil {
|
||||
if m := g.Validator().Data("12345").Rules(rule).Messages(nil).Run(ctx); m != nil {
|
||||
t.Error(m)
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "1234567", rule, nil); m == nil {
|
||||
if m := g.Validator().Data("1234567").Rules(rule).Messages(nil).Run(ctx); m == nil {
|
||||
t.Error("长度校验失败")
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "1234567", rule, msgs); m == nil {
|
||||
if m := g.Validator().Data("1234567").Rules(rule).Messages(msgs).Run(ctx); m == nil {
|
||||
t.Error("长度校验失败")
|
||||
}
|
||||
|
||||
rule2 := "max-length:abc"
|
||||
if m := gvalid.CheckValue(context.TODO(), "123456", rule2, nil); m == nil {
|
||||
if m := g.Validator().Data("123456").Rules(rule2).Messages(nil).Run(ctx); m == nil {
|
||||
t.Error("长度校验失败")
|
||||
}
|
||||
}
|
||||
|
||||
func Test_Size(t *testing.T) {
|
||||
rule := "size:5"
|
||||
if m := gvalid.CheckValue(context.TODO(), "12345", rule, nil); m != nil {
|
||||
if m := g.Validator().Data("12345").Rules(rule).Messages(nil).Run(ctx); m != nil {
|
||||
t.Error(m)
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "123456", rule, nil); m == nil {
|
||||
if m := g.Validator().Data("123456").Rules(rule).Messages(nil).Run(ctx); m == nil {
|
||||
t.Error("长度校验失败")
|
||||
}
|
||||
}
|
||||
|
||||
func Test_Between(t *testing.T) {
|
||||
rule := "between:6.01, 10.01"
|
||||
if m := gvalid.CheckValue(context.TODO(), 10, rule, nil); m != nil {
|
||||
if m := g.Validator().Data(10).Rules(rule).Messages(nil).Run(ctx); m != nil {
|
||||
t.Error(m)
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), 10.02, rule, nil); m == nil {
|
||||
if m := g.Validator().Data(10.02).Rules(rule).Messages(nil).Run(ctx); m == nil {
|
||||
t.Error("大小范围校验失败")
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "a", rule, nil); m == nil {
|
||||
if m := g.Validator().Data("a").Rules(rule).Messages(nil).Run(ctx); m == nil {
|
||||
t.Error("大小范围校验失败")
|
||||
}
|
||||
}
|
||||
@ -764,11 +762,11 @@ func Test_Min(t *testing.T) {
|
||||
val3 := "100"
|
||||
val4 := "1000"
|
||||
val5 := "a"
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, rule, nil)
|
||||
err5 := gvalid.CheckValue(context.TODO(), val5, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules(rule).Messages(nil).Run(ctx)
|
||||
err5 := g.Validator().Data(val5).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -776,7 +774,7 @@ func Test_Min(t *testing.T) {
|
||||
t.AssertNE(err5, nil)
|
||||
|
||||
rule2 := "min:a"
|
||||
err6 := gvalid.CheckValue(context.TODO(), val1, rule2, nil)
|
||||
err6 := g.Validator().Data(val1).Rules(rule2).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err6, nil)
|
||||
})
|
||||
}
|
||||
@ -789,11 +787,11 @@ func Test_Max(t *testing.T) {
|
||||
val3 := "100"
|
||||
val4 := "1000"
|
||||
val5 := "a"
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, rule, nil)
|
||||
err5 := gvalid.CheckValue(context.TODO(), val5, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules(rule).Messages(nil).Run(ctx)
|
||||
err5 := g.Validator().Data(val5).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.Assert(err1, nil)
|
||||
t.Assert(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -801,7 +799,7 @@ func Test_Max(t *testing.T) {
|
||||
t.AssertNE(err5, nil)
|
||||
|
||||
rule2 := "max:a"
|
||||
err6 := gvalid.CheckValue(context.TODO(), val1, rule2, nil)
|
||||
err6 := g.Validator().Data(val1).Rules(rule2).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err6, nil)
|
||||
})
|
||||
}
|
||||
@ -815,12 +813,12 @@ func Test_Json(t *testing.T) {
|
||||
val4 := "[]"
|
||||
val5 := "[1,2,3,4]"
|
||||
val6 := `{"list":[1,2,3,4]}`
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, rule, nil)
|
||||
err5 := gvalid.CheckValue(context.TODO(), val5, rule, nil)
|
||||
err6 := gvalid.CheckValue(context.TODO(), val6, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules(rule).Messages(nil).Run(ctx)
|
||||
err5 := g.Validator().Data(val5).Rules(rule).Messages(nil).Run(ctx)
|
||||
err6 := g.Validator().Data(val6).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -839,12 +837,12 @@ func Test_Integer(t *testing.T) {
|
||||
val4 := "1"
|
||||
val5 := "100"
|
||||
val6 := `999999999`
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, rule, nil)
|
||||
err5 := gvalid.CheckValue(context.TODO(), val5, rule, nil)
|
||||
err6 := gvalid.CheckValue(context.TODO(), val6, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules(rule).Messages(nil).Run(ctx)
|
||||
err5 := g.Validator().Data(val5).Rules(rule).Messages(nil).Run(ctx)
|
||||
err6 := g.Validator().Data(val6).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -863,12 +861,12 @@ func Test_Float(t *testing.T) {
|
||||
val4 := "1.0"
|
||||
val5 := "1.1"
|
||||
val6 := `0.1`
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, rule, nil)
|
||||
err5 := gvalid.CheckValue(context.TODO(), val5, rule, nil)
|
||||
err6 := gvalid.CheckValue(context.TODO(), val6, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules(rule).Messages(nil).Run(ctx)
|
||||
err5 := g.Validator().Data(val5).Rules(rule).Messages(nil).Run(ctx)
|
||||
err6 := g.Validator().Data(val6).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -887,12 +885,12 @@ func Test_Boolean(t *testing.T) {
|
||||
val4 := "1"
|
||||
val5 := "true"
|
||||
val6 := `off`
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, rule, nil)
|
||||
err5 := gvalid.CheckValue(context.TODO(), val5, rule, nil)
|
||||
err6 := gvalid.CheckValue(context.TODO(), val6, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules(rule).Messages(nil).Run(ctx)
|
||||
err5 := g.Validator().Data(val5).Rules(rule).Messages(nil).Run(ctx)
|
||||
err6 := g.Validator().Data(val6).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -916,9 +914,9 @@ func Test_Same(t *testing.T) {
|
||||
"id": 100,
|
||||
"name": "john",
|
||||
}
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params1)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params2)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params3)
|
||||
err1 := g.Validator().Data(val1, params1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val1, params2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val1, params3).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.Assert(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -939,9 +937,9 @@ func Test_Different(t *testing.T) {
|
||||
"id": 100,
|
||||
"name": "john",
|
||||
}
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params1)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params2)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val1, rule, nil, params3)
|
||||
err1 := g.Validator().Data(val1, params1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val1, params2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val1, params3).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.Assert(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.AssertNE(err3, nil)
|
||||
@ -955,10 +953,10 @@ func Test_In(t *testing.T) {
|
||||
val2 := "1"
|
||||
val3 := "100"
|
||||
val4 := "200"
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -973,10 +971,10 @@ func Test_NotIn(t *testing.T) {
|
||||
val2 := "1"
|
||||
val3 := "100"
|
||||
val4 := "200"
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.Assert(err1, nil)
|
||||
t.Assert(err2, nil)
|
||||
t.AssertNE(err3, nil)
|
||||
@ -988,10 +986,10 @@ func Test_NotIn(t *testing.T) {
|
||||
val2 := "1"
|
||||
val3 := "100"
|
||||
val4 := "200"
|
||||
err1 := gvalid.CheckValue(context.TODO(), val1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), val2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), val3, rule, nil)
|
||||
err4 := gvalid.CheckValue(context.TODO(), val4, rule, nil)
|
||||
err1 := g.Validator().Data(val1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(val2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(val3).Rules(rule).Messages(nil).Run(ctx)
|
||||
err4 := g.Validator().Data(val4).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.Assert(err1, nil)
|
||||
t.Assert(err2, nil)
|
||||
t.AssertNE(err3, nil)
|
||||
@ -1001,10 +999,10 @@ func Test_NotIn(t *testing.T) {
|
||||
|
||||
func Test_Regex1(t *testing.T) {
|
||||
rule := `regex:\d{6}|\D{6}|length:6,16`
|
||||
if m := gvalid.CheckValue(context.TODO(), "123456", rule, nil); m != nil {
|
||||
if m := g.Validator().Data("123456").Rules(rule).Messages(nil).Run(ctx); m != nil {
|
||||
t.Error(m)
|
||||
}
|
||||
if m := gvalid.CheckValue(context.TODO(), "abcde6", rule, nil); m == nil {
|
||||
if m := g.Validator().Data("abcde6").Rules(rule).Messages(nil).Run(ctx); m == nil {
|
||||
t.Error("校验失败")
|
||||
}
|
||||
}
|
||||
@ -1015,9 +1013,9 @@ func Test_Regex2(t *testing.T) {
|
||||
str1 := ""
|
||||
str2 := "data"
|
||||
str3 := "data:image/jpeg;base64,/9jrbattq22r"
|
||||
err1 := gvalid.CheckValue(context.TODO(), str1, rule, nil)
|
||||
err2 := gvalid.CheckValue(context.TODO(), str2, rule, nil)
|
||||
err3 := gvalid.CheckValue(context.TODO(), str3, rule, nil)
|
||||
err1 := g.Validator().Data(str1).Rules(rule).Messages(nil).Run(ctx)
|
||||
err2 := g.Validator().Data(str2).Rules(rule).Messages(nil).Run(ctx)
|
||||
err3 := g.Validator().Data(str3).Rules(rule).Messages(nil).Run(ctx)
|
||||
t.AssertNE(err1, nil)
|
||||
t.AssertNE(err2, nil)
|
||||
t.Assert(err3, nil)
|
||||
@ -1034,7 +1032,7 @@ func Test_InternalError_String(t *testing.T) {
|
||||
Name string `v:"hh"`
|
||||
}
|
||||
aa := a{Name: "2"}
|
||||
err := gvalid.CheckStruct(context.TODO(), &aa, nil)
|
||||
err := g.Validator().Data(&aa).Rules(nil).Run(ctx)
|
||||
|
||||
t.Assert(err.String(), "InvalidRules: hh")
|
||||
t.Assert(err.Strings(), g.Slice{"InvalidRules: hh"})
|
||||
@ -1045,13 +1043,13 @@ func Test_InternalError_String(t *testing.T) {
|
||||
|
||||
func Test_Code(t *testing.T) {
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
err := g.Validator().Rules("required").CheckValue(ctx, "")
|
||||
err := g.Validator().Rules("required").Data("").Run(ctx)
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(gerror.Code(err), gcode.CodeValidationFailed)
|
||||
})
|
||||
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
err := g.Validator().Rules("none-exist-rule").CheckValue(ctx, "")
|
||||
err := g.Validator().Rules("none-exist-rule").Data("").Run(ctx)
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(gerror.Code(err), gcode.CodeInternalError)
|
||||
})
|
||||
@ -1063,7 +1061,7 @@ func Test_Bail(t *testing.T) {
|
||||
err := g.Validator().
|
||||
Rules("required|min:1|between:1,100").
|
||||
Messages("|min number is 1|size is between 1 and 100").
|
||||
CheckValue(ctx, -1)
|
||||
Data(-1).Run(ctx)
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(err.Error(), "min number is 1; size is between 1 and 100")
|
||||
})
|
||||
@ -1073,7 +1071,7 @@ func Test_Bail(t *testing.T) {
|
||||
err := g.Validator().
|
||||
Rules("bail|required|min:1|between:1,100").
|
||||
Messages("||min number is 1|size is between 1 and 100").
|
||||
CheckValue(ctx, -1)
|
||||
Data(-1).Run(ctx)
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(err.Error(), "min number is 1")
|
||||
})
|
||||
@ -1088,7 +1086,7 @@ func Test_Bail(t *testing.T) {
|
||||
Page: 1,
|
||||
Size: -1,
|
||||
}
|
||||
err := g.Validator().CheckStruct(ctx, obj)
|
||||
err := g.Validator().Data(obj).Run(ctx)
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(err.Error(), "min number is 1; size is between 1 and 100")
|
||||
})
|
||||
@ -1102,7 +1100,7 @@ func Test_Bail(t *testing.T) {
|
||||
Page: 1,
|
||||
Size: -1,
|
||||
}
|
||||
err := g.Validator().CheckStruct(ctx, obj)
|
||||
err := g.Validator().Data(obj).Run(ctx)
|
||||
t.AssertNE(err, nil)
|
||||
t.Assert(err.Error(), "min number is 1")
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user