forked from mirror/gorm
test(MigrateColumn): mock alter column to improve field compare (#5499)
* test(MigrateColumn): mock alter column to improve field compare * Update migrate_test.go * Update migrate_test.go * Update migrate_test.go Co-authored-by: Jinzhu <wosmvp@gmail.com>
This commit is contained in:
parent
1935eb0adb
commit
794edad60e
|
@ -11,7 +11,6 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gorm.io/driver/postgres"
|
"gorm.io/driver/postgres"
|
||||||
|
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
"gorm.io/gorm/logger"
|
"gorm.io/gorm/logger"
|
||||||
"gorm.io/gorm/schema"
|
"gorm.io/gorm/schema"
|
||||||
|
@ -29,7 +28,7 @@ func TestMigrate(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := DB.AutoMigrate(allModels...); err != nil {
|
if err := DB.AutoMigrate(allModels...); err != nil {
|
||||||
t.Fatalf("Failed to auto migrate, but got error %v", err)
|
t.Fatalf("Failed to auto migrate, got error %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if tables, err := DB.Migrator().GetTables(); err != nil {
|
if tables, err := DB.Migrator().GetTables(); err != nil {
|
||||||
|
@ -1123,6 +1122,50 @@ func TestMigrateArrayTypeModel(t *testing.T) {
|
||||||
AssertEqual(t, "integer[]", ct.DatabaseTypeName())
|
AssertEqual(t, "integer[]", ct.DatabaseTypeName())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type mockMigrator struct {
|
||||||
|
gorm.Migrator
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mm mockMigrator) AlterColumn(dst interface{}, field string) error {
|
||||||
|
err := mm.Migrator.AlterColumn(dst, field)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return fmt.Errorf("trigger alter column error, field: %s", field)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestMigrateDonotAlterColumn(t *testing.T) {
|
||||||
|
var wrapMockMigrator = func(m gorm.Migrator) mockMigrator {
|
||||||
|
return mockMigrator{
|
||||||
|
Migrator: m,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m := DB.Migrator()
|
||||||
|
mockM := wrapMockMigrator(m)
|
||||||
|
|
||||||
|
type NotTriggerUpdate struct {
|
||||||
|
ID uint
|
||||||
|
F1 uint16
|
||||||
|
F2 uint32
|
||||||
|
F3 int
|
||||||
|
F4 int64
|
||||||
|
F5 string
|
||||||
|
F6 float32
|
||||||
|
F7 float64
|
||||||
|
F8 time.Time
|
||||||
|
F9 bool
|
||||||
|
F10 []byte
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
err = mockM.DropTable(&NotTriggerUpdate{})
|
||||||
|
AssertEqual(t, err, nil)
|
||||||
|
err = mockM.AutoMigrate(&NotTriggerUpdate{})
|
||||||
|
AssertEqual(t, err, nil)
|
||||||
|
err = mockM.AutoMigrate(&NotTriggerUpdate{})
|
||||||
|
AssertEqual(t, err, nil)
|
||||||
|
}
|
||||||
|
|
||||||
func TestMigrateSameEmbeddedFieldName(t *testing.T) {
|
func TestMigrateSameEmbeddedFieldName(t *testing.T) {
|
||||||
type UserStat struct {
|
type UserStat struct {
|
||||||
GroundDestroyCount int
|
GroundDestroyCount int
|
||||||
|
|
Loading…
Reference in New Issue