Files
shanxia2.0/backend/tests/test_pl_personnel_cert_required.py
T
2026-08-02 17:18:33 +08:00

90 lines
3.3 KiB
Python

"""pl_cert_required_service 人员必备证书规则测试。"""
from __future__ import annotations
from app.services.pl_cert_required_service import (
collect_required_cert_errors,
get_required_personnel_cert_names,
match_required_cert_name,
)
def test_match_driver_qualification_exact():
assert match_required_cert_name("驾驶员从业资格证", "驾驶员从业资格证") is True
assert match_required_cert_name("从业资格证", "驾驶员从业资格证") is False
assert match_required_cert_name("危化品从业资格证", "驾驶员从业资格证") is False
def test_match_escort_qualification_and_alias():
assert match_required_cert_name("押运员从业资格证", "押运员从业资格证") is True
assert match_required_cert_name("押运员证", "押运员从业资格证") is True
assert match_required_cert_name("从业资格证", "押运员从业资格证") is False
def test_required_names_by_personnel_type():
assert get_required_personnel_cert_names("driver") == (
"身份证",
"驾驶证",
"驾驶员从业资格证",
)
assert get_required_personnel_cert_names("escort") == (
"身份证",
"押运员从业资格证",
)
assert get_required_personnel_cert_names("both") == (
"身份证",
"驾驶证",
"驾驶员从业资格证",
"押运员从业资格证",
)
def test_both_requires_four_certs():
cert_rows = [
{"certName": "身份证", "certNo": "1", "expireDate": "2030-01-01", "attachmentUrls": "http://a"},
{"certName": "驾驶证", "certNo": "2", "expireDate": "2030-01-01", "attachmentUrls": "http://b"},
{"certName": "驾驶员从业资格证", "certNo": "3", "expireDate": "2030-01-01", "attachmentUrls": "http://c"},
]
errors = collect_required_cert_errors(
cert_rows,
get_required_personnel_cert_names("both"),
)
assert any("押运员从业资格证" in e for e in errors)
def test_escort_alias_counts_as_complete():
cert_rows = [
{"certName": "身份证", "expireDate": "2030-01-01", "attachmentUrls": "http://a"},
{"certName": "押运员证", "expireDate": "2030-01-01", "attachmentUrls": "http://b"},
]
errors = collect_required_cert_errors(
cert_rows,
get_required_personnel_cert_names("escort"),
)
assert errors == []
def test_cert_no_optional_for_required_slot():
cert_rows = [
{"certName": "身份证", "expireDate": "2030-01-01", "attachmentUrls": "http://a"},
{"certName": "押运员从业资格证", "expireDate": "2030-01-01", "attachmentUrls": "http://b"},
]
errors = collect_required_cert_errors(
cert_rows,
get_required_personnel_cert_names("escort"),
)
assert errors == []
def test_attachment_optional_for_required_slot():
"""证书附件非必填:有名称+有效期即可,无附件不报错。"""
cert_rows = [
{"certName": "身份证", "expireDate": "2030-01-01"},
{"certName": "押运员从业资格证", "expireDate": "2030-01-01"},
]
errors = collect_required_cert_errors(
cert_rows,
get_required_personnel_cert_names("escort"),
)
assert errors == []
assert not any("附件" in e for e in collect_required_cert_errors([], ("身份证",)))