1
Fork 0
photoview/api/test_utils/test_db_manager.go

63 lines
1.0 KiB
Go
Raw Normal View History

2021-04-23 15:10:23 +02:00
package test_utils
import (
"github.com/photoview/photoview/api/database"
"github.com/pkg/errors"
"gorm.io/gorm"
)
type TestDBManager struct {
DB *gorm.DB
}
func (dbm *TestDBManager) SetupOrReset() error {
if dbm.DB == nil {
return dbm.setup()
} else {
return dbm.reset()
}
}
func (dbm *TestDBManager) Close() error {
if dbm.DB == nil {
return nil
}
sqlDB, err := dbm.DB.DB()
if err != nil {
return errors.Wrap(err, "get db instance when closing test database")
}
sqlDB.Close()
dbm.DB = nil
return nil
}
func (dbm *TestDBManager) setup() error {
config := gorm.Config{}
db, err := database.ConfigureDatabase(&config)
if err != nil {
return errors.Wrap(err, "configure test database")
}
if err := database.MigrateDatabase(db); err != nil {
return errors.Wrap(err, "migrate test database")
}
dbm.DB = db
2021-04-24 18:51:21 +02:00
dbm.reset()
2021-04-23 15:10:23 +02:00
return nil
}
func (dbm *TestDBManager) reset() error {
if err := database.ClearDatabase(dbm.DB); err != nil {
return errors.Wrap(err, "reset test database")
}
return nil
}