From 5d853fc53c446a8ce4c60bd85a771b4d5c54999d Mon Sep 17 00:00:00 2001 From: Jinzhu Date: Wed, 19 Oct 2016 12:20:45 +0800 Subject: [PATCH] Fix null time not allowed in mysql5.7 test error --- create_test.go | 3 ++- customize_column_test.go | 9 ++++---- main_test.go | 46 +++++++++++++++++++++++----------------- migration_test.go | 11 +++++----- query_test.go | 29 ++++++++++++------------- 5 files changed, 54 insertions(+), 44 deletions(-) diff --git a/create_test.go b/create_test.go index 2d71c9a6..a6d7276b 100644 --- a/create_test.go +++ b/create_test.go @@ -9,7 +9,8 @@ import ( func TestCreate(t *testing.T) { float := 35.03554004971999 - user := User{Name: "CreateUser", Age: 18, Birthday: time.Now(), UserNum: Num(111), PasswordHash: []byte{'f', 'a', 'k', '4'}, Latitude: float} + now := time.Now() + user := User{Name: "CreateUser", Age: 18, Birthday: &now, UserNum: Num(111), PasswordHash: []byte{'f', 'a', 'k', '4'}, Latitude: float} if !DB.NewRecord(user) || !DB.NewRecord(&user) { t.Error("User should be new record before create") diff --git a/customize_column_test.go b/customize_column_test.go index 177b4a5d..ddb536b8 100644 --- a/customize_column_test.go +++ b/customize_column_test.go @@ -8,9 +8,9 @@ import ( ) type CustomizeColumn struct { - ID int64 `gorm:"column:mapped_id; primary_key:yes"` - Name string `gorm:"column:mapped_name"` - Date time.Time `gorm:"column:mapped_time"` + ID int64 `gorm:"column:mapped_id; primary_key:yes"` + Name string `gorm:"column:mapped_name"` + Date *time.Time `gorm:"column:mapped_time"` } // Make sure an ignored field does not interfere with another field's custom @@ -36,7 +36,8 @@ func TestCustomizeColumn(t *testing.T) { } expected := "foo" - cc := CustomizeColumn{ID: 666, Name: expected, Date: time.Now()} + now := time.Now() + cc := CustomizeColumn{ID: 666, Name: expected, Date: &now} if count := DB.Create(&cc).RowsAffected; count != 1 { t.Error("There should be one record be affected when create record") diff --git a/main_test.go b/main_test.go index 0e129dde..3084b733 100644 --- a/main_test.go +++ b/main_test.go @@ -371,9 +371,9 @@ func TestTransaction(t *testing.T) { } func TestRow(t *testing.T) { - user1 := User{Name: "RowUser1", Age: 1, Birthday: now.MustParse("2000-1-1")} - user2 := User{Name: "RowUser2", Age: 10, Birthday: now.MustParse("2010-1-1")} - user3 := User{Name: "RowUser3", Age: 20, Birthday: now.MustParse("2020-1-1")} + user1 := User{Name: "RowUser1", Age: 1, Birthday: parseTime("2000-1-1")} + user2 := User{Name: "RowUser2", Age: 10, Birthday: parseTime("2010-1-1")} + user3 := User{Name: "RowUser3", Age: 20, Birthday: parseTime("2020-1-1")} DB.Save(&user1).Save(&user2).Save(&user3) row := DB.Table("users").Where("name = ?", user2.Name).Select("age").Row() @@ -385,9 +385,9 @@ func TestRow(t *testing.T) { } func TestRows(t *testing.T) { - user1 := User{Name: "RowsUser1", Age: 1, Birthday: now.MustParse("2000-1-1")} - user2 := User{Name: "RowsUser2", Age: 10, Birthday: now.MustParse("2010-1-1")} - user3 := User{Name: "RowsUser3", Age: 20, Birthday: now.MustParse("2020-1-1")} + user1 := User{Name: "RowsUser1", Age: 1, Birthday: parseTime("2000-1-1")} + user2 := User{Name: "RowsUser2", Age: 10, Birthday: parseTime("2010-1-1")} + user3 := User{Name: "RowsUser3", Age: 20, Birthday: parseTime("2020-1-1")} DB.Save(&user1).Save(&user2).Save(&user3) rows, err := DB.Table("users").Where("name = ? or name = ?", user2.Name, user3.Name).Select("name, age").Rows() @@ -409,9 +409,9 @@ func TestRows(t *testing.T) { } func TestScanRows(t *testing.T) { - user1 := User{Name: "ScanRowsUser1", Age: 1, Birthday: now.MustParse("2000-1-1")} - user2 := User{Name: "ScanRowsUser2", Age: 10, Birthday: now.MustParse("2010-1-1")} - user3 := User{Name: "ScanRowsUser3", Age: 20, Birthday: now.MustParse("2020-1-1")} + user1 := User{Name: "ScanRowsUser1", Age: 1, Birthday: parseTime("2000-1-1")} + user2 := User{Name: "ScanRowsUser2", Age: 10, Birthday: parseTime("2010-1-1")} + user3 := User{Name: "ScanRowsUser3", Age: 20, Birthday: parseTime("2020-1-1")} DB.Save(&user1).Save(&user2).Save(&user3) rows, err := DB.Table("users").Where("name = ? or name = ?", user2.Name, user3.Name).Select("name, age").Rows() @@ -439,9 +439,9 @@ func TestScanRows(t *testing.T) { } func TestScan(t *testing.T) { - user1 := User{Name: "ScanUser1", Age: 1, Birthday: now.MustParse("2000-1-1")} - user2 := User{Name: "ScanUser2", Age: 10, Birthday: now.MustParse("2010-1-1")} - user3 := User{Name: "ScanUser3", Age: 20, Birthday: now.MustParse("2020-1-1")} + user1 := User{Name: "ScanUser1", Age: 1, Birthday: parseTime("2000-1-1")} + user2 := User{Name: "ScanUser2", Age: 10, Birthday: parseTime("2010-1-1")} + user3 := User{Name: "ScanUser3", Age: 20, Birthday: parseTime("2020-1-1")} DB.Save(&user1).Save(&user2).Save(&user3) type result struct { @@ -469,9 +469,9 @@ func TestScan(t *testing.T) { } func TestRaw(t *testing.T) { - user1 := User{Name: "ExecRawSqlUser1", Age: 1, Birthday: now.MustParse("2000-1-1")} - user2 := User{Name: "ExecRawSqlUser2", Age: 10, Birthday: now.MustParse("2010-1-1")} - user3 := User{Name: "ExecRawSqlUser3", Age: 20, Birthday: now.MustParse("2020-1-1")} + user1 := User{Name: "ExecRawSqlUser1", Age: 1, Birthday: parseTime("2000-1-1")} + user2 := User{Name: "ExecRawSqlUser2", Age: 10, Birthday: parseTime("2010-1-1")} + user3 := User{Name: "ExecRawSqlUser3", Age: 20, Birthday: parseTime("2020-1-1")} DB.Save(&user1).Save(&user2).Save(&user3) type result struct { @@ -611,11 +611,12 @@ func TestTimeWithZone(t *testing.T) { for index, vtime := range times { name := "time_with_zone_" + strconv.Itoa(index) - user := User{Name: name, Birthday: vtime} + user := User{Name: name, Birthday: &vtime} if !DialectHasTzSupport() { // If our driver dialect doesn't support TZ's, just use UTC for everything here. - user.Birthday = vtime.UTC() + utcBirthday := user.Birthday.UTC() + user.Birthday = &utcBirthday } DB.Save(&user) @@ -758,7 +759,8 @@ func BenchmarkGorm(b *testing.B) { b.N = 2000 for x := 0; x < b.N; x++ { e := strconv.Itoa(x) + "benchmark@example.org" - email := BigEmail{Email: e, UserAgent: "pc", RegisteredAt: time.Now()} + now := time.Now() + email := BigEmail{Email: e, UserAgent: "pc", RegisteredAt: &now} // Insert DB.Save(&email) // Query @@ -782,7 +784,8 @@ func BenchmarkRawSql(b *testing.B) { for x := 0; x < b.N; x++ { var id int64 e := strconv.Itoa(x) + "benchmark@example.org" - email := BigEmail{Email: e, UserAgent: "pc", RegisteredAt: time.Now()} + now := time.Now() + email := BigEmail{Email: e, UserAgent: "pc", RegisteredAt: &now} // Insert DB.QueryRow(insertSql, email.UserId, email.Email, email.UserAgent, email.RegisteredAt, time.Now(), time.Now()).Scan(&id) // Query @@ -794,3 +797,8 @@ func BenchmarkRawSql(b *testing.B) { DB.Exec(deleteSql, id) } } + +func parseTime(str string) *time.Time { + t := now.MustParse(str) + return &t +} diff --git a/migration_test.go b/migration_test.go index 1545ec2c..07603c19 100644 --- a/migration_test.go +++ b/migration_test.go @@ -18,7 +18,7 @@ type User struct { UserNum Num Name string `sql:"size:255"` Email string - Birthday time.Time // Time + Birthday *time.Time // Time 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 Emails []Email // Embedded structs @@ -333,9 +333,9 @@ func TestIndexes(t *testing.T) { type BigEmail struct { Id int64 UserId int64 - Email string `sql:"index:idx_email_agent"` - UserAgent string `sql:"index:idx_email_agent"` - RegisteredAt time.Time `sql:"unique_index"` + Email string `sql:"index:idx_email_agent"` + UserAgent string `sql:"index:idx_email_agent"` + RegisteredAt *time.Time `sql:"unique_index"` CreatedAt time.Time UpdatedAt time.Time } @@ -350,7 +350,8 @@ func TestAutoMigration(t *testing.T) { t.Errorf("Auto Migrate should not raise any error") } - DB.Save(&BigEmail{Email: "jinzhu@example.org", UserAgent: "pc", RegisteredAt: time.Now()}) + now := time.Now() + DB.Save(&BigEmail{Email: "jinzhu@example.org", UserAgent: "pc", RegisteredAt: &now}) scope := DB.NewScope(&BigEmail{}) if !scope.Dialect().HasIndex(scope.TableName(), "idx_email_agent") { diff --git a/query_test.go b/query_test.go index 1a500465..854beb6d 100644 --- a/query_test.go +++ b/query_test.go @@ -5,7 +5,6 @@ import ( "reflect" "github.com/jinzhu/gorm" - "github.com/jinzhu/now" "testing" "time" @@ -100,9 +99,9 @@ func TestFindAsSliceOfPointers(t *testing.T) { } func TestSearchWithPlainSQL(t *testing.T) { - user1 := User{Name: "PlainSqlUser1", Age: 1, Birthday: now.MustParse("2000-1-1")} - user2 := User{Name: "PlainSqlUser2", Age: 10, Birthday: now.MustParse("2010-1-1")} - user3 := User{Name: "PlainSqlUser3", Age: 20, Birthday: now.MustParse("2020-1-1")} + user1 := User{Name: "PlainSqlUser1", Age: 1, Birthday: parseTime("2000-1-1")} + user2 := User{Name: "PlainSqlUser2", Age: 10, Birthday: parseTime("2010-1-1")} + user3 := User{Name: "PlainSqlUser3", Age: 20, Birthday: parseTime("2020-1-1")} DB.Save(&user1).Save(&user2).Save(&user3) scopedb := DB.Where("name LIKE ?", "%PlainSqlUser%") @@ -130,7 +129,7 @@ func TestSearchWithPlainSQL(t *testing.T) { t.Errorf("Should found 2 users age != 20, but got %v", len(users)) } - scopedb.Where("birthday > ?", now.MustParse("2000-1-1")).Find(&users) + scopedb.Where("birthday > ?", parseTime("2000-1-1")).Find(&users) if len(users) != 2 { t.Errorf("Should found 2 users's birthday > 2000-1-1, but got %v", len(users)) } @@ -174,9 +173,9 @@ func TestSearchWithPlainSQL(t *testing.T) { } func TestSearchWithStruct(t *testing.T) { - user1 := User{Name: "StructSearchUser1", Age: 1, Birthday: now.MustParse("2000-1-1")} - user2 := User{Name: "StructSearchUser2", Age: 10, Birthday: now.MustParse("2010-1-1")} - user3 := User{Name: "StructSearchUser3", Age: 20, Birthday: now.MustParse("2020-1-1")} + user1 := User{Name: "StructSearchUser1", Age: 1, Birthday: parseTime("2000-1-1")} + user2 := User{Name: "StructSearchUser2", Age: 10, Birthday: parseTime("2010-1-1")} + user3 := User{Name: "StructSearchUser3", Age: 20, Birthday: parseTime("2020-1-1")} DB.Save(&user1).Save(&user2).Save(&user3) if DB.Where(user1.Id).First(&User{}).RecordNotFound() { @@ -221,10 +220,10 @@ func TestSearchWithStruct(t *testing.T) { func TestSearchWithMap(t *testing.T) { companyID := 1 - user1 := User{Name: "MapSearchUser1", Age: 1, Birthday: now.MustParse("2000-1-1")} - user2 := User{Name: "MapSearchUser2", Age: 10, Birthday: now.MustParse("2010-1-1")} - user3 := User{Name: "MapSearchUser3", Age: 20, Birthday: now.MustParse("2020-1-1")} - user4 := User{Name: "MapSearchUser4", Age: 30, Birthday: now.MustParse("2020-1-1"), CompanyID: &companyID} + user1 := User{Name: "MapSearchUser1", Age: 1, Birthday: parseTime("2000-1-1")} + user2 := User{Name: "MapSearchUser2", Age: 10, Birthday: parseTime("2010-1-1")} + user3 := User{Name: "MapSearchUser3", Age: 20, Birthday: parseTime("2020-1-1")} + user4 := User{Name: "MapSearchUser4", Age: 30, Birthday: parseTime("2020-1-1"), CompanyID: &companyID} DB.Save(&user1).Save(&user2).Save(&user3).Save(&user4) var user User @@ -267,9 +266,9 @@ func TestSearchWithMap(t *testing.T) { } func TestSearchWithEmptyChain(t *testing.T) { - user1 := User{Name: "ChainSearchUser1", Age: 1, Birthday: now.MustParse("2000-1-1")} - user2 := User{Name: "ChainearchUser2", Age: 10, Birthday: now.MustParse("2010-1-1")} - user3 := User{Name: "ChainearchUser3", Age: 20, Birthday: now.MustParse("2020-1-1")} + user1 := User{Name: "ChainSearchUser1", Age: 1, Birthday: parseTime("2000-1-1")} + user2 := User{Name: "ChainearchUser2", Age: 10, Birthday: parseTime("2010-1-1")} + user3 := User{Name: "ChainearchUser3", Age: 20, Birthday: parseTime("2020-1-1")} DB.Save(&user1).Save(&user2).Save(&user3) if DB.Where("").Where("").First(&User{}).Error != nil {