Skip to content

Commit ffb4d8a

Browse files
committed
Update generator_test.go
1 parent 97c5e3f commit ffb4d8a

1 file changed

Lines changed: 59 additions & 15 deletions

File tree

generator_test.go

Lines changed: 59 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package exql
33
import (
44
"fmt"
55
"os"
6+
"path/filepath"
67
"testing"
78

89
"github.com/DATA-DOG/go-sqlmock"
@@ -43,24 +44,67 @@ func TestGenerator_Generate(t *testing.T) {
4344
assert.NoError(t, err)
4445
checkFiles(dir, []string{"users.go", "user_groups.go", "user_login_histories.go", "group_users.go"})
4546
})
46-
47-
t.Run("should return error when rows.Error() return error", func(t *testing.T) {
48-
mockDb, mock, err := sqlmock.New()
47+
t.Run("creates output dir with permission 0750", func(t *testing.T) {
48+
dir := filepath.Join(t.TempDir(), "output")
49+
err := g.Generate(&GenerateOptions{
50+
OutDir: dir,
51+
Package: "dist",
52+
})
4953
assert.NoError(t, err)
50-
defer mockDb.Close()
51-
52-
mock.ExpectQuery(`show tables`).WillReturnRows(
53-
sqlmock.NewRows([]string{"tables"}).
54-
AddRow("users").
55-
RowError(0, fmt.Errorf("err")))
56-
54+
info, err := os.Stat(dir)
55+
assert.NoError(t, err)
56+
assert.Equal(t, os.FileMode(0750), info.Mode().Perm())
57+
})
58+
t.Run("writes files with permission 0640", func(t *testing.T) {
5759
dir := t.TempDir()
58-
assert.EqualError(t, NewGenerator(mockDb).
59-
Generate(&GenerateOptions{
60-
OutDir: dir,
61-
Package: "dist",
62-
}), "err")
60+
err := g.Generate(&GenerateOptions{
61+
OutDir: dir,
62+
Package: "dist",
63+
})
64+
assert.NoError(t, err)
65+
entries, err := os.ReadDir(dir)
66+
assert.NoError(t, err)
67+
for _, e := range entries {
68+
info, err := os.Stat(filepath.Join(dir, e.Name()))
69+
assert.NoError(t, err)
70+
assert.Equal(t, os.FileMode(0640), info.Mode().Perm(), "file: %s", e.Name())
71+
}
6372
})
6473
})
6574
}
75+
76+
t.Run("should return error when rows.Error() return error", func(t *testing.T) {
77+
mockDb, mock, err := sqlmock.New()
78+
assert.NoError(t, err)
79+
defer mockDb.Close()
80+
81+
mock.ExpectQuery(`show tables`).WillReturnRows(
82+
sqlmock.NewRows([]string{"tables"}).
83+
AddRow("users").
84+
RowError(0, fmt.Errorf("err")))
85+
86+
dir := t.TempDir()
87+
assert.EqualError(t, NewGenerator(mockDb).
88+
Generate(&GenerateOptions{
89+
OutDir: dir,
90+
Package: "dist",
91+
}), "err")
92+
})
93+
94+
t.Run("should propagate ParseTable error", func(t *testing.T) {
95+
mockDb, mock, err := sqlmock.New()
96+
assert.NoError(t, err)
97+
defer mockDb.Close()
98+
99+
mock.ExpectQuery(`show tables`).WillReturnRows(
100+
sqlmock.NewRows([]string{"tables"}).AddRow("users"))
101+
mock.ExpectQuery("show columns from `users`").WillReturnError(fmt.Errorf("columns err"))
102+
103+
dir := t.TempDir()
104+
assert.EqualError(t, NewGenerator(mockDb).
105+
Generate(&GenerateOptions{
106+
OutDir: dir,
107+
Package: "dist",
108+
}), "columns err")
109+
})
66110
}

0 commit comments

Comments
 (0)