Complete Phase 7: Testing and Validation for identifier standardization

- 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.
This commit is contained in:
2025-11-28 17:41:54 +01:00
parent 0c8b296aa6
commit 6e9087d0f4
7 changed files with 680 additions and 87 deletions

View File

@@ -106,9 +106,10 @@ class TestWebSocketDownloadIntegration:
progress_svc.subscribe("progress_updated", mock_event_handler)
# Add item to queue
# Note: serie_id uses provider key format (URL-safe, lowercase, hyphenated)
item_ids = await download_svc.add_to_queue(
serie_id="test_serie",
serie_folder="test_serie",
serie_id="test-serie-key",
serie_folder="Test Anime (2024)",
serie_name="Test Anime",
episodes=[EpisodeIdentifier(season=1, episode=1)],
priority=DownloadPriority.HIGH,
@@ -142,9 +143,10 @@ class TestWebSocketDownloadIntegration:
progress_svc.subscribe("progress_updated", mock_event_handler)
# Add items
# Note: serie_id uses provider key format (URL-safe, lowercase, hyphenated)
item_ids = await download_svc.add_to_queue(
serie_id="test",
serie_folder="test",
serie_id="test-queue-ops-key",
serie_folder="Test Queue Ops (2024)",
serie_name="Test",
episodes=[
EpisodeIdentifier(season=1, episode=i)
@@ -193,9 +195,10 @@ class TestWebSocketDownloadIntegration:
progress_svc.subscribe("progress_updated", mock_event_handler)
# Add an item to initialize the queue progress
# Note: serie_id uses provider key format (URL-safe, lowercase, hyphenated)
await download_svc.add_to_queue(
serie_id="test",
serie_folder="test",
serie_id="test-start-stop-key",
serie_folder="Test Start Stop (2024)",
serie_name="Test",
episodes=[EpisodeIdentifier(season=1, episode=1)],
)
@@ -226,9 +229,10 @@ class TestWebSocketDownloadIntegration:
progress_svc.subscribe("progress_updated", mock_event_handler)
# Initialize the download queue progress by adding an item
# Note: serie_id uses provider key format (URL-safe, lowercase)
await download_svc.add_to_queue(
serie_id="test",
serie_folder="test",
serie_id="test-init-key",
serie_folder="Test Init (2024)",
serie_name="Test Init",
episodes=[EpisodeIdentifier(season=1, episode=1)],
)
@@ -240,9 +244,9 @@ class TestWebSocketDownloadIntegration:
completed_item = DownloadItem(
id="test_completed",
serie_id="test",
serie_id="test-completed-key",
serie_name="Test",
serie_folder="Test",
serie_folder="Test (2024)",
episode=EpisodeIdentifier(season=1, episode=1),
status=DownloadStatus.COMPLETED,
priority=DownloadPriority.NORMAL,
@@ -463,9 +467,10 @@ class TestWebSocketEndToEnd:
progress_service.subscribe("progress_updated", capture_event)
# Add items to queue
# Note: serie_id uses provider key format (URL-safe, lowercase)
item_ids = await download_svc.add_to_queue(
serie_id="test",
serie_folder="test",
serie_id="test-e2e-key",
serie_folder="Test Anime (2024)",
serie_name="Test Anime",
episodes=[EpisodeIdentifier(season=1, episode=1)],
priority=DownloadPriority.HIGH,