package sqly import ( "fmt" "testing" "time" "github.com/jmoiron/sqlx" "github.com/mattes/migrate/migrate" ) // BaseTable have to be embeded in all your struct which reflect a table type BaseTable struct { ID int Updated time.Time Created time.Time } func RunWithLastestMigration(db *sqlx.DB, pgdsn string, t *testing.T, test func(db *sqlx.DB, t *testing.T)) { defer func() { allErrors, ok := migrate.DownSync(pgdsn, "../sql") if !ok { fmt.Println("Oh no ...") for _, err := range allErrors { t.Log(err) t.Fatal("We get some errors when reset the database schema") } } }() allErrors, ok := migrate.UpSync(pgdsn, "../sql") if !ok { fmt.Println("Oh no ...") for _, err := range allErrors { t.Log(err) t.Fatal("Impossible to run test we get some errors when initialize the database schema") } } test(db, t) }