test: fix NFO workflow and background loader tests

- Add missing TMDB async mock methods (_ensure_session, close)
  to all TMDB mocks in test_nfo_workflow.py
- Refactor test_anime_add_nfo_isolation.py to mock get_nfo_factory()
  instead of asserting on series_app.nfo_service directly
- Patch get_nfo_factory in test_background_loader_service.py
  to align with factory-based NFOService creation

Fixes test failures caused by NFOService refactoring that introduced
explicit TMDB session lifecycle and NFO factory pattern.
This commit is contained in:
2026-05-13 12:41:22 +02:00
parent 9c0f7ce08d
commit ceac22fc34
3 changed files with 143 additions and 96 deletions

View File

@@ -96,6 +96,8 @@ class TestCompleteNFOWorkflow:
mock_tmdb = Mock()
mock_tmdb.__aenter__ = AsyncMock(return_value=mock_tmdb)
mock_tmdb.__aexit__ = AsyncMock(return_value=None)
mock_tmdb._ensure_session = AsyncMock()
mock_tmdb.close = AsyncMock()
mock_tmdb.search_tv_show = AsyncMock(return_value={"results": [mock_tmdb_show]})
mock_tmdb.get_tv_show = AsyncMock(return_value=mock_tmdb_show)
mock_tmdb.get_tv_show_details = AsyncMock(return_value=mock_tmdb_show)
@@ -158,6 +160,8 @@ class TestCompleteNFOWorkflow:
mock_tmdb = Mock()
mock_tmdb.__aenter__ = AsyncMock(return_value=mock_tmdb)
mock_tmdb.__aexit__ = AsyncMock(return_value=None)
mock_tmdb._ensure_session = AsyncMock()
mock_tmdb.close = AsyncMock()
mock_tmdb.search_tv_show = AsyncMock(
return_value={"results": [{
"id": 999,
@@ -208,6 +212,8 @@ class TestCompleteNFOWorkflow:
mock_tmdb = Mock()
mock_tmdb.__aenter__ = AsyncMock(return_value=mock_tmdb)
mock_tmdb.__aexit__ = AsyncMock(return_value=None)
mock_tmdb._ensure_session = AsyncMock()
mock_tmdb.close = AsyncMock()
mock_tmdb.search_tv_show = AsyncMock(
side_effect=TMDBAPIError("API error")
)
@@ -253,6 +259,8 @@ class TestCompleteNFOWorkflow:
mock_tmdb = Mock()
mock_tmdb.__aenter__ = AsyncMock(return_value=mock_tmdb)
mock_tmdb.__aexit__ = AsyncMock(return_value=None)
mock_tmdb._ensure_session = AsyncMock()
mock_tmdb.close = AsyncMock()
mock_tmdb.search_tv_show = AsyncMock(
return_value={"results": [{
"id": 999,
@@ -307,16 +315,22 @@ class TestCompleteNFOWorkflow:
mock_tmdb = Mock()
mock_tmdb.__aenter__ = AsyncMock(return_value=mock_tmdb)
mock_tmdb.__aexit__ = AsyncMock(return_value=None)
mock_tmdb._ensure_session = AsyncMock()
mock_tmdb.close = AsyncMock()
mock_tmdb.search_tv_show = AsyncMock(
side_effect=[
{"results": [{"id": 1, "name": "Anime 1", "first_air_date": "2020-01-01"}]},
{"results": [{"id": 2, "name": "Anime 2", "first_air_date": "2021-01-01"}]},
{"results": [{"id": 1, "name": "Anime 1", "first_air_date": "2020-01-01"}]},
{"results": [{"id": 2, "name": "Anime 2", "first_air_date": "2021-01-01"}]},
]
)
mock_tmdb.get_tv_show_details = AsyncMock(
side_effect=[
{"id": 1, "name": "Anime 1", "first_air_date": "2020-01-01"},
{"id": 2, "name": "Anime 2", "first_air_date": "2021-01-01"},
{"id": 1, "name": "Anime 1", "first_air_date": "2020-01-01"},
{"id": 2, "name": "Anime 2", "first_air_date": "2021-01-01"},
]
)
mock_tmdb.get_tv_show_content_ratings = AsyncMock(return_value={"results": []})
@@ -366,6 +380,8 @@ class TestNFOWorkflowWithDownloads:
mock_tmdb = Mock()
mock_tmdb.__aenter__ = AsyncMock(return_value=mock_tmdb)
mock_tmdb.__aexit__ = AsyncMock(return_value=None)
mock_tmdb._ensure_session = AsyncMock()
mock_tmdb.close = AsyncMock()
mock_tmdb.search_tv_show = AsyncMock(
return_value={"results": [{
"id": 999,