Refactor trigger_rescan to use anime_service
- Use anime_service.rescan() instead of direct trigger_rescan import - Change Optional[Any] to Optional[Dict[str, Any]] in ConfigUpdate for better type hints - Add ValidationError handling in ConfigUpdate.apply_to - Update tests to match new implementation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -344,16 +344,16 @@ class TestTriggerRescan:
|
||||
@pytest.mark.asyncio
|
||||
async def test_trigger_rescan_success(self, authenticated_client):
|
||||
"""Successful trigger returns 200 with a message."""
|
||||
mock_trigger = AsyncMock(return_value={"message": "Rescan triggered"})
|
||||
mock_rescan = AsyncMock()
|
||||
mock_series_app = Mock()
|
||||
|
||||
with patch("src.server.utils.dependencies.get_series_app", return_value=mock_series_app), \
|
||||
patch("src.server.api.anime.trigger_rescan", mock_trigger):
|
||||
patch("src.server.api.scheduler.get_anime_service", return_value=Mock(rescan=mock_rescan)):
|
||||
response = await authenticated_client.post("/api/scheduler/trigger-rescan")
|
||||
|
||||
assert response.status_code == 200
|
||||
assert "message" in response.json()
|
||||
mock_trigger.assert_called_once()
|
||||
mock_rescan.assert_called_once()
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_trigger_rescan_unauthorized(self, client):
|
||||
@@ -375,11 +375,11 @@ class TestTriggerRescan:
|
||||
@pytest.mark.asyncio
|
||||
async def test_trigger_rescan_failure(self, authenticated_client):
|
||||
"""500 when underlying rescan call raises an exception."""
|
||||
mock_trigger = AsyncMock(side_effect=Exception("Rescan failed"))
|
||||
mock_rescan = AsyncMock(side_effect=Exception("Rescan failed"))
|
||||
mock_series_app = Mock()
|
||||
|
||||
with patch("src.server.utils.dependencies.get_series_app", return_value=mock_series_app), \
|
||||
patch("src.server.api.anime.trigger_rescan", mock_trigger):
|
||||
patch("src.server.api.scheduler.get_anime_service", return_value=Mock(rescan=mock_rescan)):
|
||||
response = await authenticated_client.post("/api/scheduler/trigger-rescan")
|
||||
|
||||
assert response.status_code == 500
|
||||
@@ -426,13 +426,13 @@ class TestSchedulerEndpointsIntegration:
|
||||
self, authenticated_client, mock_config_service, mock_scheduler_service
|
||||
):
|
||||
"""POST config then POST trigger-rescan both succeed."""
|
||||
mock_trigger = AsyncMock(return_value={"message": "Rescan triggered"})
|
||||
mock_rescan = AsyncMock()
|
||||
mock_series_app = Mock()
|
||||
|
||||
with patch("src.server.api.scheduler.get_config_service", return_value=mock_config_service), \
|
||||
patch("src.server.api.scheduler.get_scheduler_service", return_value=mock_scheduler_service), \
|
||||
patch("src.server.utils.dependencies.get_series_app", return_value=mock_series_app), \
|
||||
patch("src.server.api.anime.trigger_rescan", mock_trigger):
|
||||
patch("src.server.api.scheduler.get_anime_service", return_value=Mock(rescan=mock_rescan)):
|
||||
r = await authenticated_client.post(
|
||||
"/api/scheduler/config",
|
||||
json={"enabled": True, "interval_minutes": 360},
|
||||
@@ -441,4 +441,4 @@ class TestSchedulerEndpointsIntegration:
|
||||
|
||||
r = await authenticated_client.post("/api/scheduler/trigger-rescan")
|
||||
assert r.status_code == 200
|
||||
mock_trigger.assert_called_once()
|
||||
mock_rescan.assert_called_once()
|
||||
|
||||
Reference in New Issue
Block a user