Files
decluttarr/tests/jobs/test_remove_missing_files.py
Benjamin Harder 8d9a64798d Formatting issues
2025-10-01 18:43:38 +02:00

101 lines
3.2 KiB
Python

import pytest
from src.jobs.remove_missing_files import RemoveMissingFiles
from tests.jobs.utils import shared_fix_affected_items, shared_test_affected_items
@pytest.mark.asyncio
@pytest.mark.parametrize(
("queue_data", "expected_download_ids"),
[
(
[ # valid failed torrent (warning + matching errorMessage)
{
"downloadId": "1",
"status": "warning",
"errorMessage": "DownloadClientQbittorrentTorrentStateMissingFiles",
},
{
"downloadId": "2",
"status": "warning",
"errorMessage": "The download is missing files",
},
{
"downloadId": "3",
"status": "warning",
"errorMessage": "qBittorrent is reporting missing files",
},
],
["1", "2", "3"],
),
(
[ # wrong status for errorMessage, should be ignored
{
"downloadId": "1",
"status": "failed",
"errorMessage": "The download is missing files",
},
],
[],
),
(
[ # valid "completed" with matching statusMessage
{
"downloadId": "1",
"status": "completed",
"statusMessages": [
{
"messages": [
"No files found are eligible for import in /some/path"
]
},
],
},
{
"downloadId": "2",
"status": "completed",
"statusMessages": [
{"messages": ["Everything looks good!"]},
],
},
],
["1"],
),
(
[ # No statusMessages key or irrelevant messages
{"downloadId": "1", "status": "completed"},
{
"downloadId": "2",
"status": "completed",
"statusMessages": [{"messages": ["Other message"]}],
},
],
[],
),
(
[ # Mixed: one matching warning + one matching statusMessage
{
"downloadId": "1",
"status": "warning",
"errorMessage": "The download is missing files",
},
{
"downloadId": "2",
"status": "completed",
"statusMessages": [
{"messages": ["No files found are eligible for import in foo"]}
],
},
{"downloadId": "3", "status": "completed"},
],
["1", "2"],
),
],
)
async def test_find_affected_items(queue_data, expected_download_ids):
# Arrange
removal_job = shared_fix_affected_items(RemoveMissingFiles, queue_data)
# Act and Assert
await shared_test_affected_items(removal_job, expected_download_ids)