@@ -3,6 +3,7 @@ package exql
33import (
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