108 lines
3.3 KiB
Python
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()
|