134 lines
2.7 KiB
Go
134 lines
2.7 KiB
Go
package migration
|
|
|
|
import (
|
|
"github.com/go-gormigrate/gormigrate/v2"
|
|
"pet-house.com/core/g"
|
|
"pet-house.com/core/server/database"
|
|
"pet-house.com/core/server/zap_server"
|
|
"testing"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type Test struct {
|
|
gorm.Model
|
|
}
|
|
|
|
var id = "20211214120700_create_tests_table"
|
|
var m = &gormigrate.Migration{
|
|
ID: id,
|
|
Migrate: func(tx *gorm.DB) error {
|
|
return tx.AutoMigrate(&Test{})
|
|
},
|
|
Rollback: func(tx *gorm.DB) error {
|
|
return tx.Migrator().DropTable("tests")
|
|
},
|
|
}
|
|
|
|
func TestAddMigration(t *testing.T) {
|
|
migrate := New()
|
|
t.Run("migrate add migration", func(t *testing.T) {
|
|
migrate.AddMigration(m)
|
|
l := migrate.MigrationLen()
|
|
if l != 1 {
|
|
t.Errorf("MigrationLen want %d but get %d", 1, l)
|
|
}
|
|
})
|
|
}
|
|
|
|
type testSeed struct{}
|
|
|
|
func (ts *testSeed) Init() error {
|
|
return nil
|
|
}
|
|
func TestAddSeed(t *testing.T) {
|
|
migrate := New()
|
|
t.Run("migrate add seed", func(t *testing.T) {
|
|
migrate.AddSeed(&testSeed{})
|
|
l := migrate.SeedlLen()
|
|
if l != 1 {
|
|
t.Errorf("SeedlLen want %d but get %d", 1, l)
|
|
}
|
|
})
|
|
}
|
|
func TestMigrate(t *testing.T) {
|
|
defer zap_server.Remove()
|
|
defer database.Remove()
|
|
database.CONFIG.Path = g.TestMysqlAddr
|
|
database.CONFIG.Password = g.TestMysqlPwd
|
|
migrate := New()
|
|
migrate.AddMigration(m)
|
|
t.Run("migrate migrate", func(t *testing.T) {
|
|
err := migrate.Migrate()
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
}
|
|
})
|
|
}
|
|
func TestRollback(t *testing.T) {
|
|
defer zap_server.Remove()
|
|
defer database.Remove()
|
|
database.CONFIG.Path = g.TestMysqlAddr
|
|
database.CONFIG.Password = g.TestMysqlPwd
|
|
migrate := New()
|
|
t.Run("migrate rollback no migrate with id", func(t *testing.T) {
|
|
err := migrate.Rollback(id)
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
}
|
|
})
|
|
t.Run("migrate rollback no migrate without id", func(t *testing.T) {
|
|
err := migrate.Rollback("")
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
}
|
|
})
|
|
migrate.AddMigration(m)
|
|
err := migrate.Migrate()
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
}
|
|
|
|
t.Run("migrate rollback after migrate with id", func(t *testing.T) {
|
|
err := migrate.Rollback(id)
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
}
|
|
})
|
|
t.Run("migrate rollback after migrate without id", func(t *testing.T) {
|
|
err := migrate.Rollback("")
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestRefresh(t *testing.T) {
|
|
defer zap_server.Remove()
|
|
defer database.Remove()
|
|
database.CONFIG.Path = g.TestMysqlAddr
|
|
database.CONFIG.Password = g.TestMysqlPwd
|
|
migrate := New()
|
|
|
|
t.Run("migrate refresh no migrate", func(t *testing.T) {
|
|
err := migrate.Refresh()
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
}
|
|
})
|
|
|
|
migrate.AddMigration(m)
|
|
err := migrate.Migrate()
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
}
|
|
|
|
t.Run("migrate refresh after migrate", func(t *testing.T) {
|
|
err := migrate.Refresh()
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
}
|
|
})
|
|
|
|
}
|