feat: professionalize control plane and standalone delivery
This commit is contained in:
46
tests/test_task_control_service.py
Normal file
46
tests/test_task_control_service.py
Normal file
@ -0,0 +1,46 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
from types import SimpleNamespace
|
||||
from unittest.mock import patch
|
||||
|
||||
from biliup_next.app.task_control_service import TaskControlService
|
||||
|
||||
|
||||
class TaskControlServiceTests(unittest.TestCase):
|
||||
def test_run_task_delegates_to_process_task(self) -> None:
|
||||
state = {"repo": object(), "settings": {"paths": {"session_dir": "/tmp/session"}}}
|
||||
|
||||
with patch("biliup_next.app.task_control_service.process_task", return_value={"processed": [{"task_id": "task-1"}]}) as process_mock:
|
||||
result = TaskControlService(state).run_task("task-1")
|
||||
|
||||
self.assertEqual(result["processed"][0]["task_id"], "task-1")
|
||||
process_mock.assert_called_once_with("task-1")
|
||||
|
||||
def test_retry_step_delegates_with_reset_step(self) -> None:
|
||||
state = {"repo": object(), "settings": {"paths": {"session_dir": "/tmp/session"}}}
|
||||
|
||||
with patch("biliup_next.app.task_control_service.process_task", return_value={"processed": [{"step": "publish"}]}) as process_mock:
|
||||
result = TaskControlService(state).retry_step("task-1", "publish")
|
||||
|
||||
self.assertEqual(result["processed"][0]["step"], "publish")
|
||||
process_mock.assert_called_once_with("task-1", reset_step="publish")
|
||||
|
||||
def test_reset_to_step_combines_reset_and_run_payloads(self) -> None:
|
||||
state = {"repo": object(), "settings": {"paths": {"session_dir": "/tmp/session"}}}
|
||||
reset_service = SimpleNamespace(reset_to_step=lambda task_id, step_name: {"task_id": task_id, "reset_to": step_name})
|
||||
|
||||
with patch("biliup_next.app.task_control_service.TaskResetService", return_value=reset_service) as reset_cls:
|
||||
with patch.object(reset_service, "reset_to_step", return_value={"task_id": "task-1", "reset_to": "split"}) as reset_mock:
|
||||
with patch("biliup_next.app.task_control_service.process_task", return_value={"processed": [{"task_id": "task-1"}]}) as process_mock:
|
||||
result = TaskControlService(state).reset_to_step("task-1", "split")
|
||||
|
||||
self.assertEqual(result["reset"]["reset_to"], "split")
|
||||
self.assertEqual(result["run"]["processed"][0]["task_id"], "task-1")
|
||||
reset_cls.assert_called_once()
|
||||
reset_mock.assert_called_once_with("task-1", "split")
|
||||
process_mock.assert_called_once_with("task-1")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user