from cart_match import CartOffer, match_offer, middle_pack, qty_fits_pack 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 def test_qty_not_multiple_of_middle_pack(): offer = _offer(extra={"raw": {"middlePackNum": 10}}) assert middle_pack(offer) == 10 assert qty_fits_pack(7, 10) is False assert qty_fits_pack(10, 10) is True assert qty_fits_pack(7, None) is True