feat: add session-level publish and comment flow
This commit is contained in:
@ -4,6 +4,7 @@ import unittest
|
||||
from types import SimpleNamespace
|
||||
from unittest.mock import patch
|
||||
|
||||
from biliup_next.core.errors import ModuleError
|
||||
from biliup_next.app.task_runner import process_task
|
||||
from biliup_next.core.models import TaskStep
|
||||
|
||||
@ -97,6 +98,39 @@ class TaskRunnerTests(unittest.TestCase):
|
||||
self.assertEqual(repo.task_updates[0][1], "running")
|
||||
self.assertEqual(result["processed"][0]["step"], "transcribe")
|
||||
|
||||
def test_process_task_marks_publish_failed_retryable_on_module_error(self) -> None:
|
||||
task = SimpleNamespace(id="task-1", status="split_done", updated_at="2026-01-01T00:00:00+00:00")
|
||||
steps = [
|
||||
TaskStep(None, "task-1", "publish", "pending", None, None, 0, None, None),
|
||||
]
|
||||
repo = FakeRunnerRepo(task, steps)
|
||||
state = {
|
||||
"repo": repo,
|
||||
"settings": {
|
||||
"ingest": {},
|
||||
"paths": {},
|
||||
"comment": {"enabled": True},
|
||||
"collection": {"enabled": True},
|
||||
"publish": {"retry_schedule_minutes": [15], "rate_limit_retry_schedule_minutes": [30]},
|
||||
},
|
||||
}
|
||||
|
||||
with patch("biliup_next.app.task_runner.ensure_initialized", return_value=state), patch(
|
||||
"biliup_next.app.task_runner.record_task_action"
|
||||
), patch("biliup_next.app.task_runner.apply_disabled_step_fallbacks", return_value=False), patch(
|
||||
"biliup_next.app.task_runner.next_runnable_step", return_value=("publish", None)
|
||||
), patch(
|
||||
"biliup_next.app.task_runner.execute_step",
|
||||
side_effect=ModuleError(code="PUBLISH_RATE_LIMITED", message="rate limited", retryable=True),
|
||||
):
|
||||
result = process_task("task-1")
|
||||
|
||||
self.assertEqual(result["processed"][-1]["retry_status"], "failed_retryable")
|
||||
self.assertEqual(result["processed"][-1]["next_retry_delay_seconds"], 1800)
|
||||
self.assertEqual(repo.step_updates[-1][1], "publish")
|
||||
self.assertEqual(repo.step_updates[-1][2], "failed_retryable")
|
||||
self.assertEqual(repo.task_updates[-1][1], "failed_retryable")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user