tests: makes sure we all migrations are working

This commit is contained in:
bergquist
2018-02-14 15:30:12 +01:00
parent fa1b92a12b
commit 56907eef69
2 changed files with 27 additions and 20 deletions

View File

@ -14,13 +14,15 @@ import (
var indexTypes = []string{"Unknown", "INDEX", "UNIQUE INDEX"} var indexTypes = []string{"Unknown", "INDEX", "UNIQUE INDEX"}
func TestMigrations(t *testing.T) { func TestMigrations(t *testing.T) {
//log.NewLogger(0, "console", `{"level": 0}`)
testDBs := []sqlutil.TestDB{ testDBs := []sqlutil.TestDB{
sqlutil.TestDB_Sqlite3, sqlutil.TestDB_Sqlite3,
} }
for _, testDB := range testDBs { for _, testDB := range testDBs {
sql := `select count(*) as count from migration_log`
r := struct {
Count int64
}{}
Convey("Initial "+testDB.DriverName+" migration", t, func() { Convey("Initial "+testDB.DriverName+" migration", t, func() {
x, err := xorm.NewEngine(testDB.DriverName, testDB.ConnStr) x, err := xorm.NewEngine(testDB.DriverName, testDB.ConnStr)
@ -28,30 +30,31 @@ func TestMigrations(t *testing.T) {
sqlutil.CleanDB(x) sqlutil.CleanDB(x)
has, err := x.SQL(sql).Get(&r)
So(err, ShouldNotBeNil)
mg := NewMigrator(x) mg := NewMigrator(x)
AddMigrations(mg) AddMigrations(mg)
err = mg.Start() err = mg.Start()
So(err, ShouldBeNil) So(err, ShouldBeNil)
// tables, err := x.DBMetas() has, err = x.SQL(sql).Get(&r)
// So(err, ShouldBeNil) So(err, ShouldBeNil)
// So(has, ShouldBeTrue)
// fmt.Printf("\nDB Schema after migration: table count: %v\n", len(tables)) expectedMigrations := mg.MigrationsCount() - 2 //we currently skip to migrations. We should rewrite skipped migrations to write in the log as well. until then we have to keep this
// So(r.Count, ShouldEqual, expectedMigrations)
// for _, table := range tables {
// fmt.Printf("\nTable: %v \n", table.Name) mg = NewMigrator(x)
// for _, column := range table.Columns() { AddMigrations(mg)
// fmt.Printf("\t %v \n", column.String(x.Dialect()))
// } err = mg.Start()
// So(err, ShouldBeNil)
// if len(table.Indexes) > 0 {
// fmt.Printf("\n\tIndexes:\n") has, err = x.SQL(sql).Get(&r)
// for _, index := range table.Indexes { So(err, ShouldBeNil)
// fmt.Printf("\t %v (%v) %v \n", index.Name, strings.Join(index.Cols, ","), indexTypes[index.Type]) So(has, ShouldBeTrue)
// } So(r.Count, ShouldEqual, expectedMigrations)
// }
// }
}) })
} }
} }

View File

@ -35,6 +35,10 @@ func NewMigrator(engine *xorm.Engine) *Migrator {
return mg return mg
} }
func (mg *Migrator) MigrationsCount() int {
return len(mg.migrations)
}
func (mg *Migrator) AddMigration(id string, m Migration) { func (mg *Migrator) AddMigration(id string, m Migration) {
m.SetId(id) m.SetId(id)
mg.migrations = append(mg.migrations, m) mg.migrations = append(mg.migrations, m)