Files
gf/g/util/gvalid/gvalid_unit_checkstruct_test.go

73 lines
2.7 KiB
Go

// Copyright 2019 gf Author(https://github.com/gogf/gf). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package gvalid_test
import (
"github.com/gogf/gf/g/test/gtest"
"github.com/gogf/gf/g/util/gvalid"
"testing"
)
func Test_CheckStruct(t *testing.T) {
gtest.Case(t, func() {
type Object struct {
Name string
Age int
}
rules := map[string]string {
"Name" : "required|length:6,16",
"Age" : "between:18,30",
}
msgs := map[string]interface{} {
"Name" : map[string]string {
"required" : "名称不能为空",
"length" : "名称长度为:min到:max个字符",
},
"Age" : "年龄为18到30周岁",
}
obj := &Object{"john", 16}
err := gvalid.CheckStruct(obj, rules, msgs)
gtest.AssertNE(err, nil)
gtest.Assert(len(err.Maps()), 2)
gtest.Assert(err.Maps()["Name"]["required"], "")
gtest.Assert(err.Maps()["Name"]["length"], "名称长度为6到16个字符")
gtest.Assert(err.Maps()["Age"]["between"], "年龄为18到30周岁")
})
gtest.Case(t, func() {
type LoginRequest struct {
Username string `json:"username" gvalid:"username@required#用户名不能为空"`
Password string `json:"password" gvalid:"password@required#登录密码不能为空"`
}
var login LoginRequest
err := gvalid.CheckStruct(login, nil)
gtest.AssertNE(err, nil)
gtest.Assert(len(err.Maps()), 2)
gtest.Assert(err.Maps()["username"]["required"], "用户名不能为空")
gtest.Assert(err.Maps()["password"]["required"], "登录密码不能为空")
})
gtest.Case(t, func() {
type User struct {
Id int `gvalid:"uid@required|min:10#|ID不能为空"`
Age int `gvalid:"age@required#年龄不能为空"`
Username string `json:"username" gvalid:"username@required#用户名不能为空"`
Password string `json:"password" gvalid:"password@required#登录密码不能为空"`
}
user := &User{
Id : 1,
Username : "john",
Password : "123456",
}
err := gvalid.CheckStruct(user, nil)
gtest.AssertNE(err, nil)
gtest.Assert(len(err.Maps()), 1)
gtest.Assert(err.Maps()["uid"]["min"], "ID不能为空")
})
}