Files
decluttarr/tests/utils/remove_download/remove_download_utils.py
2024-09-14 11:28:07 +02:00

65 lines
1.9 KiB
Python

import os
os.environ["IS_IN_PYTEST"] = "true"
import logging
import json
import pytest
from typing import Dict, Set, Any
from src.utils.shared import remove_download
from src.utils.trackers import Deleted_Downloads
# Utility function to load mock data
def load_mock_data(file_name):
with open(file_name, "r") as file:
return json.load(file)
async def mock_rest_delete() -> None:
logger.debug(f"Mock rest_delete called with URL")
async def run_test(
settingsDict: Dict[str, Any],
expected_removal_messages: Set[str],
failType: str,
removeFromClient: bool,
mock_data_file: str,
monkeypatch: pytest.MonkeyPatch,
caplog: pytest.LogCaptureFixture,
) -> None:
# Load mock data
affectedItem = load_mock_data(mock_data_file)
# Mock the `rest_delete` function
monkeypatch.setattr("src.utils.shared.rest_delete", mock_rest_delete)
# Call the function
with caplog.at_level(logging.INFO):
# Call the function and assert no exceptions
try:
deleted_downloads = Deleted_Downloads([])
await remove_download(
settingsDict=settingsDict,
BASE_URL="",
API_KEY="",
affectedItem=affectedItem,
failType=failType,
addToBlocklist=True,
deleted_downloads=deleted_downloads,
removeFromClient=removeFromClient,
)
except Exception as e:
pytest.fail(f"remove_download raised an exception: {e}")
# Assertions:
# Check that expected log messages are in the captured log
log_messages = {
record.message for record in caplog.records if record.levelname == "INFO"
}
assert expected_removal_messages == log_messages
# Check that the affectedItem's downloadId was added to deleted_downloads
assert affectedItem["downloadId"] in deleted_downloads.dict