test_public_db_pound_qr.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. """公开磅单二维码只读接口。"""
  2. from datetime import date
  3. from types import SimpleNamespace
  4. from fastapi.testclient import TestClient
  5. from app.main import app
  6. from app.services.db.pound_qr_public import (
  7. build_pound_qr_label,
  8. build_public_pound_qr_read,
  9. )
  10. client = TestClient(app)
  11. def test_build_pound_qr_label():
  12. assert build_pound_qr_label("出库", "合肥德泽") == "出库 · 合肥德泽"
  13. assert build_pound_qr_label("入库", "") == "入库"
  14. assert build_pound_qr_label("", "安庆山峡") == "安庆山峡"
  15. def test_build_public_pound_qr_read_maps_fields():
  16. row = SimpleNamespace(
  17. id="inv-1",
  18. date=date(2026, 9, 12),
  19. business_type="出库",
  20. vehicle_no="皖AM8516",
  21. partner_company="合肥德泽化工科技有限公司",
  22. product="30% 工业硫酸",
  23. specification="30%",
  24. quantity=10.0,
  25. remark="注意安全",
  26. )
  27. read = build_public_pound_qr_read(row, quantity_unit="吨")
  28. dump = read.model_dump(by_alias=True)
  29. assert dump["id"] == "inv-1"
  30. assert dump["date"] == "2026-09-12"
  31. assert dump["businessType"] == "出库"
  32. assert dump["vehicleNo"] == "皖AM8516"
  33. assert dump["partnerCompany"] == "合肥德泽化工科技有限公司"
  34. assert dump["product"] == "30% 工业硫酸"
  35. assert dump["specification"] == "30%"
  36. assert dump["quantity"] == 10.0
  37. assert dump["quantityUnit"] == "吨"
  38. assert dump["remarks"] == "注意安全"
  39. def test_pound_qr_missing_returns_404():
  40. resp = client.get("/api/public/db/inventory/__missing_pound_qr_id__/pound-qr")
  41. assert resp.status_code == 404