feat: 批量重跑实时刷新任务状态 (#143)
This commit is contained in:
@@ -207,6 +207,30 @@ class CollectTaskServiceTest(unittest.TestCase):
|
||||
self.repository.get_task("COL-OTHER").status, TaskStatus.CLAIMED
|
||||
)
|
||||
|
||||
def test_started_callback_runs_after_database_enters_running(self):
|
||||
self.repository.add_claimed_task(
|
||||
NewClaimedTask(
|
||||
remote_task_id="COL-STARTED",
|
||||
task_type=TaskType.COLLECT,
|
||||
goods_url="https://example.test/COL-STARTED",
|
||||
)
|
||||
)
|
||||
observed = []
|
||||
service = CollectTaskService(
|
||||
self.gateway,
|
||||
self.repository,
|
||||
self.client,
|
||||
"USB-001",
|
||||
started=lambda task_id: observed.append(
|
||||
(task_id, self.repository.get_task(task_id).status)
|
||||
),
|
||||
collect_service_factory=lambda *_args: FakeCollector([]),
|
||||
)
|
||||
|
||||
service.execute_selected("COL-STARTED")
|
||||
|
||||
self.assertEqual(observed, [("COL-STARTED", TaskStatus.RUNNING)])
|
||||
|
||||
def test_selected_task_cancelled_before_collector_starts_is_persisted(self):
|
||||
self.repository.add_claimed_task(
|
||||
NewClaimedTask(
|
||||
|
||||
@@ -1094,6 +1094,37 @@ class PDDTaskPageEventTest(unittest.TestCase):
|
||||
self.assertEqual(row.goods_id, "")
|
||||
self.assertFalse(hasattr(row, "pdd_data"))
|
||||
|
||||
def test_summary_to_row_uses_task_specific_running_text(self):
|
||||
common = dict(
|
||||
id=1,
|
||||
goods_id=None,
|
||||
title=None,
|
||||
target_color=None,
|
||||
target_size=None,
|
||||
price_cent=None,
|
||||
quantity=None,
|
||||
status=TaskStatus.RUNNING,
|
||||
updated_at="2026-08-11T08:00:00Z",
|
||||
)
|
||||
|
||||
collect = summary_to_row(
|
||||
TaskSummary(
|
||||
remote_task_id="COL-RUNNING",
|
||||
task_type=TaskType.COLLECT,
|
||||
**common,
|
||||
)
|
||||
)
|
||||
purchase = summary_to_row(
|
||||
TaskSummary(
|
||||
remote_task_id="PUR-RUNNING",
|
||||
task_type=TaskType.PURCHASE,
|
||||
**common,
|
||||
)
|
||||
)
|
||||
|
||||
self.assertEqual(collect.status, "采集中")
|
||||
self.assertEqual(purchase.status, "采购中")
|
||||
|
||||
def test_main_window_keeps_event_object_alive(self):
|
||||
window = MainWindow(
|
||||
task_repository=self.repository,
|
||||
|
||||
@@ -217,6 +217,24 @@ class PurchaseTaskServiceTest(unittest.TestCase):
|
||||
self.assertFalse(purchase["order_submitted"])
|
||||
self.assertFalse(purchase["payment_attempted"])
|
||||
|
||||
def test_started_callback_runs_after_database_enters_running(self):
|
||||
self._prepare_task(task_id="PUR-STARTED")
|
||||
observed = []
|
||||
service = PurchaseTaskService(
|
||||
self.gateway,
|
||||
self.repository,
|
||||
self.client,
|
||||
"USB-001",
|
||||
lambda _address, _cancelled: RecordingDryRunAdapter(),
|
||||
started=lambda task_id: observed.append(
|
||||
(task_id, self.repository.get_task(task_id).status)
|
||||
),
|
||||
)
|
||||
|
||||
service.execute_selected("PUR-STARTED")
|
||||
|
||||
self.assertEqual(observed, [("PUR-STARTED", TaskStatus.RUNNING)])
|
||||
|
||||
def test_price_above_limit_stops_before_confirmation(self):
|
||||
self._prepare_task()
|
||||
adapter = RecordingDryRunAdapter(price_cent=5001)
|
||||
|
||||
Reference in New Issue
Block a user