test_production_task_set_helpers.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import unittest
  2. from app.crud.production_task_set import (
  3. collect_missing_route_ids,
  4. normalize_item_payload,
  5. skip_empty_named_tasks,
  6. )
  7. class TestNormalizeItemPayload(unittest.TestCase):
  8. def test_requires_task_name(self):
  9. self.assertIsNone(normalize_item_payload({"taskName": " ", "routeId": "r1"}))
  10. def test_keeps_optional_fields(self):
  11. item = normalize_item_payload(
  12. {
  13. "taskName": "分离",
  14. "routeId": " r1 ",
  15. "description": " d ",
  16. "remark": " m ",
  17. }
  18. )
  19. self.assertEqual(
  20. item,
  21. {
  22. "task_name": "分离",
  23. "route_id": "r1",
  24. "description": "d",
  25. "remark": "m",
  26. },
  27. )
  28. def test_empty_route_becomes_none(self):
  29. item = normalize_item_payload({"taskName": "培养", "routeId": ""})
  30. self.assertEqual(item["route_id"], None)
  31. self.assertEqual(item["description"], None)
  32. self.assertEqual(item["remark"], None)
  33. class TestSkipEmptyNamedTasks(unittest.TestCase):
  34. def test_skips_blank_names_and_counts(self):
  35. kept, skipped = skip_empty_named_tasks(
  36. [
  37. {"task_name": "A", "route_id": "r1", "description": None, "remark": "x"},
  38. {"task_name": " ", "route_id": "r2"},
  39. {"task_name": None, "route_id": None},
  40. ]
  41. )
  42. self.assertEqual(skipped, 2)
  43. self.assertEqual(len(kept), 1)
  44. self.assertEqual(kept[0]["task_name"], "A")
  45. self.assertEqual(kept[0]["remark"], "x")
  46. class TestCollectMissingRouteIds(unittest.TestCase):
  47. def test_empty_route_not_missing(self):
  48. self.assertEqual(
  49. collect_missing_route_ids(
  50. [{"route_id": None}, {"route_id": ""}],
  51. {"alive"},
  52. ),
  53. [],
  54. )
  55. def test_lists_missing_preserving_order_unique(self):
  56. self.assertEqual(
  57. collect_missing_route_ids(
  58. [{"route_id": "gone"}, {"route_id": "alive"}, {"route_id": "gone"}],
  59. {"alive"},
  60. ),
  61. ["gone"],
  62. )
  63. if __name__ == "__main__":
  64. unittest.main()