Update MigrateColumn Test
This commit is contained in:
parent
edb3c428d2
commit
d72583af5e
@ -45,6 +45,7 @@ type ColumnType interface {
|
||||
Length() (length int64, ok bool)
|
||||
DecimalSize() (precision int64, scale int64, ok bool)
|
||||
Nullable() (nullable bool, ok bool)
|
||||
Unique() (unique bool, ok bool)
|
||||
ScanType() reflect.Type
|
||||
Comment() (value string, ok bool)
|
||||
DefaultValue() (value string, ok bool)
|
||||
|
@ -92,7 +92,7 @@ func TestAutoMigrateSelfReferential(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestSmartMigrateColumn(t *testing.T) {
|
||||
fullSupported := map[string]bool{"mysql": true}[DB.Dialector.Name()]
|
||||
fullSupported := map[string]bool{"mysql": true, "postgres": true}[DB.Dialector.Name()]
|
||||
|
||||
type UserMigrateColumn struct {
|
||||
ID uint
|
||||
@ -313,9 +313,14 @@ func TestMigrateIndexes(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestMigrateColumns(t *testing.T) {
|
||||
fullSupported := map[string]bool{"sqlite": true, "mysql": true, "postgres": true}[DB.Dialector.Name()]
|
||||
sqlite := DB.Dialector.Name() == "sqlite"
|
||||
|
||||
type ColumnStruct struct {
|
||||
gorm.Model
|
||||
Name string
|
||||
Age int `gorm:"default:18;comment:my age"`
|
||||
Code string `gorm:"unique"`
|
||||
}
|
||||
|
||||
DB.Migrator().DropTable(&ColumnStruct{})
|
||||
@ -340,10 +345,30 @@ func TestMigrateColumns(t *testing.T) {
|
||||
stmt.Parse(&ColumnStruct2{})
|
||||
|
||||
for _, columnType := range columnTypes {
|
||||
if columnType.Name() == "name" {
|
||||
switch columnType.Name() {
|
||||
case "id":
|
||||
if v, ok := columnType.PrimaryKey(); (fullSupported || ok) && !v {
|
||||
t.Fatalf("column id primary key should be correct, name: %v, column: %#v", columnType.Name(), columnType)
|
||||
}
|
||||
case "name":
|
||||
dataType := DB.Dialector.DataTypeOf(stmt.Schema.LookUpField(columnType.Name()))
|
||||
if !strings.Contains(strings.ToUpper(dataType), strings.ToUpper(columnType.DatabaseTypeName())) {
|
||||
t.Errorf("column type should be correct, name: %v, length: %v, expects: %v", columnType.Name(), columnType.DatabaseTypeName(), dataType)
|
||||
t.Fatalf("column name type should be correct, name: %v, length: %v, expects: %v, column: %#v", columnType.Name(), columnType.DatabaseTypeName(), dataType, columnType)
|
||||
}
|
||||
if length, ok := columnType.Length(); ((fullSupported && !sqlite) || ok) && length != 100 {
|
||||
t.Fatalf("column name length should be correct, name: %v, length: %v, expects: %v, column: %#v", columnType.Name(), length, 100, columnType)
|
||||
}
|
||||
case "age":
|
||||
if v, ok := columnType.DefaultValue(); (fullSupported || ok) && v != "18" {
|
||||
t.Fatalf("column age default value should be correct, name: %v, column: %#v", columnType.Name(), columnType)
|
||||
}
|
||||
if v, ok := columnType.Comment(); ((fullSupported && !sqlite) || ok) && v != "my age" {
|
||||
t.Fatalf("column age comment should be correct, name: %v, column: %#v", columnType.Name(), columnType)
|
||||
}
|
||||
|
||||
case "code":
|
||||
if v, ok := columnType.Unique(); (fullSupported || ok) && !v {
|
||||
t.Fatalf("column code unique should be correct, name: %v, column: %#v", columnType.Name(), columnType)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user