|
|
@@ -0,0 +1,76 @@
|
|
|
+import unittest
|
|
|
+
|
|
|
+from app.crud.production_task_set import (
|
|
|
+ collect_missing_route_ids,
|
|
|
+ normalize_item_payload,
|
|
|
+ skip_empty_named_tasks,
|
|
|
+)
|
|
|
+
|
|
|
+
|
|
|
+class TestNormalizeItemPayload(unittest.TestCase):
|
|
|
+ def test_requires_task_name(self):
|
|
|
+ self.assertIsNone(normalize_item_payload({"taskName": " ", "routeId": "r1"}))
|
|
|
+
|
|
|
+ def test_keeps_optional_fields(self):
|
|
|
+ item = normalize_item_payload(
|
|
|
+ {
|
|
|
+ "taskName": "分离",
|
|
|
+ "routeId": " r1 ",
|
|
|
+ "description": " d ",
|
|
|
+ "remark": " m ",
|
|
|
+ }
|
|
|
+ )
|
|
|
+ self.assertEqual(
|
|
|
+ item,
|
|
|
+ {
|
|
|
+ "task_name": "分离",
|
|
|
+ "route_id": "r1",
|
|
|
+ "description": "d",
|
|
|
+ "remark": "m",
|
|
|
+ },
|
|
|
+ )
|
|
|
+
|
|
|
+ def test_empty_route_becomes_none(self):
|
|
|
+ item = normalize_item_payload({"taskName": "培养", "routeId": ""})
|
|
|
+ self.assertEqual(item["route_id"], None)
|
|
|
+ self.assertEqual(item["description"], None)
|
|
|
+ self.assertEqual(item["remark"], None)
|
|
|
+
|
|
|
+
|
|
|
+class TestSkipEmptyNamedTasks(unittest.TestCase):
|
|
|
+ def test_skips_blank_names_and_counts(self):
|
|
|
+ kept, skipped = skip_empty_named_tasks(
|
|
|
+ [
|
|
|
+ {"task_name": "A", "route_id": "r1", "description": None, "remark": "x"},
|
|
|
+ {"task_name": " ", "route_id": "r2"},
|
|
|
+ {"task_name": None, "route_id": None},
|
|
|
+ ]
|
|
|
+ )
|
|
|
+ self.assertEqual(skipped, 2)
|
|
|
+ self.assertEqual(len(kept), 1)
|
|
|
+ self.assertEqual(kept[0]["task_name"], "A")
|
|
|
+ self.assertEqual(kept[0]["remark"], "x")
|
|
|
+
|
|
|
+
|
|
|
+class TestCollectMissingRouteIds(unittest.TestCase):
|
|
|
+ def test_empty_route_not_missing(self):
|
|
|
+ self.assertEqual(
|
|
|
+ collect_missing_route_ids(
|
|
|
+ [{"route_id": None}, {"route_id": ""}],
|
|
|
+ {"alive"},
|
|
|
+ ),
|
|
|
+ [],
|
|
|
+ )
|
|
|
+
|
|
|
+ def test_lists_missing_preserving_order_unique(self):
|
|
|
+ self.assertEqual(
|
|
|
+ collect_missing_route_ids(
|
|
|
+ [{"route_id": "gone"}, {"route_id": "alive"}, {"route_id": "gone"}],
|
|
|
+ {"alive"},
|
|
|
+ ),
|
|
|
+ ["gone"],
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ unittest.main()
|