- Fixed room name mismatch: ProgressService was broadcasting to
'download_progress' but JS clients join 'downloads' room
- Added _get_room_for_progress_type() mapping function
- Updated all progress methods to use correct room names
- Added 13 new tests for room name mapping and broadcast verification
- Updated existing tests to expect correct room names
- Fixed JS clients to join valid rooms (downloads, queue, scan)
- Update _update_series_in_db to sync missing episodes bidirectionally
- Add delete_by_series_and_episode method to EpisodeService
- Remove downloaded episodes from DB after successful download
- Clear anime service cache when episodes are removed
- Fix tests to use 'message' instead of 'detail' in API responses
- Mock DB operations in rescan tests
- Created QueueRepository adapter in src/server/services/queue_repository.py
- Refactored DownloadService to use repository pattern instead of JSON
- Updated application startup to initialize download service from database
- Updated all test fixtures to use MockQueueRepository
- All 1104 tests passing
- Task 7.1: Update All Test Fixtures to Use Key
- Updated FakeSerie/FakeSeriesApp with realistic keys in test_anime_endpoints.py
- Updated 6+ fixtures in test_websocket_integration.py
- Updated 5 fixtures in test_download_progress_integration.py
- Updated 9 fixtures in test_download_progress_websocket.py
- Updated 10+ fixtures in test_download_models.py
- All fixtures now use URL-safe, lowercase, hyphenated key format
- Task 7.2: Add Integration Tests for Identifier Consistency
- Created tests/integration/test_identifier_consistency.py with 10 tests
- TestAPIIdentifierConsistency: API response validation
- TestServiceIdentifierConsistency: Download service key usage
- TestWebSocketIdentifierConsistency: WebSocket events
- TestIdentifierValidation: Model validation
- TestEndToEndIdentifierFlow: Full flow verification
- Tests use UUID suffixes for isolation
All 1006 tests passing.