Refact tests

This commit is contained in:
Jinzhu 2014-07-29 16:25:38 +08:00
parent 468e54f0ee
commit 62fd13e04e
4 changed files with 67 additions and 91 deletions

View File

@ -117,6 +117,16 @@ func TestSetTable(t *testing.T) {
} }
} }
type Order struct {
}
type Cart struct {
}
func (c Cart) TableName() string {
return "shopping_cart"
}
func TestTableName(t *testing.T) { func TestTableName(t *testing.T) {
db := db.Model("") db := db.Model("")
if db.NewScope(Order{}).TableName() != "orders" { if db.NewScope(Order{}).TableName() != "orders" {
@ -439,6 +449,11 @@ func TestTimeWithZone(t *testing.T) {
} }
func TestHstore(t *testing.T) { func TestHstore(t *testing.T) {
type Details struct {
Id int64
Bulk gorm.Hstore
}
if dialect := os.Getenv("GORM_DIALECT"); dialect != "postgres" { if dialect := os.Getenv("GORM_DIALECT"); dialect != "postgres" {
t.Skip() t.Skip()
} }

View File

@ -51,10 +51,6 @@ func runMigration() {
if err := db.AutoMigrate(Role{}).Error; err != nil { if err := db.AutoMigrate(Role{}).Error; err != nil {
panic(fmt.Sprintf("No error should happen when create table, but got %+v", err)) panic(fmt.Sprintf("No error should happen when create table, but got %+v", err))
} }
if err := db.AutoMigrate(UserCompany{}).Error; err != nil {
panic(fmt.Sprintf("No error should happen when create table, but got %+v", err))
}
} }
func TestIndexes(t *testing.T) { func TestIndexes(t *testing.T) {

View File

@ -127,7 +127,7 @@ func TestRelated(t *testing.T) {
} }
func TestQueryManyToManyWithRelated(t *testing.T) { func TestQueryManyToManyWithRelated(t *testing.T) {
db.Model(&User{}).Related(&[]Language{}, "Languages") // db.Model(&User{}).Related(&[]Language{}, "Languages")
// SELECT `languages`.* FROM `languages` INNER JOIN `user_languages` ON `languages`.`id` = `user_languages`.`language_id` WHERE `user_languages`.`user_id` = 111 // SELECT `languages`.* FROM `languages` INNER JOIN `user_languages` ON `languages`.`id` = `user_languages`.`language_id` WHERE `user_languages`.`user_id` = 111
// db.Model(&User{}).Many2Many("Languages").Find(&[]Language{}) // db.Model(&User{}).Many2Many("Languages").Find(&[]Language{})
// db.Model(&User{}).Many2Many("Languages").Add(&Language{}) // db.Model(&User{}).Many2Many("Languages").Add(&Language{})

View File

@ -5,56 +5,10 @@ import (
"database/sql/driver" "database/sql/driver"
"errors" "errors"
"github.com/jinzhu/gorm"
"reflect" "reflect"
"time" "time"
) )
type Company struct {
Id int64
Name string
}
type Role struct {
Name string
}
func (role *Role) Scan(value interface{}) error {
role.Name = string(value.([]uint8))
return nil
}
func (role Role) Value() (driver.Value, error) {
return role.Name, nil
}
func (role Role) IsAdmin() bool {
return role.Name == "admin"
}
type Language struct {
Id int
Name string
}
type Ignored struct {
Name string
}
type Num int64
func (i *Num) Scan(src interface{}) error {
switch s := src.(type) {
case []byte:
case int64:
*i = Num(s)
default:
return errors.New("Cannot scan NamedInt from " + reflect.ValueOf(src).String())
}
return nil
}
type User struct { type User struct {
Id int64 Id int64
Age int64 Age int64
@ -64,7 +18,6 @@ type User struct {
CreatedAt time.Time // CreatedAt: Time of record is created, will be insert automatically CreatedAt time.Time // CreatedAt: Time of record is created, will be insert automatically
UpdatedAt time.Time // UpdatedAt: Time of record is updated, will be updated automatically UpdatedAt time.Time // UpdatedAt: Time of record is updated, will be updated automatically
Emails []Email // Embedded structs Emails []Email // Embedded structs
Ignored Ignored `sql:"-"`
BillingAddress Address // Embedded struct BillingAddress Address // Embedded struct
BillingAddressId sql.NullInt64 // Embedded struct's foreign key BillingAddressId sql.NullInt64 // Embedded struct's foreign key
ShippingAddress Address // Embedded struct ShippingAddress Address // Embedded struct
@ -75,18 +28,9 @@ type User struct {
Company Company
Role Role
PasswordHash []byte PasswordHash []byte
IgnoreMe int64 `sql:"-"` IgnoreMe int64 `sql:"-"`
IgnoreStringSlice []string `sql:"-"` IgnoreStringSlice []string `sql:"-"`
} Ignored struct{ Name string } `sql:"-"`
type UserCompany struct {
Id int64
UserId int64
CompanyId int64
}
func (t UserCompany) TableName() string {
return "user_companies"
} }
type CreditCard struct { type CreditCard struct {
@ -133,6 +77,41 @@ type Product struct {
AfterDeleteCallTimes int64 AfterDeleteCallTimes int64
} }
type Company struct {
Id int64
Name string
}
type Role struct {
Name string
}
func (role *Role) Scan(value interface{}) error {
role.Name = string(value.([]uint8))
return nil
}
func (role Role) Value() (driver.Value, error) {
return role.Name, nil
}
func (role Role) IsAdmin() bool {
return role.Name == "admin"
}
type Num int64
func (i *Num) Scan(src interface{}) error {
switch s := src.(type) {
case []byte:
case int64:
*i = Num(s)
default:
return errors.New("Cannot scan NamedInt from " + reflect.ValueOf(src).String())
}
return nil
}
type Animal struct { type Animal struct {
Counter int64 `primaryKey:"yes"` Counter int64 `primaryKey:"yes"`
Name string Name string
@ -141,16 +120,6 @@ type Animal struct {
UpdatedAt time.Time UpdatedAt time.Time
} }
type Details struct {
Id int64
Bulk gorm.Hstore
}
type Category struct {
Id int64
Name string
}
type Post struct { type Post struct {
Id int64 Id int64
CategoryId sql.NullInt64 CategoryId sql.NullInt64
@ -162,6 +131,11 @@ type Post struct {
MainCategory Category MainCategory Category
} }
type Category struct {
Id int64
Name string
}
type Comment struct { type Comment struct {
Id int64 Id int64
PostId int64 PostId int64
@ -169,14 +143,14 @@ type Comment struct {
Post Post Post Post
} }
type Order struct { // Scanner
} type NullValue struct {
Id int64
type Cart struct { Name sql.NullString `sql:"not null"`
} Age sql.NullInt64
Male sql.NullBool
func (c Cart) TableName() string { Height sql.NullFloat64
return "shopping_cart" AddedAt NullTime
} }
type NullTime struct { type NullTime struct {
@ -199,12 +173,3 @@ func (nt NullTime) Value() (driver.Value, error) {
} }
return nt.Time, nil return nt.Time, nil
} }
type NullValue struct {
Id int64
Name sql.NullString `sql:"not null"`
Age sql.NullInt64
Male sql.NullBool
Height sql.NullFloat64
AddedAt NullTime
}