Skip to content

Commit 66a4635

Browse files
Merge pull request #19 from oracle-samples/fix-table-test
Fix table test
2 parents d657f32 + 4d8026b commit 66a4635

File tree

2 files changed

+59
-36
lines changed

2 files changed

+59
-36
lines changed

tests/passed-tests.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -319,8 +319,8 @@ TestGroupConditions
319319
TestCombineStringConditions
320320
TestFromWithJoins
321321
TestToSQL
322-
#TestTable
323-
#TestTableWithAllFields
322+
TestTable
323+
TestTableWithAllFields
324324
TestTableWithNamer
325325
TestTransaction
326326
TestCancelTransaction

tests/table_test.go

Lines changed: 57 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import (
4545
. "github.com/oracle-samples/gorm-oracle/tests/utils"
4646

4747
"gorm.io/gorm"
48+
"gorm.io/gorm/clause"
4849
"gorm.io/gorm/schema"
4950
"gorm.io/gorm/utils/tests"
5051
)
@@ -59,16 +60,39 @@ func (UserWithTable) TableName() string {
5960
}
6061

6162
func TestTable(t *testing.T) {
62-
t.Skip()
6363
dryDB := DB.Session(&gorm.Session{DryRun: true})
6464

6565
r := dryDB.Table("`user`").Find(&User{}).Statement
6666
if !regexp.MustCompile("SELECT \\* FROM `user`").MatchString(r.Statement.SQL.String()) {
6767
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
6868
}
6969

70+
r = dryDB.Table("USER U").
71+
Clauses(clause.Select{Columns: []clause.Column{{Table: "U", Name: "name"}}}).
72+
Find(&User{}).Statement
73+
if !regexp.MustCompile("SELECT .U.\\..name. FROM USER U WHERE .U.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
74+
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
75+
}
76+
77+
r = dryDB.Table("USER U").
78+
Clauses(clause.Select{Columns: []clause.Column{{Table: "U", Name: "NAME"}}}).
79+
Find(&User{}).Statement
80+
if !regexp.MustCompile("SELECT .U.\\..NAME. FROM USER U WHERE .U.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
81+
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
82+
}
83+
84+
r = dryDB.Table("USER U").Select("name").Find(&User{}).Statement
85+
if !regexp.MustCompile("SELECT .name. FROM USER U WHERE .U.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
86+
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
87+
}
88+
89+
r = dryDB.Table("USER U").Select("Name").Find(&User{}).Statement
90+
if !regexp.MustCompile("SELECT .name. FROM USER U WHERE .U.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
91+
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
92+
}
93+
7094
r = dryDB.Table("USER U").Select("NAME").Find(&User{}).Statement
71-
if !regexp.MustCompile("SELECT .NAME. FROM USER U WHERE .U.\\..DELETED_AT. IS NULL").MatchString(r.Statement.SQL.String()) {
95+
if !regexp.MustCompile("SELECT NAME FROM USER U WHERE .U.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
7296
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
7397
}
7498

@@ -78,100 +102,99 @@ func TestTable(t *testing.T) {
78102
}
79103

80104
r = dryDB.Table("PEOPLE P").Table("USER U").Find(&User{}).Statement
81-
if !regexp.MustCompile("SELECT \\* FROM USER U WHERE .U.\\..DELETED_AT. IS NULL").MatchString(r.Statement.SQL.String()) {
105+
if !regexp.MustCompile("SELECT \\* FROM USER U WHERE .U.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
82106
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
83107
}
84108

85109
r = dryDB.Table("PEOPLE P").Table("user").Find(&User{}).Statement
86-
if !regexp.MustCompile("SELECT \\* FROM .user. WHERE .user.\\..DELETED_AT. IS NULL").MatchString(r.Statement.SQL.String()) {
110+
if !regexp.MustCompile("SELECT \\* FROM .user. WHERE .user.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
87111
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
88112
}
89113

90114
r = dryDB.Table("gorm.people").Table("user").Find(&User{}).Statement
91-
if !regexp.MustCompile("SELECT \\* FROM .user. WHERE .user.\\..DELETED_AT. IS NULL").MatchString(r.Statement.SQL.String()) {
115+
if !regexp.MustCompile("SELECT \\* FROM .user. WHERE .user.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
92116
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
93117
}
94118

95-
r = dryDB.Table("gorm.user").Select("NAME").Find(&User{}).Statement
96-
if !regexp.MustCompile("SELECT .NAME. FROM .gorm.\\..user. WHERE .user.\\..DELETED_AT. IS NULL").MatchString(r.Statement.SQL.String()) {
119+
r = dryDB.Table("gorm.user").Select("name").Find(&User{}).Statement
120+
if !regexp.MustCompile("SELECT .name. FROM .gorm.\\..user. WHERE .user.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
97121
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
98122
}
99123

100-
r = dryDB.Select("NAME").Find(&UserWithTable{}).Statement
101-
if !regexp.MustCompile("SELECT .NAME. FROM .gorm.\\..user. WHERE .user.\\..DELETED_AT. IS NULL").MatchString(r.Statement.SQL.String()) {
124+
r = dryDB.Select("name").Find(&UserWithTable{}).Statement
125+
if !regexp.MustCompile("SELECT .name. FROM .gorm.\\..user. WHERE .user.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
102126
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
103127
}
104128

105129
r = dryDB.Create(&UserWithTable{}).Statement
106-
if !regexp.MustCompile(`INSERT INTO .user. (.*NAME.*) VALUES (.*)`).MatchString(r.Statement.SQL.String()) {
130+
if !regexp.MustCompile(`INSERT INTO .user. (.*name.*) VALUES (.*)`).MatchString(r.Statement.SQL.String()) {
107131
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
108132
}
109133

110-
r = dryDB.Table("(?) AS U", DB.Model(&User{}).Select("NAME")).Find(&User{}).Statement
111-
if !regexp.MustCompile("SELECT \\* FROM \\(SELECT .NAME. FROM .USERS. WHERE .USERS.\\..DELETED_AT. IS NULL\\) AS U WHERE .U.\\..DELETED_AT. IS NULL").MatchString(r.Statement.SQL.String()) {
134+
r = dryDB.Table("(?) AS U", DB.Model(&User{}).Select("name")).Find(&User{}).Statement
135+
if !regexp.MustCompile("SELECT \\* FROM \\(SELECT .name. FROM .users. WHERE .users.\\..deleted_at. IS NULL\\) AS U WHERE .U.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
112136
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
113137
}
114138

115-
r = dryDB.Table("(?) AS U, (?) AS P", DB.Model(&User{}).Select("NAME"), DB.Model(&Pet{}).Select("NAME")).Find(&User{}).Statement
116-
if !regexp.MustCompile("SELECT \\* FROM \\(SELECT .NAME. FROM .USERS. WHERE .USERS.\\..DELETED_AT. IS NULL\\) AS U, \\(SELECT .NAME. FROM .PETS. WHERE .PETS.\\..DELETED_AT. IS NULL\\) AS P WHERE .U.\\..DELETED_AT. IS NULL").MatchString(r.Statement.SQL.String()) {
139+
r = dryDB.Table("(?) AS U, (?) AS P", DB.Model(&User{}).Select("name"), DB.Model(&Pet{}).Select("name")).Find(&User{}).Statement
140+
if !regexp.MustCompile("SELECT \\* FROM \\(SELECT .name. FROM .users. WHERE .users.\\..deleted_at. IS NULL\\) AS U, \\(SELECT .name. FROM .pets. WHERE .pets.\\..deleted_at. IS NULL\\) AS P WHERE .U.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
117141
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
118142
}
119143

120-
r = dryDB.Where("name = ?", 1).Table("(?) AS U, (?) AS P", DB.Model(&User{}).Select("NAME").Where("name = ?", 2), DB.Model(&Pet{}).Where("name = ?", 4).Select("NAME")).Where("name = ?", 3).Find(&User{}).Statement
121-
if !regexp.MustCompile("SELECT \\* FROM \\(SELECT .NAME. FROM .USERS. WHERE name = .+ AND .USERS.\\..DELETED_AT. IS NULL\\) AS U, \\(SELECT .NAME. FROM .PETS. WHERE name = .+ AND .PETS.\\..DELETED_AT. IS NULL\\) AS P WHERE name = .+ AND name = .+ AND .U.\\..DELETED_AT. IS NULL").MatchString(r.Statement.SQL.String()) {
144+
r = dryDB.Where("name = ?", 1).Table("(?) AS U, (?) AS P", DB.Model(&User{}).Select("name").Where("name = ?", 2), DB.Model(&Pet{}).Where("name = ?", 4).Select("name")).Where("name = ?", 3).Find(&User{}).Statement
145+
if !regexp.MustCompile("SELECT \\* FROM \\(SELECT .name. FROM .users. WHERE name = .+ AND .users.\\..deleted_at. IS NULL\\) AS U, \\(SELECT .name. FROM .pets. WHERE name = .+ AND .pets.\\..deleted_at. IS NULL\\) AS P WHERE name = .+ AND name = .+ AND .U.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
122146
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
123147
}
124148

125149
tests.AssertEqual(t, r.Statement.Vars, []interface{}{2, 4, 1, 3})
126150
}
127151

128152
func TestTableWithAllFields(t *testing.T) {
129-
t.Skip()
130153
dryDB := DB.Session(&gorm.Session{DryRun: true, QueryFields: true})
131-
userQuery := "SELECT .*USER.*ID.*USER.*CREATED_AT.*USER.*UPDATED_AT.*USER.*DELETED_AT.*USER.*NAME.*USER.*AGE" +
132-
".*USER.*BIRTHDAY.*USER.*COMPANY_ID.*USER.*MANAGER_ID.*USER.*ACTIVE.* "
154+
userQuery := "SELECT .*user.*id.*user.*created_at.*user.*updated_at.*user.*deleted_at.*user.*name.*user.*age" +
155+
".*user.*birthday.*user.*company_id.*user.*manager_id.*user.*active.* "
133156

134157
r := dryDB.Table("`user`").Find(&User{}).Statement
135158
if !regexp.MustCompile("" + userQuery + "FROM `user`").MatchString(r.Statement.SQL.String()) {
136159
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
137160
}
138161

139-
r = dryDB.Table("user U").Select("NAME").Find(&User{}).Statement
140-
if !regexp.MustCompile("SELECT .NAME. FROM user U WHERE .U.\\..DELETED_AT. IS NULL").MatchString(r.Statement.SQL.String()) {
162+
r = dryDB.Table("user U").Select("name").Find(&User{}).Statement
163+
if !regexp.MustCompile("SELECT .name. FROM user U WHERE .U.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
141164
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
142165
}
143166

144-
r = dryDB.Table("gorm.user").Select("NAME").Find(&User{}).Statement
145-
if !regexp.MustCompile("SELECT .NAME. FROM .gorm.\\..user. WHERE .user.\\..DELETED_AT. IS NULL").MatchString(r.Statement.SQL.String()) {
167+
r = dryDB.Table("gorm.user").Select("name").Find(&User{}).Statement
168+
if !regexp.MustCompile("SELECT .name. FROM .gorm.\\..user. WHERE .user.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
146169
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
147170
}
148171

149-
r = dryDB.Select("NAME").Find(&UserWithTable{}).Statement
150-
if !regexp.MustCompile("SELECT .NAME. FROM .gorm.\\..user. WHERE .user.\\..DELETED_AT. IS NULL").MatchString(r.Statement.SQL.String()) {
172+
r = dryDB.Select("name").Find(&UserWithTable{}).Statement
173+
if !regexp.MustCompile("SELECT .name. FROM .gorm.\\..user. WHERE .user.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
151174

152175
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
153176
}
154177

155178
r = dryDB.Create(&UserWithTable{}).Statement
156-
if !regexp.MustCompile(`INSERT INTO .user. (.*NAME.*) VALUES (.*)`).MatchString(r.Statement.SQL.String()) {
179+
if !regexp.MustCompile(`INSERT INTO .user. (.*name.*) VALUES (.*)`).MatchString(r.Statement.SQL.String()) {
157180
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
158181
}
159182

160-
userQueryCharacter := "SELECT .*U.*ID.*U.*CREATED_AT.*U.*UPDATED_AT.*U.*DELETED_AT.*U.*NAME.*U.*AGE.*U.*BIRTHDAY" +
161-
".*U.*COMPANY_ID.*U.*MANAGER_ID.*U.*ACTIVE.* "
183+
userQueryCharacter := "SELECT .*U.*id.*U.*created_at.*U.*updated_at.*U.*deleted_at.*U.*name.*U.*age.*U.*birthday" +
184+
".*U.*company_id.*U.*manager_id.*U.*active.* "
162185

163-
r = dryDB.Table("(?) AS U", DB.Model(&User{}).Select("NAME")).Find(&User{}).Statement
164-
if !regexp.MustCompile("" + userQueryCharacter + "FROM \\(SELECT .NAME. FROM .USERS. WHERE .USERS.\\..DELETED_AT. IS NULL\\) AS U WHERE .U.\\..DELETED_AT. IS NULL").MatchString(r.Statement.SQL.String()) {
186+
r = dryDB.Table("(?) AS U", DB.Model(&User{}).Select("name")).Find(&User{}).Statement
187+
if !regexp.MustCompile("" + userQueryCharacter + "FROM \\(SELECT .name. FROM .users. WHERE .users.\\..deleted_at. IS NULL\\) AS U WHERE .U.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
165188
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
166189
}
167190

168-
r = dryDB.Table("(?) AS U, (?) AS P", DB.Model(&User{}).Select("NAME"), DB.Model(&Pet{}).Select("NAME")).Find(&User{}).Statement
169-
if !regexp.MustCompile("" + userQueryCharacter + "FROM \\(SELECT .NAME. FROM .USERS. WHERE .USERS.\\..DELETED_AT. IS NULL\\) AS U, \\(SELECT .NAME. FROM .PETS. WHERE .PETS.\\..DELETED_AT. IS NULL\\) AS P WHERE .U.\\..DELETED_AT. IS NULL").MatchString(r.Statement.SQL.String()) {
191+
r = dryDB.Table("(?) AS U, (?) AS P", DB.Model(&User{}).Select("name"), DB.Model(&Pet{}).Select("name")).Find(&User{}).Statement
192+
if !regexp.MustCompile("" + userQueryCharacter + "FROM \\(SELECT .name. FROM .users. WHERE .users.\\..deleted_at. IS NULL\\) AS U, \\(SELECT .name. FROM .pets. WHERE .pets.\\..deleted_at. IS NULL\\) AS P WHERE .U.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
170193
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
171194
}
172195

173-
r = dryDB.Where("name = ?", 1).Table("(?) AS U, (?) AS P", DB.Model(&User{}).Select("NAME").Where("name = ?", 2), DB.Model(&Pet{}).Where("name = ?", 4).Select("NAME")).Where("name = ?", 3).Find(&User{}).Statement
174-
if !regexp.MustCompile("" + userQueryCharacter + "FROM \\(SELECT .NAME. FROM .USERS. WHERE name = .+ AND .USERS.\\..DELETED_AT. IS NULL\\) AS U, \\(SELECT .NAME. FROM .PETS. WHERE name = .+ AND .PETS.\\..DELETED_AT. IS NULL\\) AS P WHERE name = .+ AND name = .+ AND .U.\\..DELETED_AT. IS NULL").MatchString(r.Statement.SQL.String()) {
196+
r = dryDB.Where("name = ?", 1).Table("(?) AS U, (?) AS P", DB.Model(&User{}).Select("name").Where("name = ?", 2), DB.Model(&Pet{}).Where("name = ?", 4).Select("name")).Where("name = ?", 3).Find(&User{}).Statement
197+
if !regexp.MustCompile("" + userQueryCharacter + "FROM \\(SELECT .name. FROM .users. WHERE name = .+ AND .users.\\..deleted_at. IS NULL\\) AS U, \\(SELECT .name. FROM .pets. WHERE name = .+ AND .pets.\\..deleted_at. IS NULL\\) AS P WHERE name = .+ AND name = .+ AND .U.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
175198
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
176199
}
177200

0 commit comments

Comments
 (0)