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

Function TestGenericsRow

tests/generics_test.go:192–270  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

190}
191
192func TestGenericsRow(t *testing.T) {
193 ctx := context.Background()
194
195 user := User{Name: "GenericsRow"}
196 if err := gorm.G[User](DB).Create(ctx, &user); err != nil {
197 t.Fatalf("Create failed: %v", err)
198 }
199
200 rawSQLUserRow := gorm.G[User](DB).Raw("SELECT name FROM ? WHERE id = ?", clause.Table{Name: clause.CurrentTable}, user.ID).Row(ctx)
201 var name string
202 if err := rawSQLUserRow.Scan(&name); err != nil {
203 t.Fatalf("rawSQLUserRow scan failed: %v", err)
204 }
205 if name != user.Name {
206 t.Errorf("expected %s, got %s", user.Name, name)
207 }
208
209 var scannedUserName string
210 selectUserRow := gorm.G[User](DB).Select("name").Where("name = ?", user.Name).Row(ctx)
211 if err := selectUserRow.Scan(&scannedUserName); err != nil {
212 t.Fatalf("selectUserRow scan failed: %v", err)
213 }
214 if name != user.Name {
215 t.Errorf("expected %s, got %s", user.Name, scannedUserName)
216 }
217
218 user2 := User{Name: "GenericsRow2"}
219 if err := gorm.G[User](DB).Create(ctx, &user2); err != nil {
220 t.Fatalf("Create failed: %v", err)
221 }
222 rawSQLUserRows, err := gorm.G[User](DB).Raw("SELECT name FROM users WHERE id IN ?", []uint{user.ID, user2.ID}).Rows(ctx)
223 if err != nil {
224 t.Fatalf("rawSQLUserRows failed: %v", err)
225 }
226
227 count := 0
228 for rawSQLUserRows.Next() {
229 var name string
230 if err := rawSQLUserRows.Scan(&name); err != nil {
231 t.Fatalf("rawSQLUserRows.Scan failed: %v", err)
232 }
233 count++
234 }
235 if count != 2 {
236 t.Errorf("expected 2 rows, got %d", count)
237 }
238
239 selectNameUserRows, err := gorm.G[User](DB).Select("name").Where("id IN ?", []uint{user.ID, user2.ID}).Rows(ctx)
240 if err != nil {
241 t.Fatalf("selectNameUserRows failed: %v", err)
242 }
243 count = 0
244 for selectNameUserRows.Next() {
245 var name string
246 if err := selectNameUserRows.Scan(&name); err != nil {
247 t.Fatalf("selectNameUserRows.Scan failed: %v", err)
248 }
249 count++

Callers

nothing calls this directly

Calls 9

NextMethod · 0.80
ScanRowsMethod · 0.80
CreateMethod · 0.65
RowMethod · 0.65
RawMethod · 0.65
ScanMethod · 0.65
WhereMethod · 0.65
SelectMethod · 0.65
RowsMethod · 0.65

Tested by

no test coverage detected