48 lines
1.0 KiB
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)
|
|
}
|
|
}
|