53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
"""质检物料月初模板:字段校验纯函数单测。"""
|
|
import unittest
|
|
from datetime import date
|
|
from decimal import Decimal
|
|
|
|
from app.crud.qc_material_month_template import _require_template_fields
|
|
|
|
|
|
class TestRequireTemplateFields(unittest.TestCase):
|
|
def _base(self, **overrides):
|
|
data = {
|
|
"materialCode": "QC-M-001",
|
|
"materialName": "试剂A",
|
|
"catalogNo": "CAT-1",
|
|
"batchNo": "B-1",
|
|
"manufacturer": "厂家X",
|
|
"unitPrice": 10.5,
|
|
"amount": 105,
|
|
"inQty": 10,
|
|
"expireDate": "2027-01-01",
|
|
}
|
|
data.update(overrides)
|
|
return data
|
|
|
|
def test_ok(self):
|
|
got = _require_template_fields(self._base())
|
|
self.assertEqual(got["material_code"], "QC-M-001")
|
|
self.assertEqual(got["material_name"], "试剂A")
|
|
self.assertEqual(got["catalog_no"], "CAT-1")
|
|
self.assertEqual(got["in_qty"], Decimal("10"))
|
|
self.assertEqual(got["expire_date"], date(2027, 1, 1))
|
|
|
|
def test_all_optional_empty(self):
|
|
got = _require_template_fields({})
|
|
self.assertEqual(got["material_code"], "")
|
|
self.assertEqual(got["material_name"], "")
|
|
self.assertEqual(got["catalog_no"], "")
|
|
self.assertEqual(got["batch_no"], "")
|
|
self.assertEqual(got["manufacturer"], "")
|
|
self.assertEqual(got["unit_price"], Decimal("0"))
|
|
self.assertEqual(got["amount"], Decimal("0"))
|
|
self.assertEqual(got["in_qty"], Decimal("0"))
|
|
self.assertIsNone(got["expire_date"])
|
|
|
|
def test_qty_zero_allowed(self):
|
|
got = _require_template_fields(self._base(inQty=0))
|
|
self.assertEqual(got["in_qty"], Decimal("0"))
|
|
|
|
def test_missing_code_name_allowed(self):
|
|
got = _require_template_fields(self._base(materialCode="", materialName=""))
|
|
self.assertEqual(got["material_code"], "")
|
|
self.assertEqual(got["material_name"], "")
|