Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
易企天创
zendata
提交
20a5f438
Z
zendata
项目概览
易企天创
/
zendata
9 个月 前同步成功
通知
17
Star
2
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Z
zendata
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
20a5f438
编写于
4月 06, 2023
作者:
aaronchen2k2k
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
unit test for table parse
上级
d8b12def
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
161 addition
and
11 deletion
+161
-11
cmd/test/unit/parse_table/parse_test.go
cmd/test/unit/parse_table/parse_test.go
+161
-11
未找到文件。
cmd/test/unit/parse_table/parse_test.go
浏览文件 @
20a5f438
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录