|
|
@@ -0,0 +1,44 @@
|
|
|
+"""临时质检对象:系统产品 / 外部编号互斥归一化。"""
|
|
|
+
|
|
|
+import unittest
|
|
|
+
|
|
|
+from app.crud.temp_qc_target import resolve_temp_qc_target
|
|
|
+
|
|
|
+
|
|
|
+class TestResolveTempQcTarget(unittest.TestCase):
|
|
|
+ def test_cell_product_only(self):
|
|
|
+ cp, ext = resolve_temp_qc_target(
|
|
|
+ cell_product_id=" pid-1 ", external_target_code=" "
|
|
|
+ )
|
|
|
+ self.assertEqual(cp, "pid-1")
|
|
|
+ self.assertIsNone(ext)
|
|
|
+
|
|
|
+ def test_external_only(self):
|
|
|
+ cp, ext = resolve_temp_qc_target(
|
|
|
+ cell_product_id="", external_target_code=" EXT-1 "
|
|
|
+ )
|
|
|
+ self.assertIsNone(cp)
|
|
|
+ self.assertEqual(ext, "EXT-1")
|
|
|
+
|
|
|
+ def test_both_raises(self):
|
|
|
+ with self.assertRaises(ValueError) as ctx:
|
|
|
+ resolve_temp_qc_target(
|
|
|
+ cell_product_id="pid", external_target_code="EXT"
|
|
|
+ )
|
|
|
+ self.assertIn("不能同时", str(ctx.exception))
|
|
|
+
|
|
|
+ def test_neither_raises(self):
|
|
|
+ with self.assertRaises(ValueError) as ctx:
|
|
|
+ resolve_temp_qc_target(cell_product_id="", external_target_code="")
|
|
|
+ self.assertIn("质检对象", str(ctx.exception))
|
|
|
+
|
|
|
+ def test_external_too_long(self):
|
|
|
+ with self.assertRaises(ValueError) as ctx:
|
|
|
+ resolve_temp_qc_target(
|
|
|
+ cell_product_id="", external_target_code="x" * 65
|
|
|
+ )
|
|
|
+ self.assertIn("64", str(ctx.exception))
|
|
|
+
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ unittest.main()
|