MCPcopy
hub / github.com/go-gorm/gorm / TestTableWithAllFields

Function TestTableWithAllFields

tests/table_test.go:97–152  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

95}
96
97func TestTableWithAllFields(t *testing.T) {
98 dryDB := DB.Session(&gorm.Session{DryRun: true, QueryFields: true})
99 userQuery := "SELECT .*user.*id.*user.*created_at.*user.*updated_at.*user.*deleted_at.*user.*name.*user.*age" +
100 ".*user.*birthday.*user.*company_id.*user.*manager_id.*user.*active.* "
101
102 r := dryDB.Table("`user`").Find(&User{}).Statement
103 if !regexp.MustCompile(userQuery + "FROM `user`").MatchString(r.Statement.SQL.String()) {
104 t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
105 }
106
107 r = dryDB.Table("user as u").Select("name").Find(&User{}).Statement
108 if !regexp.MustCompile("SELECT .name. FROM user as u WHERE .u.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
109 t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
110 }
111
112 r = dryDB.Table("gorm.user").Select("name").Find(&User{}).Statement
113 if !regexp.MustCompile("SELECT .name. FROM .gorm.\\..user. WHERE .user.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
114 t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
115 }
116
117 r = dryDB.Select("name").Find(&UserWithTable{}).Statement
118 if !regexp.MustCompile("SELECT .name. FROM .gorm.\\..user. WHERE .user.\\..deleted_at. IS NULL").MatchString(r.Statement.SQL.String()) {
119 t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
120 }
121
122 r = dryDB.Create(&UserWithTable{}).Statement
123 if DB.Dialector.Name() != "sqlite" {
124 if !regexp.MustCompile(`INSERT INTO .gorm.\..user. (.*name.*) VALUES (.*)`).MatchString(r.Statement.SQL.String()) {
125 t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
126 }
127 } else {
128 if !regexp.MustCompile(`INSERT INTO .user. (.*name.*) VALUES (.*)`).MatchString(r.Statement.SQL.String()) {
129 t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
130 }
131 }
132
133 userQueryCharacter := "SELECT .*u.*id.*u.*created_at.*u.*updated_at.*u.*deleted_at.*u.*name.*u.*age.*u.*birthday" +
134 ".*u.*company_id.*u.*manager_id.*u.*active.* "
135
136 r = dryDB.Table("(?) as u", DB.Model(&User{}).Select("name")).Find(&User{}).Statement
137 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()) {
138 t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
139 }
140
141 r = dryDB.Table("(?) as u, (?) as p", DB.Model(&User{}).Select("name"), DB.Model(&Pet{}).Select("name")).Find(&User{}).Statement
142 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()) {
143 t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
144 }
145
146 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
147 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()) {
148 t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
149 }
150
151 AssertEqual(t, r.Statement.Vars, []interface{}{2, 4, 1, 3})
152}
153
154type UserWithTableNamer struct {

Callers

nothing calls this directly

Calls 10

SessionMethod · 0.80
ModelMethod · 0.80
FindMethod · 0.65
TableMethod · 0.65
SelectMethod · 0.65
CreateMethod · 0.65
NameMethod · 0.65
WhereMethod · 0.65
AssertEqualFunction · 0.50
StringMethod · 0.45

Tested by

no test coverage detected