[#6372] Fix failed test case
This commit is contained in:
		
							parent
							
								
									68dccca079
								
							
						
					
					
						commit
						72695c5087
					
				
							
								
								
									
										69
									
								
								tests/automigration_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								tests/automigration_test.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,69 @@ | ||||
| package tests_test | ||||
| 
 | ||||
| import ( | ||||
| 	"testing" | ||||
| 	"time" | ||||
| ) | ||||
| 
 | ||||
| func TestSmartAutoMigrateColumnNullable(t *testing.T) { | ||||
| 	fullSupported := map[string]bool{"mysql": true, "postgres": true}[DB.Dialector.Name()] | ||||
| 
 | ||||
| 	type UserMigrateColumn struct { | ||||
| 		ID       uint | ||||
| 		Name     string | ||||
| 		Salary   float64 | ||||
| 		Bonus    float64 `gorm:"not null"` | ||||
| 		Stock    float64 | ||||
| 		Birthday time.Time `gorm:"precision:4"` | ||||
| 	} | ||||
| 
 | ||||
| 	DB.Migrator().DropTable(&UserMigrateColumn{}) | ||||
| 
 | ||||
| 	DB.AutoMigrate(&UserMigrateColumn{}) | ||||
| 
 | ||||
| 	type UserMigrateColumn2 struct { | ||||
| 		ID                  uint | ||||
| 		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"` | ||||
| 	} | ||||
| 
 | ||||
| 	if err := DB.Table("user_migrate_columns").AutoMigrate(&UserMigrateColumn2{}); err != nil { | ||||
| 		t.Fatalf("failed to auto migrate, got error: %v", err) | ||||
| 	} | ||||
| 
 | ||||
| 	columnTypes, err := DB.Table("user_migrate_columns").Migrator().ColumnTypes(&UserMigrateColumn{}) | ||||
| 	if err != nil { | ||||
| 		t.Fatalf("failed to get column types, got error: %v", err) | ||||
| 	} | ||||
| 
 | ||||
| 	for _, columnType := range columnTypes { | ||||
| 		switch columnType.Name() { | ||||
| 		case "name": | ||||
| 			if length, _ := columnType.Length(); (fullSupported || length != 0) && length != 128 { | ||||
| 				t.Fatalf("name's length should be 128, but got %v", length) | ||||
| 			} | ||||
| 		case "salary": | ||||
| 			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) | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @ -1945,66 +1945,3 @@ func TestMigrateWithUniqueIndexAndUnique(t *testing.T) { | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestSmartMigrateColumnNullable(t *testing.T) { | ||||
| 	fullSupported := map[string]bool{"mysql": true, "postgres": true}[DB.Dialector.Name()] | ||||
| 
 | ||||
| 	type UserMigrateColumn struct { | ||||
| 		ID       uint | ||||
| 		Name     string | ||||
| 		Salary   float64 | ||||
| 		Bonus    float64 `gorm:"not null"` | ||||
| 		Stock    float64 | ||||
| 		Birthday time.Time `gorm:"precision:4"` | ||||
| 	} | ||||
| 
 | ||||
| 	DB.Migrator().DropTable(&UserMigrateColumn{}) | ||||
| 
 | ||||
| 	DB.AutoMigrate(&UserMigrateColumn{}) | ||||
| 
 | ||||
| 	type UserMigrateColumn2 struct { | ||||
| 		ID                  uint | ||||
| 		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"` | ||||
| 	} | ||||
| 
 | ||||
| 	if err := DB.Table("user_migrate_columns").AutoMigrate(&UserMigrateColumn2{}); err != nil { | ||||
| 		t.Fatalf("failed to auto migrate, got error: %v", err) | ||||
| 	} | ||||
| 
 | ||||
| 	columnTypes, err := DB.Table("user_migrate_columns").Migrator().ColumnTypes(&UserMigrateColumn{}) | ||||
| 	if err != nil { | ||||
| 		t.Fatalf("failed to get column types, got error: %v", err) | ||||
| 	} | ||||
| 
 | ||||
| 	for _, columnType := range columnTypes { | ||||
| 		switch columnType.Name() { | ||||
| 		case "name": | ||||
| 			if length, _ := columnType.Length(); (fullSupported || length != 0) && length != 128 { | ||||
| 				t.Fatalf("name's length should be 128, but got %v", length) | ||||
| 			} | ||||
| 		case "salary": | ||||
| 			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) | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 홍성욱
						홍성욱