from app.services.pl_io_order_service import ( resolve_unit_label, PLAN_TYPE_BUSINESS_LABEL, merge_plan_logistics_into_order, merge_plan_product_into_item, ) def test_resolve_unit_label_maps_dun(): assert resolve_unit_label({"dun": "吨"}, "dun") == "吨" assert resolve_unit_label({}, "dun") == "dun" assert resolve_unit_label({}, None) == "吨" assert resolve_unit_label({}, "") == "吨" def test_merge_plan_logistics_into_order(): data = {"remark": "order-remark"} plan = type( "P", (), { "plan_type": "outbound", "remark": "plan-remark", "pickup_address": "取货路1号", "pickup_lng": 117.0, "pickup_lat": 30.5, "pickup_time": None, "pickup_contact": "张三 13800000000", "pickup_notes": "戴帽", "destination_name": "仓库A", "destination_address": "送货路2号", "destination_lng": None, "destination_lat": None, "delivery_time": None, "delivery_contact": "李四 13900000000", "destination_notes": "北门", }, )() merge_plan_logistics_into_order(data, plan) assert data["businessType"] == "出库" assert data["planRemark"] == "plan-remark" assert data["remark"] == "order-remark" # 单据备注不被覆盖 assert data["pickupAddress"] == "取货路1号" assert data["pickupContact"] == "张三 13800000000" assert data["destinationAddress"] == "送货路2号" assert data["destinationName"] == "仓库A" assert data["deliveryContact"] == "李四 13900000000" def test_merge_plan_product_into_item(): item = {"unit": "dun", "productName": "尿素"} product = type( "PP", (), { "product_no": "P001", "package_spec": "50kg/袋", "remark": "易潮", "unit": "dun", "model": "46.4%", "product_name": "工业级尿素", }, )() merge_plan_product_into_item(item, product, unit_map={"dun": "吨"}) assert item["productNo"] == "P001" assert item["packageSpec"] == "50kg/袋" assert item["remark"] == "易潮" assert item["unitLabel"] == "吨" assert item["unit"] == "dun"