"""三方不强制证书;山峡仍强制。""" from __future__ import annotations import pytest from fastapi import HTTPException from app.services.pl_cert_required_service import ( validate_personnel_required_certs, validate_vehicle_save_certs, ) def test_carrier_personnel_skips_required_certs(): validate_personnel_required_certs( [], "driver", personnel_affiliation="carrier", subject_label="「张三」", ) def test_self_personnel_still_requires_certs(): with pytest.raises(HTTPException) as ei: validate_personnel_required_certs( [], "driver", personnel_affiliation="self", subject_label="「李四」", ) assert ei.value.status_code == 400 assert "必备证书" in ei.value.detail def test_validate_vehicle_save_certs_carrier_skips_vehicle_and_personnel_certs(monkeypatch): """carrier 车:不跑车辆必备、不跑关联人员证书;仍可跑归属。""" called = {"self": 0, "carrier": 0, "links": 0} import app.services.pl_cert_required_service as svc monkeypatch.setattr( svc, "validate_self_vehicle_required_certs", lambda *a, **k: called.__setitem__("self", called["self"] + 1), ) monkeypatch.setattr( svc, "validate_carrier_vehicle_required_certs", lambda *a, **k: called.__setitem__("carrier", called["carrier"] + 1), ) monkeypatch.setattr( svc, "validate_vehicle_personnel_cert_links", lambda *a, **k: called.__setitem__("links", called["links"] + 1), ) monkeypatch.setattr(svc, "validate_vehicle_personnel_affiliation", lambda *a, **k: None) validate_vehicle_save_certs( db=None, tenant_no="t1", vehicle_type="carrier", trailer_no="皖LP359", cert_rows=[], personnel_rows=[], ) assert called["carrier"] == 0 assert called["self"] == 0 assert called["links"] == 0