diff --git a/tests/migrate_test.go b/tests/migrate_test.go index d955c8d7f..850f63a86 100644 --- a/tests/migrate_test.go +++ b/tests/migrate_test.go @@ -148,6 +148,8 @@ func TestSmartMigrateColumn(t *testing.T) { ID uint Name string Salary float64 + Bonus float64 `gorm:"not null"` + Stock float64 Birthday time.Time `gorm:"precision:4"` } @@ -157,8 +159,10 @@ func TestSmartMigrateColumn(t *testing.T) { type UserMigrateColumn2 struct { ID uint - Name string `gorm:"size:128"` - Salary float64 `gorm:"precision:2"` + Name string `gorm:"size:128"` + Salary float64 `gorm:"precision:2"` + Bonus float64 + Stock float64 `gorm:"not null"` Birthday time.Time `gorm:"precision:2"` NameIgnoreMigration string `gorm:"size:100"` } @@ -182,6 +186,16 @@ func TestSmartMigrateColumn(t *testing.T) { if precision, o, _ := columnType.DecimalSize(); (fullSupported || precision != 0) && precision != 2 { t.Fatalf("salary's precision should be 2, but got %v %v", precision, o) } + case "bonus": + // allow to change non-nullable to nullable + if nullable, _ := columnType.Nullable(); !nullable { + t.Fatalf("bonus's nullable should be true, bug got %t", nullable) + } + case "stock": + // do not allow to change nullable to non-nullable + if nullable, _ := columnType.Nullable(); !nullable { + t.Fatalf("stock's nullable should be true, bug got %t", nullable) + } case "birthday": if precision, _, _ := columnType.DecimalSize(); (fullSupported || precision != 0) && precision != 2 { t.Fatalf("birthday's precision should be 2, but got %v", precision)