fix: 允许颜色缺价后继续采集 (#42)
This commit is contained in:
@@ -232,6 +232,13 @@ class IgnoredColorClickDevice(SnakeColorDevice):
|
||||
self.clicks.append((x, y))
|
||||
|
||||
|
||||
class AllMissingColorPriceDevice(IgnoredColorClickDevice):
|
||||
"""所有颜色点击都未生效,模拟全部颜色采价为空。"""
|
||||
|
||||
def _spec_xml(self):
|
||||
return super()._spec_xml().replace('selected="true"', 'selected="false"')
|
||||
|
||||
|
||||
def keep_only_one_sku(xml_data: str) -> str:
|
||||
"""从脱敏固件中删除蓝色和 L,只保留一个组合。"""
|
||||
|
||||
@@ -562,6 +569,32 @@ class PddCollectParserTest(unittest.TestCase):
|
||||
|
||||
self.assertIsNone(sample.price_cent)
|
||||
|
||||
def test_all_missing_color_prices_still_collects_sizes(self):
|
||||
device = AllMissingColorPriceDevice(self.home_xml)
|
||||
service = PddCollectService(
|
||||
PddDeviceService(lambda _serial: device),
|
||||
"USB-001",
|
||||
"client-001",
|
||||
sleeper=lambda _seconds: None,
|
||||
)
|
||||
|
||||
data = service.collect(
|
||||
FakeTask("https://mobile.yangkeduo.com/goods.html?goods_id=123")
|
||||
).to_pdd_data()
|
||||
|
||||
self.assertEqual(
|
||||
[item["text"] for item in data["dimensions"][1]["values"]],
|
||||
["M", "L"],
|
||||
)
|
||||
self.assertTrue(device.sizes_visible)
|
||||
self.assertTrue(data["skus"])
|
||||
self.assertTrue(all(item["price_cent"] is None for item in data["skus"]))
|
||||
self.assertTrue(all(item["raw_price"] is None for item in data["skus"]))
|
||||
self.assertTrue(
|
||||
all(item["price_observed_at"] == {} for item in data["skus"])
|
||||
)
|
||||
self.assertTrue(all(item["available"] for item in data["skus"]))
|
||||
|
||||
def test_missing_goods_id_is_structured_error(self):
|
||||
service = PddCollectService(
|
||||
PddDeviceService(lambda _serial: object()),
|
||||
|
||||
Reference in New Issue
Block a user