56 lines
2.2 KiB
Python
56 lines
2.2 KiB
Python
from importarr.config import Settings
|
|
from importarr.state import State
|
|
|
|
|
|
def test_path_must_be_under_root(tmp_path):
|
|
settings = Settings(download_root=tmp_path / "manual")
|
|
try:
|
|
settings.resolve_under_download_root("/etc")
|
|
except ValueError:
|
|
pass
|
|
else:
|
|
raise AssertionError("expected ValueError")
|
|
|
|
|
|
def test_manual_batch_completes_when_empty(tmp_path, monkeypatch):
|
|
monkeypatch.setenv("IMPORTARR_STATE_PATH", str(tmp_path / "initial.db"))
|
|
import importarr.main as main
|
|
download = tmp_path / "downloads"
|
|
movies = tmp_path / "movies"
|
|
tv = tmp_path / "tv"
|
|
batch = download / "Release"
|
|
batch.mkdir(parents=True)
|
|
(batch / "Movie.mkv").write_bytes(b"movie")
|
|
monkeypatch.setattr(main, "settings", Settings(download_root=download, movies_root=movies, tv_root=tv, state_path=tmp_path / "state.db"))
|
|
monkeypatch.setattr(main, "state", State(tmp_path / "state.db"))
|
|
main.state.add_manual_batch(batch)
|
|
assert main._import_manual_batches(main.Importer(movies, tv)) == 1
|
|
rows = main.state.list_manual_batches()
|
|
assert rows[0]["status"] == "completed"
|
|
assert (movies / "Movie.mkv").exists()
|
|
|
|
|
|
def test_manual_queue_items_are_persisted_and_imported(tmp_path, monkeypatch):
|
|
monkeypatch.setenv("IMPORTARR_STATE_PATH", str(tmp_path / "initial.db"))
|
|
import importarr.main as main
|
|
|
|
download = tmp_path / "downloads"
|
|
movies = tmp_path / "movies"
|
|
tv = tmp_path / "tv"
|
|
batch = download / "Release"
|
|
batch.mkdir(parents=True)
|
|
(batch / "Movie.mkv").write_bytes(b"movie")
|
|
monkeypatch.setattr(main, "settings", Settings(download_root=download, movies_root=movies, tv_root=tv, state_path=tmp_path / "state.db"))
|
|
monkeypatch.setattr(main, "state", State(tmp_path / "state.db"))
|
|
main.state.add_manual_batch(batch)
|
|
|
|
main.sync_manual_queue()
|
|
queued = main.state.list_queue_items()
|
|
assert len(queued) == 1
|
|
assert queued[0]["source_type"] == "manual"
|
|
assert queued[0]["state"] == "ready"
|
|
|
|
assert main._import_manual_batches(main.Importer(movies, tv)) == 1
|
|
assert main.state.list_queue_items() == []
|
|
assert main.state.list_queue_items(active_only=False)[0]["state"] == "imported"
|