You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

99 lines
2.2 KiB

2 years ago
package model
import (
"bytes"
"moredoc/conf"
2 years ago
"os"
"strings"
"testing"
"text/template"
"go.uber.org/zap"
2 years ago
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
const dataGoTpl = `
package model
func getPermissions() (permissions []Permission) {
permissions = []Permission{
{{ range .Permissions }}{Title: "{{.Title}}", Description: "{{.Description}}", Method: "{{.Method}}", Path: "{{.Path}}"},
{{end}}
}
return
}
`
func TestGenData(t *testing.T) {
// 访问的数据库链接地址。 dsn: data source name
// 【注意】以哪个数据库的【菜单】和【API】为准则配置查询哪个数据库以生成menu和api基础数据
dsn := "root:root@tcp(127.0.0.1)/moredoc?charset=utf8mb4&parseTime=True&loc=Local"
t.Log("开始生成 data.go 文件")
t.Log("dsn:", dsn)
db, err := gorm.Open(mysql.New(mysql.Config{
DSN: dsn, // DSN
}), &gorm.Config{})
if err != nil {
return
}
defer func() {
d, _ := db.DB()
d.Close()
}()
var (
permissions []Permission
permissionTableName = Permission{}.TableName()
)
err = db.Table(permissionTableName).Find(&permissions).Error
if err != nil {
t.Errorf("生成 data.go 文件失败: %s", err.Error())
return
}
replacer := strings.NewReplacer("\"", "\\\"")
for idx, permission := range permissions {
permissions[idx].Title = replacer.Replace(permission.Title)
permissions[idx].Description = replacer.Replace(permission.Description)
}
tmpl, err := template.New("data.go").Parse(dataGoTpl)
if err != nil {
t.Fatal(err.Error())
}
buf := new(bytes.Buffer)
if err := tmpl.Execute(buf, map[string]interface{}{"Permissions": permissions}); err != nil {
t.Fatal(err.Error())
}
err = os.WriteFile("data.go", buf.Bytes(), 0666)
if err != nil {
t.Fatalf("生成 data.go 文件失败: %s", err.Error())
}
t.Log("生成 data.go 文件成功")
}
func TestConvertDocument(t *testing.T) {
dsn := "root:root@tcp(127.0.0.1)/moredoc?charset=utf8mb4&parseTime=True&loc=Local"
logger, _ := zap.NewDevelopment()
dbModel, err := NewDBModel(&conf.Database{
DSN: dsn,
Prefix: "mnt_",
ShowSQL: true,
}, logger)
if err != nil {
t.Fatal(err.Error())
}
err = dbModel.ConvertDocument()
if err != nil {
t.Fatal(err.Error())
}
t.Log("success")
}