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  }