91 lines
2.6 KiB
Python
91 lines
2.6 KiB
Python
"""车辆加油登记 Schema 单测"""
|
|
from datetime import date
|
|
from decimal import Decimal
|
|
|
|
import pytest
|
|
from pydantic import ValidationError
|
|
|
|
from app.schemas.pl.vehicle_fuel import VehicleFuelRegisterCreate
|
|
|
|
|
|
def test_create_accepts_bailian():
|
|
body = VehicleFuelRegisterCreate.model_validate(
|
|
{
|
|
"fuelCategory": "bailian",
|
|
"registerDate": "2026-09-12",
|
|
"licensePlate": "皖A12345",
|
|
"fuelLiters": "50.5",
|
|
"odometerKm": "12000.0",
|
|
}
|
|
)
|
|
assert body.fuel_category == "bailian"
|
|
assert body.fuel_liters == Decimal("50.5")
|
|
assert body.register_date == date(2026, 9, 12)
|
|
|
|
|
|
def test_create_rejects_invalid_category():
|
|
with pytest.raises(ValidationError):
|
|
VehicleFuelRegisterCreate.model_validate(
|
|
{
|
|
"fuelCategory": "etc",
|
|
"registerDate": "2026-09-12",
|
|
"licensePlate": "皖A12345",
|
|
"fuelLiters": "10",
|
|
}
|
|
)
|
|
|
|
|
|
def test_create_rejects_non_positive_liters():
|
|
with pytest.raises(ValidationError):
|
|
VehicleFuelRegisterCreate.model_validate(
|
|
{
|
|
"fuelCategory": "gas_station",
|
|
"registerDate": "2026-09-12",
|
|
"licensePlate": "皖A12345",
|
|
"fuelLiters": "0",
|
|
}
|
|
)
|
|
|
|
|
|
def test_create_accepts_shanxia_factory():
|
|
body = VehicleFuelRegisterCreate.model_validate(
|
|
{
|
|
"fuelCategory": "shanxia_factory",
|
|
"registerDate": "2026-09-12",
|
|
"licensePlate": "皖A12345",
|
|
"fuelLiters": "1176",
|
|
}
|
|
)
|
|
assert body.fuel_category == "shanxia_factory"
|
|
|
|
|
|
def test_calc_fuel_tons():
|
|
from app.schemas.pl.vehicle_fuel import calc_fuel_tons
|
|
|
|
assert calc_fuel_tons(Decimal("1176")) == Decimal("1.000")
|
|
assert calc_fuel_tons(Decimal("310")) == Decimal("0.264")
|
|
|
|
|
|
def test_read_requires_seq_no_and_aliases():
|
|
from datetime import datetime
|
|
|
|
from app.schemas.pl.vehicle_fuel import VehicleFuelRegisterRead
|
|
|
|
row = VehicleFuelRegisterRead.model_validate(
|
|
{
|
|
"id": "abc",
|
|
"seqNo": 7,
|
|
"registerNo": "SXJY20260917000001",
|
|
"fuelCategory": "bailian",
|
|
"registerDate": "2026-09-17",
|
|
"registrantId": "u1",
|
|
"licensePlate": "皖A12345",
|
|
"fuelLiters": "50",
|
|
"status": "normal",
|
|
"createTime": "2026-09-17T10:00:00",
|
|
}
|
|
)
|
|
dumped = row.model_dump(by_alias=True)
|
|
assert dumped["seqNo"] == 7
|
|
assert dumped["registerNo"] == "SXJY20260917000001"
|
|
assert isinstance(row.create_time, datetime) |