Update migrate_test.go

This commit is contained in:
Jinzhu 2022-12-24 17:36:41 +08:00 committed by GitHub
parent 18f40cb700
commit 89500f440a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -10,10 +10,7 @@ import (
"testing"
"time"
"gorm.io/driver/mysql"
"gorm.io/driver/postgres"
"gorm.io/driver/sqlite"
"gorm.io/driver/sqlserver"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"gorm.io/gorm/schema"
@ -759,6 +756,32 @@ func TestPrimarykeyID(t *testing.T) {
}
}
func TestCurrentTimestamp(t *testing.T) {
if DB.Dialector.Name() != "mysql" {
return
}
type CurrentTimestampTest struct {
ID string `gorm:"primary_key"`
TimeAt *time.Time `gorm:"type:datetime;not null;default:CURRENT_TIMESTAMP;unique"`
}
var err error
err = DB.Migrator().DropTable(&CurrentTimestampTest{})
if err != nil {
t.Errorf("DropTable err:%v", err)
}
err = DB.AutoMigrate(&CurrentTimestampTest{})
if err != nil {
t.Fatalf("AutoMigrate err:%v", err)
}
err = DB.AutoMigrate(&CurrentTimestampTest{})
if err != nil {
t.Fatalf("AutoMigrate err:%v", err)
}
AssertEqual(t, true, DB.Migrator().HasIndex(&CurrentTimestampTest{}, "time_at"))
AssertEqual(t, false, DB.Migrator().HasIndex(&CurrentTimestampTest{}, "time_at_2"))
}
func TestUniqueColumn(t *testing.T) {
if DB.Dialector.Name() != "mysql" {
return
@ -1111,48 +1134,6 @@ func (mm mockMigrator) AlterColumn(dst interface{}, field string) error {
return fmt.Errorf("trigger alter column error, field: %s", field)
}
type mockDialector struct {
gorm.Dialector
m gorm.Migrator
}
func (md mockDialector) Migrator(db *gorm.DB) gorm.Migrator {
return mockMigrator{
Migrator: md.m,
}
}
func (mm mockMigrator) AutoMigrate(dst ...interface{}) error {
switch dm := mm.Migrator.(type) {
case postgres.Migrator:
d := mockDialector{
Dialector: postgres.Dialector{},
m: mm,
}
dm.DB.Dialector = d
case mysql.Migrator:
d := mockDialector{
Dialector: mysql.Dialector{},
m: mm,
}
dm.DB.Dialector = d
case sqlite.Migrator:
d := mockDialector{
Dialector: sqlite.Dialector{},
m: mm,
}
dm.DB.Dialector = d
case sqlserver.Migrator:
d := mockDialector{
Dialector: sqlserver.Dialector{},
m: mm,
}
dm.DB.Dialector = d
}
return mm.Migrator.AutoMigrate(dst...)
}
func TestMigrateDonotAlterColumn(t *testing.T) {
var wrapMockMigrator = func(m gorm.Migrator) mockMigrator {
return mockMigrator{