test_vehicle_fuel_schema.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. """车辆加油登记 Schema 单测"""
  2. from datetime import date
  3. from decimal import Decimal
  4. import pytest
  5. from pydantic import ValidationError
  6. from app.schemas.pl.vehicle_fuel import VehicleFuelRegisterCreate
  7. def test_create_accepts_bailian():
  8. body = VehicleFuelRegisterCreate.model_validate(
  9. {
  10. "fuelCategory": "bailian",
  11. "registerDate": "2026-09-12",
  12. "licensePlate": "皖A12345",
  13. "fuelLiters": "50.5",
  14. "odometerKm": "12000.0",
  15. }
  16. )
  17. assert body.fuel_category == "bailian"
  18. assert body.fuel_liters == Decimal("50.5")
  19. assert body.register_date == date(2026, 9, 12)
  20. def test_create_rejects_invalid_category():
  21. with pytest.raises(ValidationError):
  22. VehicleFuelRegisterCreate.model_validate(
  23. {
  24. "fuelCategory": "etc",
  25. "registerDate": "2026-09-12",
  26. "licensePlate": "皖A12345",
  27. "fuelLiters": "10",
  28. }
  29. )
  30. def test_create_rejects_non_positive_liters():
  31. with pytest.raises(ValidationError):
  32. VehicleFuelRegisterCreate.model_validate(
  33. {
  34. "fuelCategory": "gas_station",
  35. "registerDate": "2026-09-12",
  36. "licensePlate": "皖A12345",
  37. "fuelLiters": "0",
  38. }
  39. )
  40. def test_create_accepts_shanxia_factory():
  41. body = VehicleFuelRegisterCreate.model_validate(
  42. {
  43. "fuelCategory": "shanxia_factory",
  44. "registerDate": "2026-09-12",
  45. "licensePlate": "皖A12345",
  46. "fuelLiters": "1176",
  47. }
  48. )
  49. assert body.fuel_category == "shanxia_factory"
  50. def test_calc_fuel_tons():
  51. from app.schemas.pl.vehicle_fuel import calc_fuel_tons
  52. assert calc_fuel_tons(Decimal("1176")) == Decimal("1.000")
  53. assert calc_fuel_tons(Decimal("310")) == Decimal("0.264")
  54. def test_read_requires_seq_no_and_aliases():
  55. from datetime import datetime
  56. from app.schemas.pl.vehicle_fuel import VehicleFuelRegisterRead
  57. row = VehicleFuelRegisterRead.model_validate(
  58. {
  59. "id": "abc",
  60. "seqNo": 7,
  61. "registerNo": "SXJY20260917000001",
  62. "fuelCategory": "bailian",
  63. "registerDate": "2026-09-17",
  64. "registrantId": "u1",
  65. "licensePlate": "皖A12345",
  66. "fuelLiters": "50",
  67. "status": "normal",
  68. "createTime": "2026-09-17T10:00:00",
  69. }
  70. )
  71. dumped = row.model_dump(by_alias=True)
  72. assert dumped["seqNo"] == 7
  73. assert dumped["registerNo"] == "SXJY20260917000001"
  74. assert isinstance(row.create_time, datetime)