Files
shelfmark/tests/config/test_download_legacy_migration.py
T
Alex d7b9f2e67f Backend test hardening + quality enforcement (#872)
- Reworked many tests
- Enforcing lint + type checking for test suite
- Fixed various issues surfaced by the new tests
- CI tweaks
2026-04-12 12:01:52 +01:00

109 lines
2.9 KiB
Python

"""Tests for legacy download-setting migration into the current config model."""
from unittest.mock import MagicMock
def test_migrate_legacy_download_settings_from_ingest_dir_and_use_book_title(monkeypatch):
import shelfmark.core.settings_registry as registry
saved: list[tuple[str, dict[str, object]]] = []
monkeypatch.setattr(
registry,
"load_config_file",
lambda tab_name: (
{
"INGEST_DIR": "/legacy/books",
"USE_BOOK_TITLE": True,
"TORRENT_HARDLINK": True,
}
if tab_name == "downloads"
else {}
),
)
monkeypatch.setattr(
registry,
"save_config_file",
lambda tab_name, values: saved.append((tab_name, values)) or True,
)
registry.migrate_legacy_settings()
assert saved == [
(
"downloads",
{
"DESTINATION": "/legacy/books",
"FILE_ORGANIZATION": "rename",
"HARDLINK_TORRENTS": True,
"HARDLINK_TORRENTS_AUDIOBOOK": True,
},
)
]
def test_migrate_legacy_download_settings_moves_content_type_routing(monkeypatch):
import shelfmark.core.settings_registry as registry
saves = MagicMock(return_value=True)
monkeypatch.setattr(
registry,
"load_config_file",
lambda tab_name: (
{
"INGEST_DIR": "/legacy/books",
"USE_BOOK_TITLE": False,
"USE_CONTENT_TYPE_DIRECTORIES": True,
"INGEST_DIR_BOOK_FICTION": "/legacy/fiction",
"INGEST_DIR_COMIC_BOOK": "/legacy/comics",
}
if tab_name == "downloads"
else {}
),
)
monkeypatch.setattr(registry, "save_config_file", saves)
registry.migrate_legacy_settings()
saves.assert_any_call(
"downloads",
{
"DESTINATION": "/legacy/books",
"FILE_ORGANIZATION": "none",
},
)
saves.assert_any_call(
"download_sources",
{
"AA_CONTENT_TYPE_ROUTING": True,
"AA_CONTENT_TYPE_DIR_FICTION": "/legacy/fiction",
"AA_CONTENT_TYPE_DIR_COMIC": "/legacy/comics",
},
)
def test_migrate_legacy_download_settings_ignores_pre_release_processing_mode_keys(monkeypatch):
import shelfmark.core.settings_registry as registry
saves = MagicMock(return_value=True)
monkeypatch.setattr(
registry,
"load_config_file",
lambda tab_name: (
{
"PROCESSING_MODE": "library",
"LIBRARY_PATH": "/library",
"LIBRARY_TEMPLATE": "{Author}/{Title}",
}
if tab_name == "downloads"
else {}
),
)
monkeypatch.setattr(registry, "save_config_file", saves)
registry.migrate_legacy_settings()
saves.assert_not_called()