fix: 优化重新采集取消交互 (#82)

This commit is contained in:
chengma
2026-08-10 09:08:54 +08:00
parent 8cc8574e8a
commit 39f4a8ee4f
6 changed files with 307 additions and 16 deletions
+34
View File
@@ -194,6 +194,40 @@ class CollectTaskServiceTest(unittest.TestCase):
self.repository.get_task("COL-OTHER").status, TaskStatus.CLAIMED
)
def test_selected_task_cancelled_before_collector_starts_is_persisted(self):
self.repository.add_claimed_task(
NewClaimedTask(
remote_task_id="COL-CANCEL",
task_type=TaskType.COLLECT,
goods_url="https://example.test/COL-CANCEL",
)
)
calls = []
class AcceptGateway:
def submit_failure(self, *_args):
return SubmissionReceipt(
True, "FAILURE-001", "2026-08-07T08:00:00Z"
)
service = CollectTaskService(
AcceptGateway(),
self.repository,
self.client,
"USB-001",
cancelled=lambda: True,
collect_service_factory=lambda *_args: FakeCollector(calls),
)
outcome = service.execute_selected("COL-CANCEL")
self.assertEqual(outcome.kind, "cancelled")
self.assertEqual(calls, [])
self.assertEqual(
self.repository.get_task("COL-CANCEL").status,
TaskStatus.CANCELLED,
)
if __name__ == "__main__":
unittest.main()