Files
inquiry_robot/inquiry-agent/tests/test_land_field_validate.py

108 lines
3.3 KiB
Python

"""
陆运五套询价必填校验。不连 TMS。
"""
from __future__ import annotations
import os
import sys
import unittest
ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
if ROOT not in sys.path:
sys.path.insert(0, ROOT)
from agent.schema.field_validate import display_name, validate_required_fields
class LandFieldValidateTest(unittest.TestCase):
def test_ltl_missing_volume(self):
got = validate_required_fields(
facts={"起运港": "广州", "目的港": "深圳", "品名": "衣服", "毛重": "50kg"},
business_line="LAND",
land_subtype="国内运输拼车",
)
self.assertFalse(got["ok"])
self.assertIn("体积", got["missing"])
def test_hk_lcl_still_needs_vehicle(self):
got = validate_required_fields(
facts={
"起运港": "广州",
"目的港": "香港",
"品名": "衣服",
"体积": "10CBM",
"毛重": "50kg",
},
business_line="LAND",
land_subtype="中港零担/集拼",
)
self.assertIn("车型/数量", got["missing"])
self.assertNotIn("数量", got["missing"])
self.assertNotIn("车型", got["missing"])
def test_hk_full_truck_skips_vehicle(self):
got = validate_required_fields(
facts={
"起运港": "广州",
"目的港": "香港",
"品名": "衣服",
},
business_line="LAND",
land_subtype="中港整车",
)
self.assertTrue(got["ok"])
self.assertNotIn("车型/数量", got["missing"])
def test_domestic_ftl_one_field(self):
got = validate_required_fields(
facts={
"起运港": "广州",
"目的港": "深圳",
"品名": "衣服",
"车型/数量": "9米6/1",
},
business_line="LAND",
land_subtype="国内运输整车",
)
self.assertTrue(got["ok"])
self.assertEqual(got["facts"]["车型/数量"], "9米6/1")
def test_cross_ftl_folds_split_keys(self):
got = validate_required_fields(
facts={
"起运港": "广州",
"目的港": "河内",
"品名": "衣服",
"车型": "9米6",
"数量": "1",
},
business_line="LAND",
land_subtype="跨境整车",
)
self.assertTrue(got["ok"])
self.assertEqual(got["facts"]["车型/数量"], "9米6/1")
def test_quote_date_defaults(self):
got = validate_required_fields(
facts={
"起运港": "广州",
"目的港": "深圳",
"品名": "衣服",
"体积": "100CBM",
"毛重": "50kg",
},
business_line="LAND",
land_subtype="国内运输拼车",
)
self.assertTrue(got["ok"])
self.assertRegex(got["facts"]["报价日期"], r"^\d{4}-\d{2}-\d{2}$")
def test_land_display_names(self):
self.assertEqual(display_name("起运港", "LAND"), "始发站")
self.assertEqual(display_name("品名", "LAND"), "货物品名")
if __name__ == "__main__":
unittest.main()