59 lines
1.6 KiB
Python
59 lines
1.6 KiB
Python
"""安排运输:司机可选。"""
|
|
from __future__ import annotations
|
|
|
|
from types import SimpleNamespace
|
|
|
|
from app.api.pl.transport import _apply_transport_arrange_fields
|
|
from app.schemas.pl.transport import TransportArrange
|
|
|
|
|
|
def test_transport_arrange_schema_allows_missing_driver():
|
|
payload = TransportArrange.model_validate({"vehicleId": "veh-1"})
|
|
assert payload.vehicle_id == "veh-1"
|
|
assert payload.driver_id is None
|
|
|
|
|
|
def test_apply_transport_arrange_fields_without_driver():
|
|
transport = SimpleNamespace(
|
|
vehicle_id=None,
|
|
license_plate=None,
|
|
driver_id="old",
|
|
driver_name="旧司机",
|
|
driver_phone="1",
|
|
carrier_id=None,
|
|
carrier_name=None,
|
|
transport_medium=None,
|
|
start_point=None,
|
|
end_point=None,
|
|
distance_km=None,
|
|
unit=None,
|
|
freight_price=None,
|
|
freight_amount=0,
|
|
freight_type="by_weight",
|
|
has_invoice=0,
|
|
remark=None,
|
|
update_by=None,
|
|
)
|
|
payload = TransportArrange.model_validate(
|
|
{"vehicleId": "veh-1", "freightType": "by_weight"}
|
|
)
|
|
|
|
_apply_transport_arrange_fields(
|
|
transport,
|
|
payload=payload,
|
|
vehicle_info={"license_plate": "粤A12345", "carrier_id": None},
|
|
driver_info=None,
|
|
escort_info=None,
|
|
carrier_name=None,
|
|
start_point="A",
|
|
end_point="B",
|
|
freight_amount=0,
|
|
user_id="u1",
|
|
)
|
|
|
|
assert transport.vehicle_id == "veh-1"
|
|
assert transport.license_plate == "粤A12345"
|
|
assert transport.driver_id is None
|
|
assert transport.driver_name is None
|
|
assert transport.driver_phone is None
|