[V10.337] 兼容 PChome 商品 API list 回應
All checks were successful
CD Pipeline / deploy (push) Successful in 1m6s
All checks were successful
CD Pipeline / deploy (push) Successful in 1m6s
This commit is contained in:
@@ -92,6 +92,40 @@ def test_pchome_get_retries_transient_timeout():
|
||||
assert len(calls) == 2
|
||||
|
||||
|
||||
def test_pchome_fetch_product_details_accepts_list_payload():
|
||||
from services.pchome_crawler import PChomeCrawler
|
||||
|
||||
crawler = PChomeCrawler(timeout=1, delay=0, max_retries=0)
|
||||
calls = []
|
||||
|
||||
class FakeSession:
|
||||
headers = {}
|
||||
|
||||
def get(self, url, params=None, timeout=None):
|
||||
calls.append((url, params, timeout))
|
||||
return _FakeResponse([
|
||||
{
|
||||
"Id": "DDABCD-12345678",
|
||||
"Name": "測試商品 50ml",
|
||||
"Price": {"P": 799, "M": 999},
|
||||
"Pic": {"B": "/items/DDABCD12345678.jpg"},
|
||||
"Qty": 8,
|
||||
"Store": "24h",
|
||||
"isOnSale": True,
|
||||
}
|
||||
])
|
||||
|
||||
crawler.session = FakeSession()
|
||||
|
||||
success, message, products = crawler.fetch_product_details(["DDABCD-12345678"])
|
||||
|
||||
assert success is True
|
||||
assert message == "成功取得 1 個商品資料"
|
||||
assert len(calls) == 1
|
||||
assert [product.product_id for product in products] == ["DDABCD-12345678"]
|
||||
assert products[0].price == 799
|
||||
|
||||
|
||||
def test_feeder_search_cleanup_preserves_bracket_brand_and_specs():
|
||||
from services.competitor_price_feeder import _clean_search_text
|
||||
|
||||
|
||||
Reference in New Issue
Block a user