tipitypy/db/stat_test.go

48 lines
1.0 KiB
Go

package db_test
import (
"testing"
"time"
"tipitypy/db"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
// Setup a test database
func setupDB() (*gorm.DB, error) {
dbc, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
if err != nil {
return nil, err
}
dbc.AutoMigrate(&db.Stat{})
return dbc, nil
}
func TestTypingSession(t *testing.T) {
dbc, err := setupDB()
if err != nil {
t.Fatalf("failed to connect to test database: %v", err)
}
// Insert a record
expectedDuration := 5 * time.Second
session := db.Stat{
TimeTaken: expectedDuration.Milliseconds(),
}
if err := dbc.Create(&session).Error; err != nil {
t.Fatalf("failed to insert session: %v", err)
}
// Retrieve the record
var retrieved db.Stat
if err := dbc.First(&retrieved, session.ID).Error; err != nil {
t.Fatalf("failed to retrieve session: %v", err)
}
// Compare values
if retrieved.TimeTaken != expectedDuration.Milliseconds() {
t.Errorf("expected %d ms, got %d ms", expectedDuration.Milliseconds(), retrieved.TimeTaken)
}
}