2024-04-29 17:29:46 +08:00
|
|
|
// Package validator ...
|
|
|
|
//
|
|
|
|
// Description : validator ...
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 2024-04-29 14:14
|
|
|
|
package validator
|
|
|
|
|
|
|
|
import (
|
|
|
|
"encoding/json"
|
|
|
|
"fmt"
|
2024-11-01 17:22:41 +08:00
|
|
|
"git.zhangdeman.cn/gateway/validator/define"
|
2024-09-05 17:49:50 +08:00
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/tidwall/gjson"
|
2024-04-29 17:29:46 +08:00
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestRun(t *testing.T) {
|
|
|
|
sourceData := map[string]interface{}{
|
|
|
|
"name": "白茶清欢",
|
|
|
|
}
|
2024-11-01 17:22:41 +08:00
|
|
|
_ = Run(sourceData, nil, nil)
|
2024-04-29 17:29:46 +08:00
|
|
|
byteData, _ := json.Marshal(sourceData)
|
|
|
|
fmt.Println(string(byteData))
|
|
|
|
}
|
2024-09-05 17:49:50 +08:00
|
|
|
|
|
|
|
func Test_getDataStatus(t *testing.T) {
|
|
|
|
type args struct {
|
|
|
|
val gjson.Result
|
|
|
|
dataType string
|
|
|
|
}
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
args args
|
|
|
|
want string
|
|
|
|
}{
|
|
|
|
// TODO: Add test cases.
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
assert.Equalf(t, tt.want, getDataStatus(tt.args.val, tt.args.dataType), "getDataStatus(%v, %v)", tt.args.val, tt.args.dataType)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
2024-11-01 17:22:41 +08:00
|
|
|
|
|
|
|
// TestRunRequired 测试字段必传
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 16:48 2024/11/1
|
|
|
|
func TestRunRequired(t *testing.T) {
|
|
|
|
sourceData := map[string]interface{}{
|
|
|
|
"name": "白茶清欢",
|
|
|
|
}
|
|
|
|
ruleListForNotFound := []*define.FieldRule{
|
|
|
|
&define.FieldRule{
|
|
|
|
Path: "name1",
|
|
|
|
Type: "string",
|
|
|
|
DisableRewrite: false,
|
|
|
|
DefaultValue: nil,
|
|
|
|
IsRequired: true,
|
|
|
|
AllowEmpty: false,
|
|
|
|
AllowZero: false,
|
|
|
|
AllowNil: false,
|
|
|
|
DisableAutoTrimSpace: false,
|
|
|
|
DisableAutoConvert: false,
|
|
|
|
RequiredConditionGroup: nil,
|
|
|
|
ValueLimit: nil,
|
|
|
|
SliceConfig: nil,
|
|
|
|
MapConfig: nil,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
err := Run(sourceData, ruleListForNotFound, nil)
|
|
|
|
if nil != err {
|
|
|
|
fmt.Println(err.Error())
|
|
|
|
}
|
|
|
|
assert.Error(t, err)
|
|
|
|
|
|
|
|
sourceData = map[string]interface{}{
|
|
|
|
"name": "",
|
|
|
|
}
|
|
|
|
ruleListForEmpty := []*define.FieldRule{
|
2024-11-01 17:57:53 +08:00
|
|
|
&define.FieldRule{
|
|
|
|
Path: "name",
|
|
|
|
Type: "string",
|
|
|
|
DisableRewrite: false,
|
|
|
|
DefaultValue: nil,
|
|
|
|
IsRequired: true,
|
|
|
|
AllowEmpty: false,
|
|
|
|
AllowZero: false,
|
|
|
|
AllowNil: false,
|
|
|
|
DisableAutoTrimSpace: false,
|
|
|
|
DisableAutoConvert: false,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
err = Run(sourceData, ruleListForEmpty, nil)
|
|
|
|
if nil != err {
|
|
|
|
fmt.Println(err.Error())
|
|
|
|
}
|
|
|
|
assert.Error(t, err)
|
|
|
|
|
|
|
|
sourceData = map[string]interface{}{
|
|
|
|
"name": 18,
|
|
|
|
}
|
|
|
|
ruleListForDisableAutoConvert := []*define.FieldRule{
|
2024-11-01 17:22:41 +08:00
|
|
|
&define.FieldRule{
|
2024-11-01 18:32:13 +08:00
|
|
|
Path: "name",
|
|
|
|
Type: "string",
|
|
|
|
DisableRewrite: false,
|
|
|
|
DefaultValue: nil,
|
|
|
|
IsRequired: true,
|
|
|
|
AllowEmpty: false,
|
|
|
|
AllowZero: false,
|
|
|
|
AllowNil: false,
|
|
|
|
DisableAutoTrimSpace: false,
|
|
|
|
DisableAutoConvert: true,
|
2024-11-01 17:22:41 +08:00
|
|
|
},
|
|
|
|
}
|
2024-11-01 17:57:53 +08:00
|
|
|
err = Run(sourceData, ruleListForDisableAutoConvert, nil)
|
2024-11-01 17:22:41 +08:00
|
|
|
if nil != err {
|
|
|
|
fmt.Println(err.Error())
|
|
|
|
}
|
|
|
|
assert.Error(t, err)
|
2024-11-01 18:32:13 +08:00
|
|
|
|
|
|
|
sourceData = map[string]interface{}{
|
|
|
|
"name": " ",
|
|
|
|
}
|
|
|
|
ruleListForAllowTrim := []*define.FieldRule{
|
|
|
|
&define.FieldRule{
|
|
|
|
Path: "name",
|
|
|
|
Type: "string",
|
|
|
|
DisableRewrite: false,
|
|
|
|
DefaultValue: nil,
|
|
|
|
IsRequired: true,
|
|
|
|
AllowEmpty: false,
|
|
|
|
AllowZero: false,
|
|
|
|
AllowNil: false,
|
|
|
|
DisableAutoTrimSpace: false,
|
|
|
|
DisableAutoConvert: true,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
err = Run(sourceData, ruleListForAllowTrim, nil)
|
|
|
|
if nil != err {
|
|
|
|
fmt.Println(err.Error())
|
|
|
|
}
|
|
|
|
assert.Error(t, err)
|
|
|
|
|
|
|
|
sourceData = map[string]interface{}{
|
|
|
|
"name": " ",
|
|
|
|
}
|
|
|
|
ruleListForDisableTrim := []*define.FieldRule{
|
|
|
|
&define.FieldRule{
|
|
|
|
Path: "name",
|
|
|
|
Type: "string",
|
|
|
|
DisableRewrite: false,
|
|
|
|
DefaultValue: nil,
|
|
|
|
IsRequired: true,
|
|
|
|
AllowEmpty: false,
|
|
|
|
AllowZero: false,
|
|
|
|
AllowNil: false,
|
|
|
|
DisableAutoTrimSpace: true,
|
|
|
|
DisableAutoConvert: true,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
err = Run(sourceData, ruleListForDisableTrim, nil)
|
|
|
|
if nil != err {
|
|
|
|
fmt.Println(err.Error())
|
|
|
|
}
|
2024-11-01 17:22:41 +08:00
|
|
|
}
|