fix: 识别失效商品链接返回首页 (#111)
This commit is contained in:
@@ -108,6 +108,17 @@ class RecordingLiveAdapter(RecordingDryRunAdapter, PddLivePurchaseAdapter):
|
||||
)
|
||||
|
||||
|
||||
class UnavailableGoodsAdapter(RecordingDryRunAdapter):
|
||||
def open_goods(self, goods_url: str) -> None:
|
||||
self.calls.append(("open_goods", goods_url))
|
||||
raise PddPurchaseError(
|
||||
"PDD_GOODS_UNAVAILABLE",
|
||||
"商品链接已失效,PDD 无法打开商品详情页并返回了首页",
|
||||
step="purchase_open_goods",
|
||||
retryable=False,
|
||||
)
|
||||
|
||||
|
||||
class PurchaseTaskServiceTest(unittest.TestCase):
|
||||
def setUp(self) -> None:
|
||||
self.temp_dir = tempfile.TemporaryDirectory()
|
||||
@@ -219,6 +230,18 @@ class PurchaseTaskServiceTest(unittest.TestCase):
|
||||
self.assertEqual(detail.status, TaskStatus.MANUAL_REVIEW)
|
||||
self.assertEqual(detail.last_error_code, "PURCHASE_PRICE_EXCEEDED")
|
||||
|
||||
def test_unavailable_goods_stops_before_specs_and_is_not_retryable(self):
|
||||
self._prepare_task()
|
||||
adapter = UnavailableGoodsAdapter()
|
||||
|
||||
outcome = self._service(adapter).execute_one_local()
|
||||
|
||||
self.assertEqual("business_failed", outcome.kind)
|
||||
self.assertNotIn(("select_options", OPTIONS), adapter.calls)
|
||||
detail = self.repository.get_task("PUR-001")
|
||||
self.assertEqual(TaskStatus.FAILED, detail.status)
|
||||
self.assertEqual("PDD_GOODS_UNAVAILABLE", detail.last_error_code)
|
||||
|
||||
def test_result_submit_timeout_does_not_run_adapter_twice(self):
|
||||
self._prepare_task()
|
||||
adapter = RecordingDryRunAdapter()
|
||||
|
||||
Reference in New Issue
Block a user