Add watchlist download-all action
This commit is contained in:
+43
@@ -954,6 +954,35 @@ class WatchlistCompletionTests(unittest.TestCase):
|
||||
self.assertEqual(prepared["show_id"], "show-42")
|
||||
self.assertEqual(prepared["title"], "Queue Show Season 2")
|
||||
|
||||
def test_download_watchlist_item_queues_full_episode_range_for_selected_mode(self):
|
||||
item = {"show_id": "show-42", "title": "Queue Show"}
|
||||
job = {"id": "job-1", "show_id": "show-42", "episodes": "1-12", "mode": "dub"}
|
||||
with mock.patch.object(APP, "ensure_runtime", return_value={"watchlist": APP.WATCHLIST, "download_queue": mock.Mock(), "config": {"quality": "best", "download_dir": "/tmp/downloads"}}), mock.patch.object(
|
||||
APP.WATCHLIST, "get", return_value=item
|
||||
), mock.patch.object(APP, "search_anime", return_value=[{"id": "show-42", "title": "Queue Show", "query": "Queue Show", "index": 3}]), mock.patch.object(
|
||||
APP, "episode_list", return_value=["1", "2", "12"]
|
||||
):
|
||||
runtime = APP.ensure_runtime()
|
||||
runtime["download_queue"].add.return_value = job
|
||||
result = APP.download_watchlist_item("show-42", "dub")
|
||||
|
||||
runtime["download_queue"].add.assert_called_once_with(
|
||||
{
|
||||
"show_id": "show-42",
|
||||
"query": "Queue Show",
|
||||
"title": "Queue Show",
|
||||
"anime_name": "Queue Show",
|
||||
"season": "1",
|
||||
"index": 3,
|
||||
"mode": "dub",
|
||||
"quality": "best",
|
||||
"episodes": "1-12",
|
||||
"download_dir": "/tmp/downloads",
|
||||
}
|
||||
)
|
||||
self.assertEqual(result["job"], job)
|
||||
self.assertIn("Queued Queue Show for dub download.", result["message"])
|
||||
|
||||
def test_sync_downloaded_job_to_watchlist_rejects_ambiguous_fallback_match(self):
|
||||
job = {"query": "Queue Show", "mode": "sub", "result_index": 1, "title": "Queue Show"}
|
||||
|
||||
@@ -1571,6 +1600,15 @@ class HandlerRouteTests(unittest.TestCase):
|
||||
self.assertEqual(handler.json_payload, {"message": "Queued refresh for Show 1.", "item": queued_item})
|
||||
self.assertEqual(handler.json_status, HTTPStatus.OK)
|
||||
|
||||
def test_watchlist_download_all_post_returns_created_job(self):
|
||||
body = b'{"show_id":"show-1","mode":"sub"}'
|
||||
handler = DummyHandler("/api/watchlist/download-all", body=body, content_length=len(body))
|
||||
payload = {"message": "Queued Show 1 for sub download.", "job": {"id": "job-1"}, "item": {"show_id": "show-1"}}
|
||||
handler.handler_context = mock.Mock(download_watchlist_item=mock.Mock(return_value=payload))
|
||||
APP.Handler.do_POST(handler)
|
||||
self.assertEqual(handler.json_payload, payload)
|
||||
self.assertEqual(handler.json_status, HTTPStatus.CREATED)
|
||||
|
||||
def test_generic_handler_exception_skips_traceback_when_debug_disabled(self):
|
||||
handler = DummyHandler("/api/config")
|
||||
with mock.patch.object(http_handler, "debug_enabled", return_value=False), mock.patch.object(
|
||||
@@ -1650,6 +1688,11 @@ class TemplateHelperTests(unittest.TestCase):
|
||||
self.assertIn("const isFullyReady = item.sub_complete && item.dub_complete;", APP.WATCHLIST_HTML)
|
||||
self.assertIn("card.className = watchlistCardClassName(item);", APP.WATCHLIST_HTML)
|
||||
|
||||
def test_watchlist_page_download_all_replaces_open_action(self):
|
||||
self.assertIn("Download all", APP.WATCHLIST_HTML)
|
||||
self.assertIn('api("/api/watchlist/download-all"', APP.WATCHLIST_HTML)
|
||||
self.assertIn("Enter sub or dub", APP.WATCHLIST_HTML)
|
||||
|
||||
def test_watchlist_thumbnail_warmup_skips_repeated_attempts(self):
|
||||
self.assertIn("thumbnailWarmupPending: new Set()", APP.WATCHLIST_HTML)
|
||||
self.assertIn("function thumbnailWarmupToken(item)", APP.WATCHLIST_HTML)
|
||||
|
||||
Reference in New Issue
Block a user