Update migrate_test.go
This commit is contained in:
parent
18f40cb700
commit
89500f440a
@ -10,10 +10,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gorm.io/driver/mysql"
|
|
||||||
"gorm.io/driver/postgres"
|
"gorm.io/driver/postgres"
|
||||||
"gorm.io/driver/sqlite"
|
|
||||||
"gorm.io/driver/sqlserver"
|
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
"gorm.io/gorm/logger"
|
"gorm.io/gorm/logger"
|
||||||
"gorm.io/gorm/schema"
|
"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) {
|
func TestUniqueColumn(t *testing.T) {
|
||||||
if DB.Dialector.Name() != "mysql" {
|
if DB.Dialector.Name() != "mysql" {
|
||||||
return
|
return
|
||||||
@ -1111,48 +1134,6 @@ func (mm mockMigrator) AlterColumn(dst interface{}, field string) error {
|
|||||||
return fmt.Errorf("trigger alter column error, field: %s", field)
|
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) {
|
func TestMigrateDonotAlterColumn(t *testing.T) {
|
||||||
var wrapMockMigrator = func(m gorm.Migrator) mockMigrator {
|
var wrapMockMigrator = func(m gorm.Migrator) mockMigrator {
|
||||||
return mockMigrator{
|
return mockMigrator{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user