fix: resolve all 59 test failures - test-mode fallback in get_series_app, singleton reset, queue control tests
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user