json_filter/filter_test.go
2023-01-07 23:24:55 +08:00

161 lines
2.9 KiB
Go

// Package filter ...
//
// Description : filter ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2023-01-01 17:00
package filter
import (
"fmt"
"testing"
"github.com/smartystreets/goconvey/convey"
)
// TestNewFilter ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 17:00 2023/1/1
func TestNewFilter(t *testing.T) {
var (
err error
)
testData := `{
"base":{
"name":"go_developer",
"age":18,
"height":180
},
"company":{
"name":"wajijiwa",
"start":"2023-01-01"
}
}`
filterRuleList := []MapRule{
{
SourcePath: "base.name",
MapPath: "user_name",
Required: true,
DataType: "string",
DefaultValue: "",
},
{
SourcePath: "base.age",
MapPath: "user_age",
Required: true,
DataType: "int",
DefaultValue: "",
},
{
SourcePath: "base.height",
MapPath: "user_height",
Required: true,
DataType: "string",
DefaultValue: "",
},
{
SourcePath: "company.name",
MapPath: "company_name",
Required: true,
DataType: "string",
DefaultValue: "",
},
{
SourcePath: "company.start",
MapPath: "company_start",
Required: true,
DataType: "string",
DefaultValue: "",
},
}
f := NewFilter(testData, filterRuleList)
convey.Convey("基础对象重写", t, func() {
err = f.Deal()
convey.So(err, convey.ShouldEqual, nil)
fmt.Println(f.String())
})
}
// TestNewFilterForArrayOne ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 21:43 2023/1/2
func TestNewFilterForArrayOne(t *testing.T) {
var (
err error
)
testData := `[
{
"name":"zhangdeman"
},
{
"name":"zhang"
},
{
"name":"de"
},
{
"name":"man"
}
]`
filterRuleList := []MapRule{
{
SourcePath: "[].name",
MapPath: "user_name.[]",
Required: true,
DataType: "string",
DefaultValue: "",
},
}
f := NewFilter(testData, filterRuleList)
convey.Convey("提取列表字段,构成新的列表", t, func() {
err = f.Deal()
convey.So(err, convey.ShouldEqual, nil)
fmt.Println(f.String())
})
}
// TestNewFilterForArrayTwo ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 22:22 2023/1/2
func TestNewFilterForArrayTwo(t *testing.T) {
var (
err error
)
testData := `{"user_list":[
{
"name":"zhangdeman1"
},
{
"name":"zhang1"
},
{
"name":"de1"
},
{
"name":"man1"
}
]}`
filterRuleList := []MapRule{
{
SourcePath: "user_list.[].name",
MapPath: "user.name_list.[]",
Required: true,
DataType: "string",
DefaultValue: "",
},
}
f := NewFilter(testData, filterRuleList)
convey.Convey("提取列表字段,构成新的列表", t, func() {
err = f.Deal()
convey.So(err, convey.ShouldEqual, nil)
fmt.Println(f.String())
})
}