This commit is contained in:
51
tests/test_price_comparison_routes.py
Normal file
51
tests/test_price_comparison_routes.py
Normal file
@@ -0,0 +1,51 @@
|
||||
from flask import Flask
|
||||
|
||||
|
||||
def test_compare_prices_auto_fetches_momo_when_not_provided(monkeypatch):
|
||||
from routes import price_comparison_routes as routes
|
||||
|
||||
captured = {}
|
||||
|
||||
def fake_search_momo(keyword, limit=10):
|
||||
captured["momo_search"] = (keyword, limit)
|
||||
return True, "ok", [
|
||||
{
|
||||
"name": "理膚寶水 B5 修復霜",
|
||||
"price": 890,
|
||||
"product_id": "12345678",
|
||||
"product_url": "https://www.momoshop.com.tw/goods/GoodsDetail.jsp?i_code=12345678",
|
||||
}
|
||||
]
|
||||
|
||||
def fake_compare(brand, pchome_products, momo_products):
|
||||
captured["compare"] = (brand, pchome_products, momo_products)
|
||||
return {
|
||||
"pchome_count": len(pchome_products),
|
||||
"momo_count": len(momo_products),
|
||||
"matched_count": 0,
|
||||
"matches": [],
|
||||
"stats": {},
|
||||
}
|
||||
|
||||
monkeypatch.setattr(routes, "search_momo_products", fake_search_momo)
|
||||
monkeypatch.setattr(routes, "compare_brand_prices", fake_compare)
|
||||
|
||||
app = Flask(__name__)
|
||||
with app.test_request_context(
|
||||
"/api/price_comparison/compare",
|
||||
method="POST",
|
||||
json={
|
||||
"brand": "理膚寶水",
|
||||
"pchome_products": [
|
||||
{"name": "理膚寶水 B5 修復霜", "price": 900, "product_id": "PCHOME-1"},
|
||||
],
|
||||
},
|
||||
):
|
||||
response = routes.compare_prices.__wrapped__()
|
||||
|
||||
payload = response.get_json()
|
||||
assert payload["success"] is True
|
||||
assert payload["data"]["momo_count"] == 1
|
||||
assert captured["momo_search"] == ("理膚寶水", 100)
|
||||
assert captured["compare"][0] == "理膚寶水"
|
||||
assert captured["compare"][2][0]["product_id"] == "12345678"
|
||||
Reference in New Issue
Block a user