提交 20a5f438 编写于 作者: aaronchen2k2k's avatar aaronchen2k2k

unit test for table parse

上级 d8b12def
......@@ -5,8 +5,10 @@ import (
"github.com/easysoft/zendata/internal/command"
commandConfig "github.com/easysoft/zendata/internal/command/config"
configUtils "github.com/easysoft/zendata/internal/pkg/config"
"github.com/easysoft/zendata/internal/pkg/model"
fileUtils "github.com/easysoft/zendata/pkg/utils/file"
"github.com/easysoft/zendata/pkg/utils/vari"
"gopkg.in/yaml.v3"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"log"
......@@ -20,8 +22,8 @@ var (
Dsn = "" // "root:P2ssw0rd@(127.0.0.1:3306)/zd_test?charset=utf8&parseTime=True&loc=Local"
Out = "" // "demo/out/sql"
TableByFieldType = "by_field_type"
TableByFieldName = "by_field_name"
TableByFieldType = "by_field_type"
TableByRecords = "by_records"
)
......@@ -47,29 +49,167 @@ func TestMain(m *testing.M) {
os.Exit(code)
}
func TestGenDefFromColumnDesc(t *testing.T) {
vari.GlobalVars.Table = "by_field_type"
gen(t)
func TestGenDefFromFieldName(t *testing.T) {
vari.GlobalVars.Table = TableByFieldName
parse(t)
checkByFieldName(t)
}
func TestGenDefFromFieldName(t *testing.T) {
vari.GlobalVars.Table = "by_field_name"
gen(t)
func TestGenDefFromColumnType(t *testing.T) {
vari.GlobalVars.Table = TableByFieldType
parse(t)
checkByFieldType(t)
}
func TestGenDefFromRecords(t *testing.T) {
vari.GlobalVars.Table = "by_records"
gen(t)
vari.GlobalVars.Table = TableByRecords
parse(t)
checkByFieldRecords(t)
}
func gen(t *testing.T) {
func parse(t *testing.T) {
mainCtrl, _ := command.InitCtrl()
mainCtrl.GenYaml("")
}
func checkByFieldName(t *testing.T) {
def := readYamlObj(TableByFieldName)
for _, field := range def.Fields {
pass := true
if field.Field == "username" {
pass = field.From == "name.enaccount.v1.yaml"
} else if field.Field == "telphone" {
pass = field.From == "phone.v1.yaml"
} else if field.Field == "mobilephone" {
pass = field.From == "phone.v1.yaml"
} else if field.Field == "email" {
pass = field.From == "email.v1.yaml"
} else if field.Field == "url" {
pass = field.From == "domain.domain.v1.yaml"
} else if field.Field == "ip" {
pass = field.From == "ip.v1.yaml"
} else if field.Field == "macaddress" {
pass = field.Format == "mac()"
} else if field.Field == "creditcard" {
pass = field.Format == "credit_card(amex)"
} else if field.Field == "idcard" {
pass = field.Format == "id_card()"
} else if field.Field == "token" {
pass = field.Format == "token()"
}
if !pass {
t.Errorf(`Wrong Config: field "%s"; from: "%v"; format: "%v""`, field.Field, field.From, field.Format)
}
}
}
func checkByFieldType(t *testing.T) {
def := readYamlObj(TableByFieldType)
for _, field := range def.Fields {
pass := true
if field.Field == "f_bit" {
pass = field.Range == "0,1:R"
} else if field.Field == "f_tinyint" {
pass = field.Range == "0-255:R"
} else if field.Field == "f_smallint" {
pass = field.Range == "0-65535:R"
} else if field.Field == "f_mediumint" {
pass = field.Range == "0-16777215:R"
} else if field.Field == "f_int" {
pass = field.Range == "0-4294967295:R"
} else if field.Field == "f_bigint" {
pass = field.Range == "0-9223372036854775807:R"
} else if field.Field == "f_float" {
pass = field.Range == "0-99.999:R"
} else if field.Field == "f_double" {
pass = field.Range == "0-99.999999:R"
} else if field.Field == "f_decimal" {
pass = field.Range == "0-99.99:R"
} else if field.Field == "f_char" {
pass = field.Range == "a-z"
} else if field.Field == "f_tinytext" {
pass = field.From == "idiom.v1.idiom"
} else if field.Field == "f_text" {
pass = field.From == "xiehouyu.v1.xiehouyu"
} else if field.Field == "f_mediumtext" {
pass = field.From == "joke.v1.joke"
} else if field.Field == "f_longtext" {
pass = field.From == "song.v1.song"
} else if field.Field == "f_tinyblob" {
pass = field.Format == "binary()"
} else if field.Field == "f_blob" {
pass = field.Format == "binary()"
} else if field.Field == "f_mediumblob" {
pass = field.Format == "binary()"
} else if field.Field == "f_longblob" {
pass = field.Format == "binary()"
} else if field.Field == "f_binary" {
pass = field.Format == "binary()"
} else if field.Field == "f_varbinary" {
pass = field.Format == "binary()"
} else if field.Field == "f_date" {
pass = field.Range == "(-1M)-(+1w):86400" && field.Format == "YY/MM/DD" && field.Type == "timestamp"
} else if field.Field == "f_time" {
pass = field.Range == "(-1M)-(+1w):60" && field.Format == "hh:mm:ss" && field.Type == "timestamp"
} else if field.Field == "f_year" {
pass = field.Range == "(-6Y)-(+6Y):31536000" && field.Format == "YYYY" && field.Type == "timestamp"
} else if field.Field == "f_datetime" {
pass = field.Range == "(-1M)-(+1w):60" && field.Format == "YY/MM/DD hh:mm:ss" && field.Type == "timestamp"
} else if field.Field == "f_timestamp" {
pass = field.Range == "(-1M)-(+1w):60" && field.Type == "timestamp"
} else if field.Field == "f_enum" {
pass = field.Range == "a,b,c"
} else if field.Field == "f_set" {
pass = field.Range == "a,b,c" && field.Loop == "2-3"
}
if !pass {
t.Errorf(`Wrong Config: field "%s"; from: "%v"; format: "%v""`, field.Field, field.From, field.Format)
}
}
}
func checkByFieldRecords(t *testing.T) {
def := readYamlObj(TableByRecords)
for _, field := range def.Fields {
pass := true
if field.Field == "username" {
pass = field.From == "name.enaccount.v1.yaml"
} else if field.Field == "telphone" {
pass = field.From == "phone.v1.yaml"
} else if field.Field == "mobilephone" {
pass = field.From == "phone.v1.yaml"
} else if field.Field == "email" {
pass = field.From == "email.v1.yaml"
} else if field.Field == "url" {
pass = field.From == "domain.domain.v1.yaml"
} else if field.Field == "ip" {
pass = field.From == "ip.v1.yaml"
} else if field.Field == "macaddress" {
pass = field.Format == "mac()"
} else if field.Field == "creditcard" {
pass = field.Format == "credit_card(amex)"
} else if field.Field == "idcard" {
pass = field.Format == "id_card()"
} else if field.Field == "token" {
pass = field.Format == "token()"
}
if !pass {
t.Errorf(`Wrong Config: field "%s"; from: "%v"; format: "%v""`, field.Field, field.From, field.Format)
}
}
}
func initTables() {
initTable(TableByFieldType)
initTable(TableByFieldName)
initTable(TableByFieldType)
initTable(TableByRecords)
}
......@@ -104,3 +244,13 @@ func initArgs() {
log.Printf("DBDsn = %s", vari.GlobalVars.DBDsn)
log.Printf("Output = %s", vari.GlobalVars.Output)
}
func readYamlObj(name string) (def model.ZdDef) {
pth := filepath.Join(vari.GlobalVars.Output, name+".yaml")
content := fileUtils.ReadFileBuf(pth)
def = model.ZdDef{}
yaml.Unmarshal(content, &def)
return
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册