code cleanup

This commit is contained in:
Fran Jurmanović
2025-09-18 13:33:51 +02:00
parent 901dbe697e
commit 5e7c96697a
83 changed files with 2832 additions and 2186 deletions

View File

@@ -12,12 +12,10 @@ import (
)
func TestStateHistoryRepository_Insert_Success(t *testing.T) {
// Setup environment and test helper
tests.SetTestEnv()
helper := tests.NewTestHelper(t)
defer helper.Cleanup()
// Ensure the state_histories table exists
if !helper.DB.Migrator().HasTable(&model.StateHistory{}) {
err := helper.DB.Migrator().CreateTable(&model.StateHistory{})
if err != nil {
@@ -28,15 +26,12 @@ func TestStateHistoryRepository_Insert_Success(t *testing.T) {
repo := repository.NewStateHistoryRepository(helper.DB)
ctx := helper.CreateContext()
// Create test data
testData := testdata.NewStateHistoryTestData(helper.TestData.ServerID)
history := testData.CreateStateHistory(model.SessionPractice, "spa", 5, uuid.New())
// Test Insert
err := repo.Insert(ctx, &history)
tests.AssertNoError(t, err)
// Verify ID was generated
tests.AssertNotNil(t, history.ID)
if history.ID == uuid.Nil {
t.Error("Expected non-nil ID after insert")
@@ -44,12 +39,10 @@ func TestStateHistoryRepository_Insert_Success(t *testing.T) {
}
func TestStateHistoryRepository_GetAll_Success(t *testing.T) {
// Setup environment and test helper
tests.SetTestEnv()
helper := tests.NewTestHelper(t)
defer helper.Cleanup()
// Ensure the state_histories table exists
if !helper.DB.Migrator().HasTable(&model.StateHistory{}) {
err := helper.DB.Migrator().CreateTable(&model.StateHistory{})
if err != nil {
@@ -60,10 +53,8 @@ func TestStateHistoryRepository_GetAll_Success(t *testing.T) {
repo := repository.NewStateHistoryRepository(helper.DB)
ctx := helper.CreateContext()
// Create test data
testData := testdata.NewStateHistoryTestData(helper.TestData.ServerID)
// Insert multiple entries
playerCounts := []int{0, 5, 10, 15, 10, 5, 0}
entries := testData.CreateMultipleEntries(model.SessionPractice, "spa", playerCounts)
@@ -72,7 +63,6 @@ func TestStateHistoryRepository_GetAll_Success(t *testing.T) {
tests.AssertNoError(t, err)
}
// Test GetAll
filter := testdata.CreateBasicFilter(helper.TestData.ServerID.String())
result, err := repo.GetAll(ctx, filter)
@@ -82,12 +72,10 @@ func TestStateHistoryRepository_GetAll_Success(t *testing.T) {
}
func TestStateHistoryRepository_GetAll_WithFilter(t *testing.T) {
// Setup environment and test helper
tests.SetTestEnv()
helper := tests.NewTestHelper(t)
defer helper.Cleanup()
// Ensure the state_histories table exists
if !helper.DB.Migrator().HasTable(&model.StateHistory{}) {
err := helper.DB.Migrator().CreateTable(&model.StateHistory{})
if err != nil {
@@ -98,19 +86,16 @@ func TestStateHistoryRepository_GetAll_WithFilter(t *testing.T) {
repo := repository.NewStateHistoryRepository(helper.DB)
ctx := helper.CreateContext()
// Create test data with different sessions
testData := testdata.NewStateHistoryTestData(helper.TestData.ServerID)
practiceHistory := testData.CreateStateHistory(model.SessionPractice, "spa", 5, uuid.New())
raceHistory := testData.CreateStateHistory(model.SessionRace, "spa", 15, uuid.New())
// Insert both
err := repo.Insert(ctx, &practiceHistory)
tests.AssertNoError(t, err)
err = repo.Insert(ctx, &raceHistory)
tests.AssertNoError(t, err)
// Test GetAll with session filter
filter := testdata.CreateFilterWithSession(helper.TestData.ServerID.String(), model.SessionRace)
result, err := repo.GetAll(ctx, filter)
@@ -122,12 +107,10 @@ func TestStateHistoryRepository_GetAll_WithFilter(t *testing.T) {
}
func TestStateHistoryRepository_GetLastSessionID_Success(t *testing.T) {
// Setup environment and test helper
tests.SetTestEnv()
helper := tests.NewTestHelper(t)
defer helper.Cleanup()
// Ensure the state_histories table exists
if !helper.DB.Migrator().HasTable(&model.StateHistory{}) {
err := helper.DB.Migrator().CreateTable(&model.StateHistory{})
if err != nil {
@@ -138,44 +121,34 @@ func TestStateHistoryRepository_GetLastSessionID_Success(t *testing.T) {
repo := repository.NewStateHistoryRepository(helper.DB)
ctx := helper.CreateContext()
// Create test data
testData := testdata.NewStateHistoryTestData(helper.TestData.ServerID)
// Insert multiple entries with different session IDs
sessionID1 := uuid.New()
sessionID2 := uuid.New()
history1 := testData.CreateStateHistory(model.SessionPractice, "spa", 5, sessionID1)
history2 := testData.CreateStateHistory(model.SessionRace, "spa", 10, sessionID2)
// Insert with a small delay to ensure ordering
err := repo.Insert(ctx, &history1)
tests.AssertNoError(t, err)
time.Sleep(1 * time.Millisecond) // Ensure different timestamps
time.Sleep(1 * time.Millisecond)
err = repo.Insert(ctx, &history2)
tests.AssertNoError(t, err)
// Test GetLastSessionID - should return the most recent session ID
lastSessionID, err := repo.GetLastSessionID(ctx, helper.TestData.ServerID)
tests.AssertNoError(t, err)
// Should be sessionID2 since it was inserted last
// We should get the most recently inserted session ID, but the exact value doesn't matter
// Just check that it's not nil and that it's a valid UUID
if lastSessionID == uuid.Nil {
t.Fatal("Expected non-nil UUID for last session ID")
}
}
func TestStateHistoryRepository_GetLastSessionID_NoData(t *testing.T) {
// Setup environment and test helper
tests.SetTestEnv()
helper := tests.NewTestHelper(t)
defer helper.Cleanup()
// Ensure the state_histories table exists
if !helper.DB.Migrator().HasTable(&model.StateHistory{}) {
err := helper.DB.Migrator().CreateTable(&model.StateHistory{})
if err != nil {
@@ -186,19 +159,16 @@ func TestStateHistoryRepository_GetLastSessionID_NoData(t *testing.T) {
repo := repository.NewStateHistoryRepository(helper.DB)
ctx := helper.CreateContext()
// Test GetLastSessionID with no data
lastSessionID, err := repo.GetLastSessionID(ctx, helper.TestData.ServerID)
tests.AssertNoError(t, err)
tests.AssertEqual(t, uuid.Nil, lastSessionID)
}
func TestStateHistoryRepository_GetSummaryStats_Success(t *testing.T) {
// Setup environment and test helper
tests.SetTestEnv()
helper := tests.NewTestHelper(t)
defer helper.Cleanup()
// Ensure the state_histories table exists
if !helper.DB.Migrator().HasTable(&model.StateHistory{}) {
err := helper.DB.Migrator().CreateTable(&model.StateHistory{})
if err != nil {
@@ -209,14 +179,11 @@ func TestStateHistoryRepository_GetSummaryStats_Success(t *testing.T) {
repo := repository.NewStateHistoryRepository(helper.DB)
ctx := helper.CreateContext()
// Create test data with varying player counts
testData := testdata.NewStateHistoryTestData(helper.TestData.ServerID)
// Create entries with different sessions and player counts
sessionID1 := uuid.New()
sessionID2 := uuid.New()
// Practice session: 5, 10, 15 players
practiceEntries := testData.CreateMultipleEntries(model.SessionPractice, "spa", []int{5, 10, 15})
for i := range practiceEntries {
practiceEntries[i].SessionID = sessionID1
@@ -224,7 +191,6 @@ func TestStateHistoryRepository_GetSummaryStats_Success(t *testing.T) {
tests.AssertNoError(t, err)
}
// Race session: 20, 25, 30 players
raceEntries := testData.CreateMultipleEntries(model.SessionRace, "spa", []int{20, 25, 30})
for i := range raceEntries {
raceEntries[i].SessionID = sessionID2
@@ -232,17 +198,14 @@ func TestStateHistoryRepository_GetSummaryStats_Success(t *testing.T) {
tests.AssertNoError(t, err)
}
// Test GetSummaryStats
filter := testdata.CreateBasicFilter(helper.TestData.ServerID.String())
stats, err := repo.GetSummaryStats(ctx, filter)
tests.AssertNoError(t, err)
// Verify stats are calculated correctly
tests.AssertEqual(t, 30, stats.PeakPlayers) // Maximum player count
tests.AssertEqual(t, 2, stats.TotalSessions) // Two unique sessions
tests.AssertEqual(t, 30, stats.PeakPlayers)
tests.AssertEqual(t, 2, stats.TotalSessions)
// Average should be (5+10+15+20+25+30)/6 = 17.5
expectedAverage := float64(5+10+15+20+25+30) / 6.0
if stats.AveragePlayers != expectedAverage {
t.Errorf("Expected average players %.1f, got %.1f", expectedAverage, stats.AveragePlayers)
@@ -250,12 +213,10 @@ func TestStateHistoryRepository_GetSummaryStats_Success(t *testing.T) {
}
func TestStateHistoryRepository_GetSummaryStats_NoData(t *testing.T) {
// Setup environment and test helper
tests.SetTestEnv()
helper := tests.NewTestHelper(t)
defer helper.Cleanup()
// Ensure the state_histories table exists
if !helper.DB.Migrator().HasTable(&model.StateHistory{}) {
err := helper.DB.Migrator().CreateTable(&model.StateHistory{})
if err != nil {
@@ -266,25 +227,21 @@ func TestStateHistoryRepository_GetSummaryStats_NoData(t *testing.T) {
repo := repository.NewStateHistoryRepository(helper.DB)
ctx := helper.CreateContext()
// Test GetSummaryStats with no data
filter := testdata.CreateBasicFilter(helper.TestData.ServerID.String())
stats, err := repo.GetSummaryStats(ctx, filter)
tests.AssertNoError(t, err)
// Verify stats are zero for empty dataset
tests.AssertEqual(t, 0, stats.PeakPlayers)
tests.AssertEqual(t, 0.0, stats.AveragePlayers)
tests.AssertEqual(t, 0, stats.TotalSessions)
}
func TestStateHistoryRepository_GetTotalPlaytime_Success(t *testing.T) {
// Setup environment and test helper
tests.SetTestEnv()
helper := tests.NewTestHelper(t)
defer helper.Cleanup()
// Ensure the state_histories table exists
if !helper.DB.Migrator().HasTable(&model.StateHistory{}) {
err := helper.DB.Migrator().CreateTable(&model.StateHistory{})
if err != nil {
@@ -294,13 +251,10 @@ func TestStateHistoryRepository_GetTotalPlaytime_Success(t *testing.T) {
repo := repository.NewStateHistoryRepository(helper.DB)
ctx := helper.CreateContext()
// Create test data spanning a time range
sessionID := uuid.New()
baseTime := time.Now().UTC()
// Create entries spanning 1 hour with players > 0
entries := []model.StateHistory{
{
ID: uuid.New(),
@@ -342,7 +296,6 @@ func TestStateHistoryRepository_GetTotalPlaytime_Success(t *testing.T) {
tests.AssertNoError(t, err)
}
// Test GetTotalPlaytime
filter := &model.StateHistoryFilter{
ServerBasedFilter: model.ServerBasedFilter{
ServerID: helper.TestData.ServerID.String(),
@@ -355,20 +308,16 @@ func TestStateHistoryRepository_GetTotalPlaytime_Success(t *testing.T) {
playtime, err := repo.GetTotalPlaytime(ctx, filter)
tests.AssertNoError(t, err)
// Should calculate playtime based on session duration
if playtime <= 0 {
t.Error("Expected positive playtime for session with multiple entries")
}
}
func TestStateHistoryRepository_ConcurrentOperations(t *testing.T) {
// Test concurrent database operations
tests.SetTestEnv()
helper := tests.NewTestHelper(t)
defer helper.Cleanup()
// Ensure the state_histories table exists
if !helper.DB.Migrator().HasTable(&model.StateHistory{}) {
err := helper.DB.Migrator().CreateTable(&model.StateHistory{})
if err != nil {
@@ -379,10 +328,8 @@ func TestStateHistoryRepository_ConcurrentOperations(t *testing.T) {
repo := repository.NewStateHistoryRepository(helper.DB)
ctx := helper.CreateContext()
// Create test data
testData := testdata.NewStateHistoryTestData(helper.TestData.ServerID)
// Ensure the state_histories table exists
if !helper.DB.Migrator().HasTable(&model.StateHistory{}) {
err := helper.DB.Migrator().CreateTable(&model.StateHistory{})
if err != nil {
@@ -390,7 +337,6 @@ func TestStateHistoryRepository_ConcurrentOperations(t *testing.T) {
}
}
// Create and insert initial entry to ensure table exists and is properly set up
initialHistory := testData.CreateStateHistory(model.SessionPractice, "spa", 5, uuid.New())
err := repo.Insert(ctx, &initialHistory)
if err != nil {
@@ -399,7 +345,6 @@ func TestStateHistoryRepository_ConcurrentOperations(t *testing.T) {
done := make(chan bool, 3)
// Concurrent inserts
go func() {
defer func() {
done <- true
@@ -412,7 +357,6 @@ func TestStateHistoryRepository_ConcurrentOperations(t *testing.T) {
}
}()
// Concurrent reads
go func() {
defer func() {
done <- true
@@ -425,7 +369,6 @@ func TestStateHistoryRepository_ConcurrentOperations(t *testing.T) {
}
}()
// Concurrent GetLastSessionID
go func() {
defer func() {
done <- true
@@ -437,19 +380,16 @@ func TestStateHistoryRepository_ConcurrentOperations(t *testing.T) {
}
}()
// Wait for all operations to complete
for i := 0; i < 3; i++ {
<-done
}
}
func TestStateHistoryRepository_FilterEdgeCases(t *testing.T) {
// Test edge cases with filters
tests.SetTestEnv()
helper := tests.NewTestHelper(t)
defer helper.Cleanup()
// Ensure the state_histories table exists
if !helper.DB.Migrator().HasTable(&model.StateHistory{}) {
err := helper.DB.Migrator().CreateTable(&model.StateHistory{})
if err != nil {
@@ -460,15 +400,11 @@ func TestStateHistoryRepository_FilterEdgeCases(t *testing.T) {
repo := repository.NewStateHistoryRepository(helper.DB)
ctx := helper.CreateContext()
// Insert a test record to ensure the table is properly set up
testData := testdata.NewStateHistoryTestData(helper.TestData.ServerID)
history := testData.CreateStateHistory(model.SessionPractice, "spa", 5, uuid.New())
err := repo.Insert(ctx, &history)
tests.AssertNoError(t, err)
// Skip nil filter test as it might not be supported by the repository implementation
// Test with server ID filter - this should work
serverFilter := &model.StateHistoryFilter{
ServerBasedFilter: model.ServerBasedFilter{
ServerID: helper.TestData.ServerID.String(),
@@ -478,7 +414,6 @@ func TestStateHistoryRepository_FilterEdgeCases(t *testing.T) {
tests.AssertNoError(t, err)
tests.AssertNotNil(t, result)
// Test with invalid server ID in summary stats
invalidFilter := &model.StateHistoryFilter{
ServerBasedFilter: model.ServerBasedFilter{
ServerID: "invalid-uuid",