Track downloaded episodes for auto-download
This commit is contained in:
+45
-4
@@ -989,13 +989,14 @@ class WatchlistCompletionTests(unittest.TestCase):
|
||||
|
||||
with mock.patch.object(APP.WATCHLIST, "schedule_refresh", side_effect=lambda show_id, source="manual": APP.WATCHLIST.get(show_id)), mock.patch.object(
|
||||
APP.WATCHLIST, "refresh", side_effect=AssertionError("mark_downloaded should not refresh synchronously")
|
||||
):
|
||||
item = APP.WATCHLIST.mark_downloaded("show-9", title="Queue Show")
|
||||
), mock.patch.object(APP, "episode_list", return_value=["1", "2", "3"]):
|
||||
item = APP.WATCHLIST.mark_downloaded("show-9", title="Queue Show", mode="dub", episodes="2-3")
|
||||
|
||||
self.assertEqual(item["category"], "finished")
|
||||
self.assertTrue(item["downloaded"])
|
||||
self.assertEqual(item["finished_badge"], "downloaded")
|
||||
self.assertEqual(item["status"], "queued")
|
||||
self.assertEqual(item["downloaded_dub_episodes"], ["2", "3"])
|
||||
|
||||
def test_mark_downloaded_creates_missing_show_in_finished_category(self):
|
||||
with mock.patch.object(APP.WATCHLIST, "schedule_refresh", side_effect=lambda show_id, source="manual": APP.WATCHLIST.get(show_id)), mock.patch.object(
|
||||
@@ -1069,7 +1070,7 @@ class WatchlistCompletionTests(unittest.TestCase):
|
||||
) as mark_downloaded:
|
||||
APP.sync_downloaded_job_to_watchlist(job)
|
||||
|
||||
mark_downloaded.assert_called_once_with("show-42", title="Queue Show")
|
||||
mark_downloaded.assert_called_once_with("show-42", title="Queue Show", mode="sub", episodes=None)
|
||||
|
||||
def test_prepare_download_job_persists_resolved_show_id(self):
|
||||
job = {"query": "Queue Show", "mode": "sub", "result_index": 1, "title": "Queue Show", "show_id": ""}
|
||||
@@ -1511,7 +1512,7 @@ class AutoDownloadQueueTests(unittest.TestCase):
|
||||
"title": "Queue Show",
|
||||
"category": "watching",
|
||||
"previous_last_checked": "2026-05-25T10:00:00+00:00",
|
||||
"had_new_episodes": True,
|
||||
"had_new_episodes": False,
|
||||
"previous_dub_count": 10,
|
||||
"previous_sub_count": 10,
|
||||
"dub_episode_values": ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"],
|
||||
@@ -1520,6 +1521,8 @@ class AutoDownloadQueueTests(unittest.TestCase):
|
||||
"auto_download_quality": "best",
|
||||
"auto_download_name": 'Queue Show: Alt/Name',
|
||||
"auto_download_series": "3",
|
||||
"downloaded_dub_episodes": ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"],
|
||||
"downloaded_sub_episodes": [],
|
||||
}
|
||||
download_queue = mock.Mock()
|
||||
download_queue.covered_episodes.return_value = {"11"}
|
||||
@@ -1559,6 +1562,44 @@ class AutoDownloadQueueTests(unittest.TestCase):
|
||||
}
|
||||
)
|
||||
|
||||
def test_queue_watchlist_auto_download_can_queue_existing_backlog_after_initial_seed_refresh(self):
|
||||
item = {
|
||||
"show_id": "show-99",
|
||||
"title": "Backlog Show",
|
||||
"category": "watching",
|
||||
"previous_last_checked": "2026-05-25T10:00:00+00:00",
|
||||
"had_new_episodes": False,
|
||||
"dub_episode_values": ["1", "2", "3"],
|
||||
"sub_episode_values": [],
|
||||
"auto_download_mode": "dub",
|
||||
"auto_download_quality": "best",
|
||||
"auto_download_name": "Backlog Show",
|
||||
"auto_download_series": "1",
|
||||
"downloaded_dub_episodes": [],
|
||||
"downloaded_sub_episodes": [],
|
||||
}
|
||||
download_queue = mock.Mock()
|
||||
download_queue.covered_episodes.return_value = set()
|
||||
download_queue.add.return_value = {"id": "job-backlog", "episodes": "1-3"}
|
||||
runtime = {
|
||||
"config": {
|
||||
"auto_download_enabled": True,
|
||||
"auto_download_mode": "dub",
|
||||
"auto_download_quality": "best",
|
||||
"download_dir": "/tmp/downloads",
|
||||
},
|
||||
"download_queue": download_queue,
|
||||
}
|
||||
with mock.patch.object(APP, "ensure_runtime", return_value=runtime), mock.patch.object(
|
||||
APP,
|
||||
"search_anime",
|
||||
return_value=[{"id": "show-99", "title": "Backlog Show", "query": "Backlog Show", "index": 1}],
|
||||
):
|
||||
result = APP.queue_watchlist_auto_download(item, refresh_source="manual")
|
||||
|
||||
self.assertTrue(result["queued"])
|
||||
self.assertEqual(result["episodes"], ["1-3"])
|
||||
|
||||
|
||||
class StartupBehaviorTests(unittest.TestCase):
|
||||
def test_main_does_not_eagerly_initialize_runtime(self):
|
||||
|
||||
Reference in New Issue
Block a user