Files
shanxia2.0/backend/tests/test_vehicle_fuel_schema.py
2026-09-18 12:01:13 +08:00

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)