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

Function TestSelect

tests/query_test.go:777–837  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

775}
776
777func TestSelect(t *testing.T) {
778 user := User{Name: "SelectUser1"}
779 DB.Save(&user)
780
781 var result User
782 DB.Where("name = ?", user.Name).Select("name").Find(&result)
783 if result.ID != 0 {
784 t.Errorf("Should not have ID because only selected name, %+v", result.ID)
785 }
786
787 if user.Name != result.Name {
788 t.Errorf("Should have user Name when selected it")
789 }
790
791 var result2 User
792 DB.Where("name = ?", user.Name).Select("name as name").Find(&result2)
793 if result2.ID != 0 {
794 t.Errorf("Should not have ID because only selected name, %+v", result2.ID)
795 }
796
797 if user.Name != result2.Name {
798 t.Errorf("Should have user Name when selected it")
799 }
800
801 dryDB := DB.Session(&gorm.Session{DryRun: true})
802 r := dryDB.Select("name", "age").Find(&User{})
803 if !regexp.MustCompile("SELECT .*name.*,.*age.* FROM .*users.*").MatchString(r.Statement.SQL.String()) {
804 t.Fatalf("Build Select with strings, but got %v", r.Statement.SQL.String())
805 }
806
807 r = dryDB.Select([]string{"name", "age"}).Find(&User{})
808 if !regexp.MustCompile("SELECT .*name.*,.*age.* FROM .*users.*").MatchString(r.Statement.SQL.String()) {
809 t.Fatalf("Build Select with slice, but got %v", r.Statement.SQL.String())
810 }
811
812 // SELECT COALESCE(age,'42') FROM users;
813 r = dryDB.Table("users").Select("COALESCE(age,?)", 42).Find(&User{})
814 if !regexp.MustCompile(`SELECT COALESCE\(age,.*\) FROM .*users.*`).MatchString(r.Statement.SQL.String()) {
815 t.Fatalf("Build Select with func, but got %v", r.Statement.SQL.String())
816 }
817
818 // named arguments
819 r = dryDB.Table("users").Select("COALESCE(age, @default)", sql.Named("default", 42)).Find(&User{})
820 if !regexp.MustCompile(`SELECT COALESCE\(age,.*\) FROM .*users.*`).MatchString(r.Statement.SQL.String()) {
821 t.Fatalf("Build Select with func, but got %v", r.Statement.SQL.String())
822 }
823
824 if _, err := DB.Table("users").Select("COALESCE(age,?)", "42").Rows(); err != nil {
825 t.Fatalf("Failed, got error: %v", err)
826 }
827
828 r = dryDB.Select("u.*").Table("users as u").First(&User{}, user.ID)
829 if !regexp.MustCompile(`SELECT u\.\* FROM .*users.*`).MatchString(r.Statement.SQL.String()) {
830 t.Fatalf("Build Select with u.*, but got %v", r.Statement.SQL.String())
831 }
832
833 r = dryDB.Select("count(*)").Select("u.*").Table("users as u").First(&User{}, user.ID)
834 if !regexp.MustCompile(`SELECT u\.\* FROM .*users.*`).MatchString(r.Statement.SQL.String()) {

Callers

nothing calls this directly

Calls 9

SaveMethod · 0.80
SessionMethod · 0.80
FindMethod · 0.65
SelectMethod · 0.65
WhereMethod · 0.65
TableMethod · 0.65
RowsMethod · 0.65
FirstMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected