mirror of
https://github.com/ManiMatter/decluttarr.git
synced 2026-04-27 03:05:36 +02:00
Merge branch 'pr/NaruZosa/252' into decluttarr-v2
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
from unittest.mock import MagicMock
|
||||
import pytest
|
||||
|
||||
from tests.jobs.utils import shared_fix_affected_items, shared_test_affected_items
|
||||
from src.jobs.remove_missing_files import RemoveMissingFiles
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.parametrize(
|
||||
"queue_data, expected_download_ids",
|
||||
("queue_data", "expected_download_ids"),
|
||||
[
|
||||
(
|
||||
[ # valid failed torrent (warning + matching errorMessage)
|
||||
@@ -12,13 +14,13 @@ from src.jobs.remove_missing_files import RemoveMissingFiles
|
||||
{"downloadId": "2", "status": "warning", "errorMessage": "The download is missing files"},
|
||||
{"downloadId": "3", "status": "warning", "errorMessage": "qBittorrent is reporting missing files"},
|
||||
],
|
||||
["1", "2", "3"]
|
||||
["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
|
||||
@@ -26,18 +28,18 @@ from src.jobs.remove_missing_files import RemoveMissingFiles
|
||||
"downloadId": "1",
|
||||
"status": "completed",
|
||||
"statusMessages": [
|
||||
{"messages": ["No files found are eligible for import in /some/path"]}
|
||||
{"messages": ["No files found are eligible for import in /some/path"]},
|
||||
],
|
||||
},
|
||||
{
|
||||
"downloadId": "2",
|
||||
"status": "completed",
|
||||
"statusMessages": [
|
||||
{"messages": ["Everything looks good!"]}
|
||||
{"messages": ["Everything looks good!"]},
|
||||
],
|
||||
},
|
||||
],
|
||||
["1"]
|
||||
["1"],
|
||||
),
|
||||
(
|
||||
[ # No statusMessages key or irrelevant messages
|
||||
@@ -45,10 +47,10 @@ from src.jobs.remove_missing_files import RemoveMissingFiles
|
||||
{
|
||||
"downloadId": "2",
|
||||
"status": "completed",
|
||||
"statusMessages": [{"messages": ["Other message"]}]
|
||||
"statusMessages": [{"messages": ["Other message"]}],
|
||||
},
|
||||
],
|
||||
[]
|
||||
[],
|
||||
),
|
||||
(
|
||||
[ # Mixed: one matching warning + one matching statusMessage
|
||||
@@ -56,24 +58,17 @@ from src.jobs.remove_missing_files import RemoveMissingFiles
|
||||
{
|
||||
"downloadId": "2",
|
||||
"status": "completed",
|
||||
"statusMessages": [{"messages": ["No files found are eligible for import in foo"]}]
|
||||
"statusMessages": [{"messages": ["No files found are eligible for import in foo"]}],
|
||||
},
|
||||
{"downloadId": "3", "status": "completed"},
|
||||
],
|
||||
["1", "2"]
|
||||
["1", "2"],
|
||||
),
|
||||
]
|
||||
],
|
||||
)
|
||||
async def test_find_affected_items(queue_data, expected_download_ids):
|
||||
# Arrange
|
||||
removal_job = RemoveMissingFiles(arr=MagicMock(), settings=MagicMock(),job_name="test")
|
||||
removal_job.queue = queue_data
|
||||
removal_job = shared_fix_affected_items(RemoveMissingFiles, queue_data)
|
||||
|
||||
# Act
|
||||
affected_items = await removal_job._find_affected_items() # pylint: disable=W0212
|
||||
|
||||
# Assert
|
||||
assert isinstance(affected_items, list)
|
||||
affected_download_ids = [item["downloadId"] for item in affected_items]
|
||||
assert sorted(affected_download_ids) == sorted(expected_download_ids), \
|
||||
f"Expected affected items with downloadIds {expected_download_ids}, got {affected_download_ids}"
|
||||
# Act and Assert
|
||||
await shared_test_affected_items(removal_job, expected_download_ids)
|
||||
|
||||
Reference in New Issue
Block a user