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

@@ -147,9 +147,10 @@ class TestDownloadProgressWebSocket:
progress_svc.subscribe("progress_updated", mock_event_handler)
# Add item to queue
# Note: serie_id uses provider key format (URL-safe, lowercase)
item_ids = await download_svc.add_to_queue(
serie_id="test_serie_1",
serie_folder="test_serie_1",
serie_id="test-serie-1-key",
serie_folder="Test Anime (2024)",
serie_name="Test Anime",
episodes=[EpisodeIdentifier(season=1, episode=1)],
priority=DownloadPriority.NORMAL,
@@ -197,9 +198,10 @@ class TestDownloadProgressWebSocket:
progress_svc.subscribe("progress_updated", mock_event_handler)
# Add item with specific episode info
# Note: serie_id uses provider key format (URL-safe, lowercase)
await download_svc.add_to_queue(
serie_id="test_serie_2",
serie_folder="test_serie_2",
serie_id="test-serie-2-key",
serie_folder="My Test Anime (2024)",
serie_name="My Test Anime",
episodes=[EpisodeIdentifier(season=2, episode=5)],
priority=DownloadPriority.HIGH,
@@ -219,8 +221,9 @@ class TestDownloadProgressWebSocket:
# Verify progress info is included
data = progress_broadcasts[0]["data"]
assert "id" in data
# ID should contain folder name: download_test_serie_2_2_5
assert "test_serie_2" in data["id"]
# ID contains folder name: download_My Test Anime (2024)_2_5
# Check for folder name substring (case-insensitive)
assert "my test anime" in data["id"].lower()
@pytest.mark.asyncio
async def test_progress_percent_increases(self, download_service):
@@ -236,9 +239,10 @@ class TestDownloadProgressWebSocket:
progress_svc.subscribe("progress_updated", mock_event_handler)
# Note: serie_id uses provider key format (URL-safe, lowercase)
await download_svc.add_to_queue(
serie_id="test_serie_3",
serie_folder="test_serie_3",
serie_id="test-serie-3-key",
serie_folder="Progress Test (2024)",
serie_name="Progress Test",
episodes=[EpisodeIdentifier(season=1, episode=1)],
)
@@ -277,9 +281,10 @@ class TestDownloadProgressWebSocket:
progress_svc.subscribe("progress_updated", mock_event_handler)
# Note: serie_id uses provider key format (URL-safe, lowercase)
await download_svc.add_to_queue(
serie_id="test_serie_4",
serie_folder="test_serie_4",
serie_id="test-serie-4-key",
serie_folder="Speed Test (2024)",
serie_name="Speed Test",
episodes=[EpisodeIdentifier(season=1, episode=1)],
)
@@ -305,9 +310,10 @@ class TestDownloadProgressWebSocket:
download_svc, progress_svc = download_service
# Don't subscribe to any events
# Note: serie_id uses provider key format (URL-safe, lowercase)
await download_svc.add_to_queue(
serie_id="test_serie_5",
serie_folder="test_serie_5",
serie_id="test-serie-5-key",
serie_folder="No Broadcast Test (2024)",
serie_name="No Broadcast Test",
episodes=[EpisodeIdentifier(season=1, episode=1)],
)
@@ -334,9 +340,10 @@ class TestDownloadProgressWebSocket:
progress_svc.subscribe("progress_updated", failing_handler)
# Note: serie_id uses provider key format (URL-safe, lowercase)
await download_svc.add_to_queue(
serie_id="test_serie_6",
serie_folder="test_serie_6",
serie_id="test-serie-6-key",
serie_folder="Error Handling Test (2024)",
serie_name="Error Handling Test",
episodes=[EpisodeIdentifier(season=1, episode=1)],
)
@@ -369,9 +376,10 @@ class TestDownloadProgressWebSocket:
progress_svc.subscribe("progress_updated", mock_event_handler)
# Add multiple episodes
# Note: serie_id uses provider key format (URL-safe, lowercase)
item_ids = await download_svc.add_to_queue(
serie_id="test_serie_7",
serie_folder="test_serie_7",
serie_id="test-serie-7-key",
serie_folder="Multi Episode Test (2024)",
serie_name="Multi Episode Test",
episodes=[
EpisodeIdentifier(season=1, episode=1),
@@ -418,9 +426,10 @@ class TestDownloadProgressWebSocket:
progress_svc.subscribe("progress_updated", mock_event_handler)
# Note: serie_id uses provider key format (URL-safe, lowercase)
await download_svc.add_to_queue(
serie_id="test_serie_8",
serie_folder="test_serie_8",
serie_id="test-serie-8-key",
serie_folder="Model Test (2024)",
serie_name="Model Test",
episodes=[EpisodeIdentifier(season=1, episode=1)],
)