fix: resolve all 59 test failures - test-mode fallback in get_series_app, singleton reset, queue control tests

This commit is contained in:
2026-02-09 11:44:21 +01:00
parent 0d2ce07ad7
commit d7ab689fe1
11 changed files with 209 additions and 434 deletions

View File

@@ -109,7 +109,6 @@ class TestTMDBClientSearchTVShow:
assert result["results"] == []
@pytest.mark.skip(reason="Mock session is overridden by _ensure_session call")
@pytest.mark.asyncio
async def test_search_tv_show_uses_cache(self, tmdb_client):
"""Test search results are cached."""
@@ -117,25 +116,26 @@ class TestTMDBClientSearchTVShow:
tmdb_client.clear_cache()
mock_data = {"results": [{"id": 1, "name": "Cached Show"}]}
mock_session = AsyncMock()
mock_session = MagicMock()
mock_response = AsyncMock()
mock_response.status = 200
mock_response.json = AsyncMock(return_value=mock_data)
mock_response.__aenter__ = AsyncMock(return_value=mock_response)
mock_response.__aexit__ = AsyncMock(return_value=None)
mock_session.get = AsyncMock(return_value=mock_response)
mock_session.get = MagicMock(return_value=mock_response)
tmdb_client.session = mock_session
# First call should hit API
result1 = await tmdb_client.search_tv_show("Cached Show")
assert mock_session.get.call_count == 1
# Second call should use cache
result2 = await tmdb_client.search_tv_show("Cached Show")
assert mock_session.get.call_count == 1 # Not called again
assert result1 == result2
with patch.object(tmdb_client, '_ensure_session', new_callable=AsyncMock):
# First call should hit API
result1 = await tmdb_client.search_tv_show("Cached Show")
assert mock_session.get.call_count == 1
# Second call should use cache
result2 = await tmdb_client.search_tv_show("Cached Show")
assert mock_session.get.call_count == 1 # Not called again
assert result1 == result2
class TestTMDBClientGetTVShowDetails:
@@ -239,23 +239,23 @@ class TestTMDBClientImageURL:
class TestTMDBClientMakeRequest:
"""Test _make_request private method."""
@pytest.mark.skip(reason="Mock session is overridden by _ensure_session call")
@pytest.mark.asyncio
async def test_make_request_success(self, tmdb_client):
"""Test successful request."""
mock_session = AsyncMock()
mock_session = MagicMock()
mock_response = AsyncMock()
mock_response.status = 200
mock_response.json = AsyncMock(return_value={"data": "test"})
mock_response.__aenter__ = AsyncMock(return_value=mock_response)
mock_response.__aexit__ = AsyncMock(return_value=None)
mock_session.get = AsyncMock(return_value=mock_response)
mock_session.get = MagicMock(return_value=mock_response)
tmdb_client.session = mock_session
result = await tmdb_client._request("tv/search", {"query": "test"})
assert result == {"data": "test"}
with patch.object(tmdb_client, '_ensure_session', new_callable=AsyncMock):
result = await tmdb_client._request("tv/search", {"query": "test"})
assert result == {"data": "test"}
@pytest.mark.asyncio
async def test_make_request_unauthorized(self, tmdb_client):
@@ -273,11 +273,10 @@ class TestTMDBClientMakeRequest:
with pytest.raises(TMDBAPIError, match="Invalid"):
await tmdb_client._request("tv/search", {})
@pytest.mark.skip(reason="Mock session is overridden by _ensure_session call")
@pytest.mark.asyncio
async def test_make_request_not_found(self, tmdb_client):
"""Test 404 not found error."""
mock_session = AsyncMock()
mock_session = MagicMock()
mock_response = AsyncMock()
mock_response.status = 404
mock_response.raise_for_status = MagicMock(
@@ -285,12 +284,13 @@ class TestTMDBClientMakeRequest:
)
mock_response.__aenter__ = AsyncMock(return_value=mock_response)
mock_response.__aexit__ = AsyncMock(return_value=None)
mock_session.get = AsyncMock(return_value=mock_response)
mock_session.get = MagicMock(return_value=mock_response)
tmdb_client.session = mock_session
with pytest.raises(TMDBAPIError, match="Resource not found"):
await tmdb_client._request("tv/99999", {})
with patch.object(tmdb_client, '_ensure_session', new_callable=AsyncMock):
with pytest.raises(TMDBAPIError, match="Resource not found"):
await tmdb_client._request("tv/99999", {})
@pytest.mark.asyncio
async def test_make_request_rate_limit(self, tmdb_client):
@@ -312,39 +312,28 @@ class TestTMDBClientMakeRequest:
class TestTMDBClientDownloadImage:
"""Test download_image method."""
@pytest.mark.skip(reason="Mock session is overridden by _ensure_session call")
@pytest.mark.asyncio
async def test_download_image_success(self, tmdb_client, tmp_path):
"""Test successful image download."""
image_data = b"fake_image_data"
# Ensure session is created before mocking
await tmdb_client._ensure_session()
mock_session = AsyncMock()
mock_session = MagicMock()
mock_response = AsyncMock()
mock_response.status = 200
mock_response.read = AsyncMock(return_value=image_data)
mock_response.raise_for_status = AsyncMock()
mock_response.__aenter__ = AsyncMock(return_value=mock_response)
mock_response.__aexit__ = AsyncMock(return_value=None)
mock_session.get = AsyncMock(return_value=mock_response)
mock_session.get = MagicMock(return_value=mock_response)
# Replace the session
old_session = tmdb_client.session
tmdb_client.session = mock_session
try:
with patch.object(tmdb_client, '_ensure_session', new_callable=AsyncMock):
output_path = tmp_path / "test.jpg"
await tmdb_client.download_image("/image.jpg", output_path)
assert output_path.exists()
assert output_path.read_bytes() == image_data
finally:
# Restore and close
tmdb_client.session = old_session
if old_session:
await old_session.close()
@pytest.mark.asyncio
async def test_download_image_failure(self, tmdb_client, tmp_path):