ente/server/pkg/repo/storagebonus/repo_test.go
2024-03-01 13:37:01 +05:30

68 lines
1.8 KiB
Go

package storagebonus
import (
"database/sql"
"os"
"path/filepath"
"strings"
"testing"
"github.com/golang-migrate/migrate/v4"
"github.com/golang-migrate/migrate/v4/database/postgres"
log "github.com/sirupsen/logrus"
)
var db *sql.DB
func TestMain(m *testing.M) {
if os.Getenv("ENV") != "test" {
log.Fatalf("Not running tests in non-test environment")
os.Exit(0)
}
err := setupDatabase()
if err != nil {
log.Fatalf("error setting up test database: %v", err)
}
db.QueryRow("DELETE FROM referral_codes")
db.QueryRow("DELETE FROM storage_bonus")
// Run the tests
exitCode := m.Run()
db.QueryRow("DELETE FROM referral_codes")
db.QueryRow("DELETE FROM storage_bonus")
// Close the test database connection
err = db.Close()
if err != nil {
log.Fatalf("error closing test database connection: %v", err)
}
// Exit with the result of the tests
os.Exit(exitCode)
}
func setupDatabase() error {
var err error
// Connect to the test database
db, err = sql.Open("postgres", "user=test_user password=test_pass host=localhost dbname=ente_test_db sslmode=disable")
if err != nil {
log.Fatalf("error connecting to test database: %v", err)
}
driver, err := postgres.WithInstance(db, &postgres.Config{})
if err != nil {
log.Fatalf("error creating postgres driver: %v", err)
}
// Get the current working directory, find the path before "/pkg", and append "/migrations"
cwd, _ := os.Getwd()
cwd = strings.Split(cwd, "/pkg/")[0]
configFilePath := "file://" + filepath.Join(cwd, "migrations")
mig, err := migrate.NewWithDatabaseInstance(
configFilePath, "ente_test_db", driver)
if err != nil {
log.Fatalf("error creating migrations: %v", err)
} else {
//log.Println("Loaded migration scripts")
if err := mig.Up(); err != nil && err != migrate.ErrNoChange {
log.Fatalf("error running migrations: %v", err)
}
}
return err
}