Files
zkxw/backend/tests/test_oa_post_select.py
T
2026-07-30 15:02:13 +08:00

75 lines
2.1 KiB
Python

import unittest
from app.services.oa_post_select import (
extract_post_ids,
post_contains_match,
validate_post_form_values,
)
class TestOaPostSelect(unittest.TestCase):
def test_validate_multi_ok(self):
schema = {
"rule": [
{
"type": "post",
"field": "F1",
"title": "职位",
"props": {"multiple": True},
}
]
}
data = {"F1": [{"id": "p1", "name": "工程师"}, {"id": "p2", "name": "经理"}]}
self.assertEqual(validate_post_form_values(schema, data), [])
def test_validate_required_empty(self):
schema = {
"rule": [
{
"type": "post",
"field": "F1",
"title": "职位",
"$required": True,
"props": {"multiple": True},
}
]
}
errs = validate_post_form_values(schema, {"F1": []})
self.assertTrue(any("必填" in e for e in errs))
def test_validate_max(self):
schema = {
"rule": [
{
"type": "post",
"field": "F1",
"title": "职位",
"props": {"multiple": True, "max": 1},
}
]
}
errs = validate_post_form_values(
schema,
{"F1": [{"id": "p1", "name": "A"}, {"id": "p2", "name": "B"}]},
)
self.assertTrue(any("上限" in e for e in errs))
def test_extract_and_contains(self):
self.assertEqual(extract_post_ids({"id": "p1", "name": "A"}), {"p1"})
self.assertTrue(
post_contains_match(
[{"id": "p1", "name": "A"}],
["p1", "p2"],
)
)
self.assertFalse(
post_contains_match(
[{"id": "p3", "name": "C"}],
["p1", "p2"],
)
)
if __name__ == "__main__":
unittest.main()