AutoRpa/rpa_cart/tests/test_cart_match.py

49 lines
1.5 KiB
Python

from cart_match import CartOffer, match_offer
def _offer(**overrides) -> CartOffer:
data = dict(
sku_id="S1",
vendor_raw="广东壹号药业有限公司",
vendor_norm="广东壹号药业有限公司",
stock=20.0,
price=90.0,
)
data.update(overrides)
return CartOffer(**data)
def test_matches_supplier_name_exact():
picked = match_offer(
[_offer(vendor_raw="杭州小药药自营旗舰店", vendor_norm="杭州小药药自营旗舰店"), _offer()],
"广东壹号药业有限公司",
)
assert picked is not None
assert picked.sku_id == "S1"
assert picked.vendor_raw == "广东壹号药业有限公司"
def test_matches_supplier_name_stripping_self_operated_prefix():
picked = match_offer(
[_offer(vendor_raw="[自营] 广东壹号药业有限公司", vendor_norm="广东壹号药业有限公司")],
"广东壹号药业有限公司",
)
assert picked is not None
assert picked.vendor_norm == "广东壹号药业有限公司"
def test_same_supplier_keeps_cheaper():
picked = match_offer(
[
_offer(sku_id="DEAR", price=94.0, stock=100.0),
_offer(sku_id="CHEAP", price=90.0, stock=5.0),
],
"广东壹号药业有限公司",
)
assert picked is not None
assert picked.sku_id == "CHEAP"
def test_missing_supplier_returns_none():
assert match_offer([_offer()], "杭州小药药自营旗舰店") is None