test_qc_material_month_template.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. """质检物料月初模板:字段校验纯函数单测。"""
  2. import unittest
  3. from datetime import date
  4. from decimal import Decimal
  5. from app.crud.qc_material_month_template import _require_template_fields
  6. class TestRequireTemplateFields(unittest.TestCase):
  7. def _base(self, **overrides):
  8. data = {
  9. "materialCode": "QC-M-001",
  10. "materialName": "试剂A",
  11. "catalogNo": "CAT-1",
  12. "batchNo": "B-1",
  13. "manufacturer": "厂家X",
  14. "unitPrice": 10.5,
  15. "amount": 105,
  16. "inQty": 10,
  17. "expireDate": "2027-01-01",
  18. }
  19. data.update(overrides)
  20. return data
  21. def test_ok(self):
  22. got = _require_template_fields(self._base())
  23. self.assertEqual(got["material_code"], "QC-M-001")
  24. self.assertEqual(got["material_name"], "试剂A")
  25. self.assertEqual(got["catalog_no"], "CAT-1")
  26. self.assertEqual(got["in_qty"], Decimal("10"))
  27. self.assertEqual(got["expire_date"], date(2027, 1, 1))
  28. def test_all_optional_empty(self):
  29. got = _require_template_fields({})
  30. self.assertEqual(got["material_code"], "")
  31. self.assertEqual(got["material_name"], "")
  32. self.assertEqual(got["catalog_no"], "")
  33. self.assertEqual(got["batch_no"], "")
  34. self.assertEqual(got["manufacturer"], "")
  35. self.assertEqual(got["unit_price"], Decimal("0"))
  36. self.assertEqual(got["amount"], Decimal("0"))
  37. self.assertEqual(got["in_qty"], Decimal("0"))
  38. self.assertIsNone(got["expire_date"])
  39. def test_qty_zero_allowed(self):
  40. got = _require_template_fields(self._base(inQty=0))
  41. self.assertEqual(got["in_qty"], Decimal("0"))
  42. def test_missing_code_name_allowed(self):
  43. got = _require_template_fields(self._base(materialCode="", materialName=""))
  44. self.assertEqual(got["material_code"], "")
  45. self.assertEqual(got["material_name"], "")