test_pl_tripartite_cert_gates.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. """三方不强制证书;山峡仍强制。"""
  2. from __future__ import annotations
  3. import pytest
  4. from fastapi import HTTPException
  5. from app.services.pl_cert_required_service import (
  6. validate_personnel_required_certs,
  7. validate_vehicle_save_certs,
  8. )
  9. def test_carrier_personnel_skips_required_certs():
  10. validate_personnel_required_certs(
  11. [],
  12. "driver",
  13. personnel_affiliation="carrier",
  14. subject_label="「张三」",
  15. )
  16. def test_self_personnel_still_requires_certs():
  17. with pytest.raises(HTTPException) as ei:
  18. validate_personnel_required_certs(
  19. [],
  20. "driver",
  21. personnel_affiliation="self",
  22. subject_label="「李四」",
  23. )
  24. assert ei.value.status_code == 400
  25. assert "必备证书" in ei.value.detail
  26. def test_validate_vehicle_save_certs_carrier_skips_vehicle_and_personnel_certs(monkeypatch):
  27. """carrier 车:不跑车辆必备、不跑关联人员证书;仍可跑归属。"""
  28. called = {"self": 0, "carrier": 0, "links": 0}
  29. import app.services.pl_cert_required_service as svc
  30. monkeypatch.setattr(
  31. svc,
  32. "validate_self_vehicle_required_certs",
  33. lambda *a, **k: called.__setitem__("self", called["self"] + 1),
  34. )
  35. monkeypatch.setattr(
  36. svc,
  37. "validate_carrier_vehicle_required_certs",
  38. lambda *a, **k: called.__setitem__("carrier", called["carrier"] + 1),
  39. )
  40. monkeypatch.setattr(
  41. svc,
  42. "validate_vehicle_personnel_cert_links",
  43. lambda *a, **k: called.__setitem__("links", called["links"] + 1),
  44. )
  45. monkeypatch.setattr(svc, "validate_vehicle_personnel_affiliation", lambda *a, **k: None)
  46. validate_vehicle_save_certs(
  47. db=None,
  48. tenant_no="t1",
  49. vehicle_type="carrier",
  50. trailer_no="皖LP359",
  51. cert_rows=[],
  52. personnel_rows=[],
  53. )
  54. assert called["carrier"] == 0
  55. assert called["self"] == 0
  56. assert called["links"] == 0