mirror of
https://git.vectorsigma.ru/public/photoview.git
synced 2026-08-03 19:29:15 +00:00
Implement database integration tests
This commit is contained in:
60
api/test_utils/test_db_manager.go
Normal file
60
api/test_utils/test_db_manager.go
Normal file
@@ -0,0 +1,60 @@
|
||||
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
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (dbm *TestDBManager) reset() error {
|
||||
|
||||
if err := database.ClearDatabase(dbm.DB); err != nil {
|
||||
return errors.Wrap(err, "reset test database")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user