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