test_pl_transport_arrange_optional_driver.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. """安排运输:司机可选。"""
  2. from __future__ import annotations
  3. from types import SimpleNamespace
  4. from app.api.pl.transport import _apply_transport_arrange_fields
  5. from app.schemas.pl.transport import TransportArrange
  6. def test_transport_arrange_schema_allows_missing_driver():
  7. payload = TransportArrange.model_validate({"vehicleId": "veh-1"})
  8. assert payload.vehicle_id == "veh-1"
  9. assert payload.driver_id is None
  10. def test_apply_transport_arrange_fields_without_driver():
  11. transport = SimpleNamespace(
  12. vehicle_id=None,
  13. license_plate=None,
  14. driver_id="old",
  15. driver_name="旧司机",
  16. driver_phone="1",
  17. carrier_id=None,
  18. carrier_name=None,
  19. transport_medium=None,
  20. start_point=None,
  21. end_point=None,
  22. distance_km=None,
  23. unit=None,
  24. freight_price=None,
  25. freight_amount=0,
  26. freight_type="by_weight",
  27. has_invoice=0,
  28. remark=None,
  29. update_by=None,
  30. )
  31. payload = TransportArrange.model_validate(
  32. {"vehicleId": "veh-1", "freightType": "by_weight"}
  33. )
  34. _apply_transport_arrange_fields(
  35. transport,
  36. payload=payload,
  37. vehicle_info={"license_plate": "粤A12345", "carrier_id": None},
  38. driver_info=None,
  39. escort_info=None,
  40. carrier_name=None,
  41. start_point="A",
  42. end_point="B",
  43. freight_amount=0,
  44. user_id="u1",
  45. )
  46. assert transport.vehicle_id == "veh-1"
  47. assert transport.license_plate == "粤A12345"
  48. assert transport.driver_id is None
  49. assert transport.driver_name is None
  50. assert transport.driver_phone is None