59 lines
1.5 KiB
Go
59 lines
1.5 KiB
Go
package db
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
// TestSetupDB initializes the test database using existing functions
|
|
// It creates the database if it doesn't exist and runs migrations
|
|
func TestSetupDB(t *testing.T) {
|
|
host := os.Getenv("DB_HOST")
|
|
port := os.Getenv("DB_PORT")
|
|
user := os.Getenv("DB_USERNAME")
|
|
password := os.Getenv("DB_PASSWORD")
|
|
dbname := os.Getenv("DB_NAME")
|
|
|
|
if host == "" || port == "" || user == "" || password == "" || dbname == "" {
|
|
t.Skip("Test database environment variables not set")
|
|
}
|
|
|
|
// Use existing function to create database if it doesn't exist and run migrations
|
|
Migrate_db(host, port, user, password, dbname)
|
|
InitDB(host, port, user, password, dbname)
|
|
}
|
|
|
|
// TestTearDownDB closes the test database connection
|
|
func TestTearDownDB(t *testing.T) {
|
|
CloseDb()
|
|
}
|
|
|
|
// TestClearDatabase clears all data from the test database
|
|
// Useful for running tests with a clean slate
|
|
func TestClearDatabase(t *testing.T) {
|
|
if Dbpool == nil {
|
|
t.Skip("Database not initialized")
|
|
}
|
|
|
|
// Clear all tables in reverse order to respect foreign keys
|
|
// Note: This assumes the tables exist and have the expected structure
|
|
tables := []string{
|
|
"song_list",
|
|
"song",
|
|
"game",
|
|
}
|
|
|
|
for _, table := range tables {
|
|
_, err := Dbpool.Exec(Ctx, "TRUNCATE TABLE "+table+" CASCADE")
|
|
if err != nil {
|
|
t.Logf("Failed to truncate table %s: %v", table, err)
|
|
}
|
|
}
|
|
|
|
// Reset sequences
|
|
_, err := Dbpool.Exec(Ctx, "SELECT setval('game_id_seq', 1, false)")
|
|
if err != nil {
|
|
t.Logf("Failed to reset game_id_seq: %v", err)
|
|
}
|
|
}
|