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

Function TestToSQL

tests/sql_builder_test.go:360–456  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

358}
359
360func TestToSQL(t *testing.T) {
361 // By default DB.DryRun should false
362 if DB.DryRun {
363 t.Fatal("Failed expect DB.DryRun to be false")
364 }
365
366 if DB.Dialector.Name() == "sqlserver" {
367 t.Skip("Skip SQL Server for this test, because it too difference with other dialects.")
368 }
369
370 date, _ := time.ParseInLocation("2006-01-02", "2021-10-18", time.Local)
371
372 // find
373 sql := DB.ToSQL(func(tx *gorm.DB) *gorm.DB {
374 return tx.Model(&User{}).Where("id = ?", 100).Limit(10).Order("age desc").Find(&[]User{})
375 })
376 assertEqualSQL(t, `SELECT * FROM "users" WHERE id = 100 AND "users"."deleted_at" IS NULL ORDER BY age desc LIMIT 10`, sql)
377
378 // after model changed
379 if DB.Statement.DryRun || DB.DryRun {
380 t.Fatal("Failed expect DB.DryRun and DB.Statement.ToSQL to be false")
381 }
382
383 if DB.Statement.SQL.String() != "" {
384 t.Fatal("Failed expect DB.Statement.SQL to be empty")
385 }
386
387 // first
388 sql = DB.ToSQL(func(tx *gorm.DB) *gorm.DB {
389 return tx.Model(&User{}).Where(&User{Name: "foo", Age: 20}).Limit(10).Offset(5).Order("name ASC").First(&User{})
390 })
391 assertEqualSQL(t, `SELECT * FROM "users" WHERE ("users"."name" = 'foo' AND "users"."age" = 20) AND "users"."deleted_at" IS NULL ORDER BY name ASC,"users"."id" LIMIT 1 OFFSET 5`, sql)
392
393 // last and unscoped
394 sql = DB.ToSQL(func(tx *gorm.DB) *gorm.DB {
395 return tx.Model(&User{}).Unscoped().Where(&User{Name: "bar", Age: 12}).Limit(10).Offset(5).Order("name ASC").Last(&User{})
396 })
397 assertEqualSQL(t, `SELECT * FROM "users" WHERE "users"."name" = 'bar' AND "users"."age" = 12 ORDER BY name ASC,"users"."id" DESC LIMIT 1 OFFSET 5`, sql)
398
399 // create
400 user := &User{Name: "foo", Age: 20}
401 user.CreatedAt = date
402 user.UpdatedAt = date
403 sql = DB.ToSQL(func(tx *gorm.DB) *gorm.DB {
404 return tx.Model(&User{}).Create(user)
405 })
406 assertEqualSQL(t, `INSERT INTO "users" ("created_at","updated_at","deleted_at","name","age","birthday","company_id","manager_id","active") VALUES ('2021-10-18 00:00:00','2021-10-18 00:00:00',NULL,'foo',20,NULL,NULL,NULL,false) RETURNING "id"`, sql)
407
408 // save
409 user = &User{Name: "foo", Age: 20}
410 user.CreatedAt = date
411 user.UpdatedAt = date
412 sql = DB.ToSQL(func(tx *gorm.DB) *gorm.DB {
413 return tx.Model(&User{}).Save(user)
414 })
415 assertEqualSQL(t, `INSERT INTO "users" ("created_at","updated_at","deleted_at","name","age","birthday","company_id","manager_id","active") VALUES ('2021-10-18 00:00:00','2021-10-18 00:00:00',NULL,'foo',20,NULL,NULL,NULL,false) RETURNING "id"`, sql)
416
417 // updates

Callers

nothing calls this directly

Calls 15

assertEqualSQLFunction · 0.85
ToSQLMethod · 0.80
ModelMethod · 0.80
SaveMethod · 0.80
UpdateColumnMethod · 0.80
UpdateColumnsMethod · 0.80
NameMethod · 0.65
FindMethod · 0.65
OrderMethod · 0.65
LimitMethod · 0.65
WhereMethod · 0.65
FirstMethod · 0.65

Tested by

no test coverage detected