Files
shanxia2.0/backend/tests/test_pl_plan_package_validate.py
T

67 lines
2.4 KiB
Python

"""绑合同时计划段产品包装规格校验。"""
from types import SimpleNamespace
from app.services.pl_contract_plan_qty import validate_stop_products_package_against_contract
def test_require_package_when_contract_bound():
contract_products = [
SimpleNamespace(product_id="p1", package_spec="25kg/桶"),
SimpleNamespace(product_id="p1", package_spec="槽罐车"),
]
ok, err = validate_stop_products_package_against_contract(
contract_products=contract_products,
stop_products=[SimpleNamespace(product_id="p1", package_spec="", product_name="次氯酸钠")],
)
assert ok is False
assert err and "包装" in err
def test_package_must_be_in_contract_set():
contract_products = [
SimpleNamespace(product_id="p1", package_spec="25kg/桶"),
SimpleNamespace(product_id="p1", package_spec="槽罐车"),
]
ok, err = validate_stop_products_package_against_contract(
contract_products=contract_products,
stop_products=[SimpleNamespace(product_id="p1", package_spec="吨桶", product_name="次氯酸钠")],
)
assert ok is False
assert err and "合同" in err
def test_valid_package_passes():
contract_products = [
SimpleNamespace(product_id="p1", package_spec="25kg/桶"),
SimpleNamespace(product_id="p1", package_spec="槽罐车"),
]
ok, err = validate_stop_products_package_against_contract(
contract_products=contract_products,
stop_products=[SimpleNamespace(product_id="p1", package_spec="槽罐车")],
)
assert ok is True
assert err is None
def test_product_not_on_contract_skipped():
contract_products = [
SimpleNamespace(product_id="p1", package_spec="槽罐车"),
]
ok, err = validate_stop_products_package_against_contract(
contract_products=contract_products,
stop_products=[SimpleNamespace(product_id="p2", package_spec="")],
)
assert ok is True
def test_contract_empty_package_allows_empty_plan():
"""脏数据防御:合同行包装为空时不强制计划填包装。"""
contract_products = [
SimpleNamespace(product_id="p1", package_spec=""),
]
ok, err = validate_stop_products_package_against_contract(
contract_products=contract_products,
stop_products=[SimpleNamespace(product_id="p1", package_spec="")],
)
assert ok is True