github.com/unionj-cloud/go-doudou/v2@v2.3.5/toolkit/gormgen/field/field_test.go (about) 1 package field 2 3 import ( 4 "reflect" 5 "strings" 6 "sync" 7 "testing" 8 9 "gorm.io/gorm" 10 "gorm.io/gorm/clause" 11 "gorm.io/gorm/schema" 12 "gorm.io/gorm/utils/tests" 13 ) 14 15 var db, _ = gorm.Open(tests.DummyDialector{}, nil) 16 17 func GetStatement() *gorm.Statement { 18 user, _ := schema.Parse(&User{}, &sync.Map{}, db.NamingStrategy) 19 return &gorm.Statement{DB: db, Table: user.Table, Schema: user, Clauses: map[string]clause.Clause{}} 20 } 21 22 func CheckBuildExpr(t *testing.T, e Expr, result string, vars []interface{}) { 23 stmt := GetStatement() 24 25 e.expression().Build(stmt) 26 27 sql := strings.TrimSpace(stmt.SQL.String()) 28 if sql != result { 29 t.Errorf("SQL expects %v got %v", result, sql) 30 } 31 32 if !reflect.DeepEqual(stmt.Vars, vars) { 33 t.Errorf("Vars expects %+v got %v", stmt.Vars, vars) 34 } 35 } 36 37 func BuildToString(e Expr) (string, []interface{}) { 38 stmt := GetStatement() 39 40 e.expression().Build(stmt) 41 42 return stmt.SQL.String(), stmt.Vars 43 } 44 45 type User struct { 46 gorm.Model 47 Name string 48 Age uint 49 // Birthday *time.Time 50 // Account Account 51 // Pets []*Pet 52 // Toys []Toy `gorm:"polymorphic:Owner"` 53 // CompanyID *int 54 // Company Company 55 // ManagerID *uint 56 // Manager *User 57 // Team []User `gorm:"foreignkey:ManagerID"` 58 // Languages []Language `gorm:"many2many:UserSpeak;"` 59 // Friends []*User `gorm:"many2many:user_friends;"` 60 // Active bool 61 }