dieya_risk_prediction_backend/tests/test_supplier_cleaning.py

30 lines
1.5 KiB
Python

from app.services.supplier_cleaning import infer_location, normalized_key, resolve_canonical_name, split_supplier_cell
def test_split_supplier_cell_preserves_multiple_supplier_mentions() -> None:
mentions = split_supplier_cell("内料:博元\n瓶子,盖子:皓盛/佛山执得")
assert [item.name for item in mentions] == ["博元", "皓盛", "佛山执得"]
assert mentions[0].material_type == "内料"
assert mentions[1].material_type == "盖子"
def test_empty_supplier_markers_are_ignored() -> None:
assert split_supplier_cell("/") == []
assert normalized_key("佛山市执得包装有限公司") == "佛山市执得包装"
assert infer_location("佛山市执得包装有限公司") == ("佛山", "广东")
def test_purchase_order_full_name_wins_when_short_name_is_unambiguous() -> None:
names = ["佛山市佳亿包装有限公司", "广州祥印包装有限公司"]
assert resolve_canonical_name("佳亿", names) == ("佛山市佳亿包装有限公司", True)
assert resolve_canonical_name("佛山执得", ["佛山市执得塑料制品有限公司"]) == (
"佛山市执得塑料制品有限公司",
True,
)
def test_material_and_factory_labels_are_not_supplier_names() -> None:
mentions = split_supplier_cell("内料工厂:众绘\n软管工厂:永禾\n彩盒工厂:佳亿")
assert [item.name for item in mentions] == ["众绘", "永禾", "佳亿"]
assert all(item.role == "加工厂" for item in mentions)