| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- """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([], ("身份证",)))
|