diff --git a/cmd/server/tests/worker_test.go b/cmd/server/tests/worker_test.go index 3aa30c7..b13da65 100644 --- a/cmd/server/tests/worker_test.go +++ b/cmd/server/tests/worker_test.go @@ -228,7 +228,8 @@ func TestWorker_ConcurrentJobs(t *testing.T) { } } - // Submit multiple concurrent jobs + // Submit multiple concurrent jobs and track their IDs + var jobs []*services.Job for _, tmpDir := range tmpDirs { job := &services.Job{ ID: uuid.New().String(), @@ -239,12 +240,26 @@ func TestWorker_ConcurrentJobs(t *testing.T) { }, Status: services.JobStatusPending, } + jobs = append(jobs, job) err = services.WorkerInstance.EnqueueJob(job) - require.NoError(t, err, "Failed to enqueue set folders job") + require.NoError(t, err, "Failed to enqueue scan job") } - // Wait for all jobs to process - time.Sleep(3 * time.Second) + // Wait for all jobs to complete + timeout := time.Now().Add(15 * time.Second) + completedJobs := 0 + for time.Now().Before(timeout) && completedJobs < 3 { + for _, job := range jobs { + if status, exists := services.WorkerInstance.GetJobStatus(job.ID); exists { + if status.Status == services.JobStatusCompleted || status.Status == services.JobStatusFailed { + completedJobs++ + } + } + } + if completedJobs < 3 { + time.Sleep(100 * time.Millisecond) + } + } // Verify all directories were processed allItems, err := setup.DB.ListMediaItems(ctx, database.ListMediaItemsParams{