99 lines
2.5 KiB
Python
99 lines
2.5 KiB
Python
"""mineVehicles:车辆人员归属过滤与写校验。"""
|
|
from __future__ import annotations
|
|
|
|
from datetime import date, datetime
|
|
from types import SimpleNamespace
|
|
|
|
import pytest
|
|
from sqlalchemy import create_engine
|
|
from sqlalchemy.orm import sessionmaker
|
|
|
|
from app.models.pl_models import (
|
|
PlPersonnel,
|
|
PlVehicle,
|
|
PlVehiclePersonnel,
|
|
PlVehicleRechargeApply,
|
|
)
|
|
|
|
|
|
def _make_session():
|
|
engine = create_engine("sqlite://")
|
|
for table in (
|
|
PlVehicle.__table__,
|
|
PlPersonnel.__table__,
|
|
PlVehiclePersonnel.__table__,
|
|
PlVehicleRechargeApply.__table__,
|
|
):
|
|
table.create(engine)
|
|
return sessionmaker(bind=engine)()
|
|
|
|
|
|
def _user(uid: str = "u-driver") -> SimpleNamespace:
|
|
return SimpleNamespace(id=uid, name="司机甲", dept_id="d1", role="driver", tenant_no="t1")
|
|
|
|
|
|
def _seed_person_vehicle(db, *, user_id="u-driver", plate="鄂A11111", vehicle_id="veh-a"):
|
|
db.add(
|
|
PlVehicle(
|
|
id=vehicle_id,
|
|
vehicle_type="self",
|
|
license_plate=plate,
|
|
tenant_no="t1",
|
|
create_dept_id="d1",
|
|
del_flag=0,
|
|
)
|
|
)
|
|
db.add(
|
|
PlPersonnel(
|
|
id="p-1",
|
|
personnel_name="司机甲",
|
|
personnel_type="driver",
|
|
personnel_affiliation="self",
|
|
status="1",
|
|
sys_user_id=user_id,
|
|
tenant_no="t1",
|
|
create_dept_id="d1",
|
|
del_flag=0,
|
|
)
|
|
)
|
|
db.add(
|
|
PlVehiclePersonnel(
|
|
id="vp-1",
|
|
vehicle_id=vehicle_id,
|
|
personnel_id="p-1",
|
|
role="driver",
|
|
is_default=1,
|
|
tenant_no="t1",
|
|
create_dept_id="d1",
|
|
del_flag=0,
|
|
)
|
|
)
|
|
|
|
|
|
def test_license_plates_for_user_personnel():
|
|
from app.services.pl_vehicle_mine_vehicles import license_plates_for_user_personnel
|
|
|
|
db = _make_session()
|
|
_seed_person_vehicle(db)
|
|
db.add(
|
|
PlVehicle(
|
|
id="veh-b",
|
|
vehicle_type="self",
|
|
license_plate="鄂A22222",
|
|
tenant_no="t1",
|
|
create_dept_id="d1",
|
|
del_flag=0,
|
|
)
|
|
)
|
|
db.commit()
|
|
plates = license_plates_for_user_personnel(db, "t1", "u-driver")
|
|
assert plates == {"鄂A11111"}
|
|
|
|
|
|
def test_license_plates_empty_when_no_personnel():
|
|
from app.services.pl_vehicle_mine_vehicles import license_plates_for_user_personnel
|
|
|
|
db = _make_session()
|
|
db.commit()
|
|
assert license_plates_for_user_personnel(db, "t1", "u-nobody") == set()
|