123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- package command
- import (
- _ "embed"
- "io/ioutil"
- "os"
- "path/filepath"
- "sort"
- "strings"
- "testing"
- "github.com/stretchr/testify/assert"
- "github.com/zeromicro/go-zero/tools/goctl/config"
- "github.com/zeromicro/go-zero/tools/goctl/model/sql/gen"
- "github.com/zeromicro/go-zero/tools/goctl/util/pathx"
- )
- var (
- //go:embed testdata/user.sql
- sql string
- cfg = &config.Config{
- NamingFormat: "gozero",
- }
- )
- func TestFromDDl(t *testing.T) {
- err := gen.Clean()
- assert.Nil(t, err)
- err = fromDDL("./user.sql", pathx.MustTempDir(), cfg, true, false, "go_zero")
- assert.Equal(t, errNotMatched, err)
- // case dir is not exists
- unknownDir := filepath.Join(pathx.MustTempDir(), "test", "user.sql")
- err = fromDDL(unknownDir, pathx.MustTempDir(), cfg, true, false, "go_zero")
- assert.True(t, func() bool {
- switch err.(type) {
- case *os.PathError:
- return true
- default:
- return false
- }
- }())
- // case empty src
- err = fromDDL("", pathx.MustTempDir(), cfg, true, false, "go_zero")
- if err != nil {
- assert.Equal(t, "expected path or path globbing patterns, but nothing found", err.Error())
- }
- tempDir := filepath.Join(pathx.MustTempDir(), "test")
- err = pathx.MkdirIfNotExist(tempDir)
- if err != nil {
- return
- }
- user1Sql := filepath.Join(tempDir, "user1.sql")
- user2Sql := filepath.Join(tempDir, "user2.sql")
- err = ioutil.WriteFile(user1Sql, []byte(sql), os.ModePerm)
- if err != nil {
- return
- }
- err = ioutil.WriteFile(user2Sql, []byte(sql), os.ModePerm)
- if err != nil {
- return
- }
- _, err = os.Stat(user1Sql)
- assert.Nil(t, err)
- _, err = os.Stat(user2Sql)
- assert.Nil(t, err)
- filename := filepath.Join(tempDir, "usermodel.go")
- fromDDL := func(db string) {
- err = fromDDL(filepath.Join(tempDir, "user*.sql"), tempDir, cfg, true, false, db)
- assert.Nil(t, err)
- _, err = os.Stat(filename)
- assert.Nil(t, err)
- }
- fromDDL("go_zero")
- _ = os.Remove(filename)
- fromDDL("go-zero")
- _ = os.Remove(filename)
- fromDDL("1gozero")
- }
- func Test_parseTableList(t *testing.T) {
- testData := []string{"foo", "b*", "bar", "back_up", "foo,bar,b*"}
- patterns := parseTableList(testData)
- actual := patterns.list()
- expected := []string{"foo", "b*", "bar", "back_up"}
- sort.Slice(actual, func(i, j int) bool {
- return actual[i] > actual[j]
- })
- sort.Slice(expected, func(i, j int) bool {
- return expected[i] > expected[j]
- })
- assert.Equal(t, strings.Join(expected, ","), strings.Join(actual, ","))
- matchTestData := map[string]bool{
- "foo": true,
- "bar": true,
- "back_up": true,
- "bit": true,
- "ab": false,
- "b": true,
- }
- for v, expected := range matchTestData {
- actual := patterns.Match(v)
- assert.Equal(t, expected, actual)
- }
- }
|