feat: 执行并提交 PDD 采集任务 (#32)
This commit is contained in:
@@ -183,6 +183,53 @@ class TaskRepositoryTests(unittest.TestCase):
|
||||
with self.assertRaisesRegex(ValueError, "offset"):
|
||||
self.repository.list_tasks(offset=-1)
|
||||
|
||||
def test_result_and_outbox_are_saved_together_then_marked_succeeded(self):
|
||||
self.repository.add_claimed_task(self._task("TASK-RUN"))
|
||||
started = self.repository.start_collect_run("TASK-RUN", "USB-001")
|
||||
event = self.repository.save_collect_result(
|
||||
"TASK-RUN",
|
||||
started.attempt_id,
|
||||
{
|
||||
"goods_id": "10001",
|
||||
"title": "测试商品",
|
||||
"price_granularity": "color",
|
||||
"dimensions": [],
|
||||
"skus": [{"price_cent": 990}],
|
||||
},
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
self.repository.get_task("TASK-RUN").status,
|
||||
TaskStatus.RESULT_PENDING,
|
||||
)
|
||||
self.assertEqual(event.status, OutboxStatus.PENDING)
|
||||
self.repository.mark_outbox_sent(event.id)
|
||||
self.assertEqual(
|
||||
self.repository.get_task("TASK-RUN").status,
|
||||
TaskStatus.SUCCEEDED,
|
||||
)
|
||||
|
||||
def test_recovery_restores_sending_and_interrupted_running(self):
|
||||
self.repository.add_claimed_task(self._task("TASK-RECOVER"))
|
||||
started = self.repository.start_collect_run("TASK-RECOVER", "USB-001")
|
||||
self.repository.save_collect_failure(
|
||||
"TASK-RECOVER",
|
||||
started.attempt_id,
|
||||
TaskStatus.RETRY_WAIT,
|
||||
"DEVICE_OFFLINE",
|
||||
"设备离线",
|
||||
True,
|
||||
)
|
||||
event = self.repository.next_pending_outbox()
|
||||
self.repository.mark_outbox_sending(event.id)
|
||||
|
||||
self.repository.recover_interrupted_work()
|
||||
|
||||
self.assertEqual(
|
||||
self.repository.get_outbox_event(event.id).status,
|
||||
OutboxStatus.PENDING,
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user