49 lines
1.5 KiB
Python
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
|