Update MigrateColumn Test
This commit is contained in:
		
							parent
							
								
									edb3c428d2
								
							
						
					
					
						commit
						d72583af5e
					
				@ -45,6 +45,7 @@ type ColumnType interface {
 | 
				
			|||||||
	Length() (length int64, ok bool)
 | 
						Length() (length int64, ok bool)
 | 
				
			||||||
	DecimalSize() (precision int64, scale int64, ok bool)
 | 
						DecimalSize() (precision int64, scale int64, ok bool)
 | 
				
			||||||
	Nullable() (nullable bool, ok bool)
 | 
						Nullable() (nullable bool, ok bool)
 | 
				
			||||||
 | 
						Unique() (unique bool, ok bool)
 | 
				
			||||||
	ScanType() reflect.Type
 | 
						ScanType() reflect.Type
 | 
				
			||||||
	Comment() (value string, ok bool)
 | 
						Comment() (value string, ok bool)
 | 
				
			||||||
	DefaultValue() (value string, ok bool)
 | 
						DefaultValue() (value string, ok bool)
 | 
				
			||||||
 | 
				
			|||||||
@ -92,7 +92,7 @@ func TestAutoMigrateSelfReferential(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestSmartMigrateColumn(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 {
 | 
						type UserMigrateColumn struct {
 | 
				
			||||||
		ID       uint
 | 
							ID       uint
 | 
				
			||||||
@ -313,9 +313,14 @@ func TestMigrateIndexes(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestMigrateColumns(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 {
 | 
						type ColumnStruct struct {
 | 
				
			||||||
		gorm.Model
 | 
							gorm.Model
 | 
				
			||||||
		Name string
 | 
							Name string
 | 
				
			||||||
 | 
							Age  int    `gorm:"default:18;comment:my age"`
 | 
				
			||||||
 | 
							Code string `gorm:"unique"`
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	DB.Migrator().DropTable(&ColumnStruct{})
 | 
						DB.Migrator().DropTable(&ColumnStruct{})
 | 
				
			||||||
@ -340,10 +345,30 @@ func TestMigrateColumns(t *testing.T) {
 | 
				
			|||||||
		stmt.Parse(&ColumnStruct2{})
 | 
							stmt.Parse(&ColumnStruct2{})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		for _, columnType := range columnTypes {
 | 
							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()))
 | 
									dataType := DB.Dialector.DataTypeOf(stmt.Schema.LookUpField(columnType.Name()))
 | 
				
			||||||
				if !strings.Contains(strings.ToUpper(dataType), strings.ToUpper(columnType.DatabaseTypeName())) {
 | 
									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