Implements comprehensive test coverage for the backend scan progress tracking
feature added in previous commit.
Unit Tests (internal/services/worker_test.go):
- TestWorker_JobResult_HasStatsFields: Verifies JobResult stores new stats fields
- Tests FilesScanned, NewItems, Errors are properly stored
- Confirms values are retrievable via GetJobStatus()
- TestWorker_ProgressCallback_UpdatesJobResult: Verifies real-time updates
- Tests progress callback mechanism updates JobResult
- Confirms multiple incremental updates work correctly
- Validates callback updates all stat fields
Integration Tests (cmd/server/tests/scanner_integration_test.go):
- TestScanProgress_TracksStatistics: End-to-end scan progress tracking
- Creates library with folder via API
- Triggers scan and polls status endpoint
- Verifies new fields (files_scanned, new_items, errors) exist
- Confirms values are non-decreasing during scan
- Validates progress reaches 100% on completion
- TestScanProgress_BatchingWorks: Verifies batching reduces updates
- Creates library and triggers scan
- Counts distinct files_scanned updates
- Confirms fewer updates than files (batching working)
Test Design:
- Uses setupTestServer() from test_helpers.go (PROJECT_GUIDELINES.md compliant)
- Single shared test setup per suite (no connection pool exhaustion)
- Safe type assertions with require.True() for JSON responses
- Polls for up to 30 seconds with 1-second intervals
- Tests compile successfully and run in container only
Coverage:
- Unit tests: JobResult storage, callback updates
- Integration tests: End-to-end API behavior, batching verification
- All new code paths covered by tests
Files modified:
- internal/services/worker_test.go (added 2 tests)
- cmd/server/tests/scanner_integration_test.go (new file, 254 lines)
Related: TASKS-backend-progress-tracking.md Step 8
Previous commit: "Implement backend scan progress tracking (Steps 1-7)"