Remove key_resolution and folder_rename services

Both services deleted. Orchestrator and rescan service no longer call them.
Folder scan step numbering adjusted (1.5 → 1.4). Tests updated.
This commit is contained in:
2026-06-04 18:22:12 +02:00
parent dc5d6506bc
commit 97caaf0d18
4 changed files with 1 additions and 882 deletions

View File

@@ -1,109 +0,0 @@
"""Integration tests for folder rename service wiring.
These tests verify that:
1. FolderScanService.run_folder_scan calls validate_and_rename_series_folders.
2. The rename logic is properly integrated into the scheduled folder scan.
"""
from unittest.mock import AsyncMock, MagicMock, patch
import pytest
class TestFolderRenameScanCalledInFolderScan:
"""Verify validate_and_rename_series_folders is invoked from FolderScanService."""
def test_validate_and_rename_imported_in_folder_scan_service(self):
"""folder_scan_service.py imports validate_and_rename_series_folders."""
import importlib
source = importlib.util.find_spec(
"src.server.services.scheduler.folder_scan_service"
).origin
with open(source, "r", encoding="utf-8") as fh:
content = fh.read()
assert "validate_and_rename_series_folders" in content, (
"validate_and_rename_series_folders must be imported in folder_scan_service.py"
)
def test_validate_and_rename_called_in_run_folder_scan(self):
"""validate_and_rename_series_folders must be called inside run_folder_scan."""
import importlib
source = importlib.util.find_spec(
"src.server.services.scheduler.folder_scan_service"
).origin
with open(source, "r", encoding="utf-8") as fh:
content = fh.read()
run_folder_scan_pos = content.find("def run_folder_scan")
rename_call_pos = content.find("validate_and_rename_series_folders()")
assert run_folder_scan_pos != -1, "run_folder_scan method not found"
assert rename_call_pos != -1, "validate_and_rename_series_folders call not found"
assert rename_call_pos > run_folder_scan_pos, (
"validate_and_rename_series_folders must be called INSIDE run_folder_scan"
)
class TestFolderRenameIntegration:
"""Integration test: folder rename is triggered during folder scan."""
@pytest.mark.asyncio
async def test_folder_rename_runs_during_scan(self, tmp_path):
"""When folder_scan_enabled is true, the scan renames mismatched folders."""
from src.server.services.scheduler.folder_scan_service import FolderScanService
anime_dir = tmp_path / "anime"
anime_dir.mkdir()
series_dir = anime_dir / "Attack on Titan"
series_dir.mkdir()
(series_dir / "tvshow.nfo").write_text(
"<tvshow><title>Attack on Titan</title><year>2013</year></tvshow>"
)
mock_settings = MagicMock()
mock_settings.tmdb_api_key = "test-key"
mock_settings.anime_directory = str(anime_dir)
with patch(
"src.config.settings.settings", mock_settings
), patch(
"src.server.services.scheduler.folder_rename_service.settings", mock_settings
), patch(
"src.server.services.scheduler.folder_scan_service.perform_nfo_repair_scan",
new_callable=AsyncMock,
), patch(
"src.server.services.scheduler.folder_rename_service._is_series_being_downloaded",
return_value=False,
), patch(
"src.server.services.scheduler.folder_rename_service._update_database_paths",
new_callable=AsyncMock,
):
service = FolderScanService()
await service.run_folder_scan()
assert not series_dir.exists()
assert (anime_dir / "Attack on Titan (2013)").is_dir()
@pytest.mark.asyncio
async def test_folder_rename_skipped_when_prerequisites_not_met(self, tmp_path):
"""If anime directory is missing, rename logic is skipped gracefully."""
from src.server.services.scheduler.folder_scan_service import FolderScanService
mock_settings = MagicMock()
mock_settings.tmdb_api_key = "test-key"
mock_settings.anime_directory = str(tmp_path / "nonexistent")
with patch(
"src.config.settings.settings", mock_settings
), patch(
"src.server.services.scheduler.folder_scan_service.perform_nfo_repair_scan",
new_callable=AsyncMock,
), patch(
"src.server.services.scheduler.folder_rename_service.validate_and_rename_series_folders"
) as mock_rename:
service = FolderScanService()
await service.run_folder_scan()
mock_rename.assert_not_called()

View File

@@ -93,10 +93,6 @@ class TestPosterCheckIntegration:
), patch(
"src.server.services.scheduler.folder_scan_service.perform_nfo_repair_scan",
new_callable=AsyncMock,
), patch(
"src.server.services.scheduler.folder_rename_service.validate_and_rename_series_folders",
new_callable=AsyncMock,
return_value={"scanned": 0, "renamed": 0, "skipped": 0, "errors": 0},
), patch(
"src.server.services.scheduler.folder_scan_service.ImageDownloader",
new=MockDownloader,
@@ -138,10 +134,6 @@ class TestPosterCheckIntegration:
), patch(
"src.server.services.scheduler.folder_scan_service.perform_nfo_repair_scan",
new_callable=AsyncMock,
), patch(
"src.server.services.scheduler.folder_rename_service.validate_and_rename_series_folders",
new_callable=AsyncMock,
return_value={"scanned": 0, "renamed": 0, "skipped": 0, "errors": 0},
), patch(
"src.server.services.scheduler.folder_scan_service.ImageDownloader"
) as mock_downloader_cls:
@@ -175,10 +167,6 @@ class TestPosterCheckIntegration:
), patch(
"src.server.services.scheduler.folder_scan_service.perform_nfo_repair_scan",
new_callable=AsyncMock,
), patch(
"src.server.services.scheduler.folder_rename_service.validate_and_rename_series_folders",
new_callable=AsyncMock,
return_value={"scanned": 0, "renamed": 0, "skipped": 0, "errors": 0},
), patch(
"src.server.services.scheduler.folder_scan_service.ImageDownloader"
) as mock_downloader_cls:
@@ -202,8 +190,6 @@ class TestPosterCheckIntegration:
"src.server.services.scheduler.folder_scan_service.perform_nfo_repair_scan",
new_callable=AsyncMock,
), patch(
"src.server.services.scheduler.folder_rename_service.validate_and_rename_series_folders"
) as mock_rename, patch(
"src.server.services.scheduler.folder_scan_service.ImageDownloader"
) as mock_downloader_cls:
service = FolderScanService()
@@ -272,10 +258,6 @@ class TestPosterCheckSemaphore:
), patch(
"src.server.services.scheduler.folder_scan_service.perform_nfo_repair_scan",
new_callable=AsyncMock,
), patch(
"src.server.services.scheduler.folder_rename_service.validate_and_rename_series_folders",
new_callable=AsyncMock,
return_value={"scanned": 0, "renamed": 0, "skipped": 0, "errors": 0},
), patch(
"src.server.services.scheduler.folder_scan_service.ImageDownloader"
) as mock_downloader_cls: