v1 finished. Gonna build a dockerfile later

This commit is contained in:
2026-04-01 20:11:38 +02:00
parent f1b157038c
commit 87b3623e60
8 changed files with 343 additions and 0 deletions

View File

@@ -0,0 +1,62 @@
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")
}