| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- """绑合同时计划段产品包装规格校验。"""
- 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
|