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