Files
zkxw/backend/tests/test_production_task_set_helpers.py
2026-08-18 15:38:52 +08:00

77 lines
2.2 KiB
Python

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()