MCPcopy
hub / github.com/go-gorm/gorm / TestMigrateWithDefaultValue

Function TestMigrateWithDefaultValue

tests/migrate_test.go:1530–1603  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1528}
1529
1530func TestMigrateWithDefaultValue(t *testing.T) {
1531 if DB.Dialector.Name() == "sqlserver" {
1532 // sqlserver driver treats NULL and 'NULL' the same
1533 t.Skip("skip sqlserver")
1534 }
1535
1536 type NullModel struct {
1537 ID uint
1538 Content string `gorm:"default:null"`
1539 }
1540
1541 type NullStringModel struct {
1542 ID uint
1543 Content string `gorm:"default:'null'"`
1544 Active bool `gorm:"default:false"`
1545 }
1546
1547 tableName := "null_string_model"
1548
1549 DB.Migrator().DropTable(tableName)
1550
1551 err := DB.Table(tableName).AutoMigrate(&NullModel{})
1552 AssertEqual(t, err, nil)
1553
1554 // default null -> 'null'
1555 err = DB.Table(tableName).AutoMigrate(&NullStringModel{})
1556 AssertEqual(t, err, nil)
1557
1558 columnType, err := findColumnType(tableName, "content")
1559 AssertEqual(t, err, nil)
1560
1561 defVal, ok := columnType.DefaultValue()
1562 AssertEqual(t, defVal, "null")
1563 AssertEqual(t, ok, true)
1564
1565 columnType2, err := findColumnType(tableName, "active")
1566 AssertEqual(t, err, nil)
1567
1568 defVal, ok = columnType2.DefaultValue()
1569 bv, _ := strconv.ParseBool(defVal)
1570 AssertEqual(t, bv, false)
1571 AssertEqual(t, ok, true)
1572
1573 // default 'null' -> 'null'
1574 session := DB.Session(&gorm.Session{Logger: Tracer{
1575 Logger: DB.Config.Logger,
1576 Test: func(ctx context.Context, begin time.Time, fc func() (sql string, rowsAffected int64), err error) {
1577 sql, _ := fc()
1578 if strings.HasPrefix(sql, "ALTER TABLE") {
1579 t.Errorf("shouldn't execute: sql=%s", sql)
1580 }
1581 },
1582 }})
1583 err = session.Table(tableName).AutoMigrate(&NullStringModel{})
1584 AssertEqual(t, err, nil)
1585
1586 columnType, err = findColumnType(tableName, "content")
1587 AssertEqual(t, err, nil)

Callers

nothing calls this directly

Calls 9

findColumnTypeFunction · 0.85
SessionMethod · 0.80
NameMethod · 0.65
DropTableMethod · 0.65
MigratorMethod · 0.65
AutoMigrateMethod · 0.65
TableMethod · 0.65
DefaultValueMethod · 0.65
AssertEqualFunction · 0.50

Tested by

no test coverage detected