package db_management import ( "database/sql" "testing" "time" "github.com/stretchr/testify/assert" _ "modernc.org/sqlite" ) func setupTestDB(t *testing.T) { var err error // ":memory:" sorgt dafür, dass die DB nach dem Test gelöscht wird DB, err = sql.Open("sqlite", ":memory:") assert.NoError(t, err) statement := ` CREATE TABLE voice_sessions ( user_id TEXT, seconds INTEGER, created_at TIMESTAMP );` _, err = DB.Exec(statement) assert.NoError(t, err) } func TestSaveAndGetStats(t *testing.T) { setupTestDB(t) defer DB.Close() userID := "123456789" // Test 1: Neue Session speichern SaveSession(userID, 3600) // 1 Stunde stats := GetUserStats(userID) assert.Equal(t, 3600, stats, "User sollte 3600 Sekunden haben") // Test 2: Zweite Session addieren SaveSession(userID, 600) // +10 Minuten stats = GetUserStats(userID) assert.Equal(t, 4200, stats, "Summe sollte 4200 sein") } func TestTimeFiltering(t *testing.T) { setupTestDB(t) defer DB.Close() userID := "999" // Eine Session von heute SaveSession(userID, 1000) // Eine "alte" Session manuell einfügen (31 Tage alt) oldDate := time.Now().AddDate(0, 0, -31) _, _ = DB.Exec("INSERT INTO voice_sessions (user_id, seconds, created_at) VALUES (?, ?, ?)", userID, 5000, oldDate) // GetUserStats sollte NUR die 1000 Sekunden von heute zählen stats := GetUserStats(userID) assert.Equal(t, 1000, stats, "Alte Sessions dürfen nicht gezählt werden") }