test_oa_person_select.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import unittest
  2. from app.services.oa_person_select import (
  3. extract_person_ids,
  4. person_contains_match,
  5. validate_person_form_values,
  6. )
  7. class TestOaPersonSelect(unittest.TestCase):
  8. def test_validate_multi_ok(self):
  9. schema = {
  10. "rule": [
  11. {
  12. "type": "person",
  13. "field": "F1",
  14. "title": "协同人",
  15. "props": {"multiple": True},
  16. }
  17. ]
  18. }
  19. data = {"F1": [{"id": "u1", "name": "张三"}, {"id": "u2", "name": "李四"}]}
  20. self.assertEqual(validate_person_form_values(schema, data), [])
  21. def test_validate_required_empty(self):
  22. schema = {
  23. "rule": [
  24. {
  25. "type": "person",
  26. "field": "F1",
  27. "title": "协同人",
  28. "$required": True,
  29. "props": {"multiple": True},
  30. }
  31. ]
  32. }
  33. errs = validate_person_form_values(schema, {"F1": []})
  34. self.assertTrue(any("必填" in e for e in errs))
  35. def test_validate_max(self):
  36. schema = {
  37. "rule": [
  38. {
  39. "type": "person",
  40. "field": "F1",
  41. "title": "协同人",
  42. "props": {"multiple": True, "max": 1},
  43. }
  44. ]
  45. }
  46. errs = validate_person_form_values(
  47. schema,
  48. {"F1": [{"id": "u1", "name": "A"}, {"id": "u2", "name": "B"}]},
  49. )
  50. self.assertTrue(any("上限" in e for e in errs))
  51. def test_extract_and_contains(self):
  52. self.assertEqual(extract_person_ids({"id": "u1", "name": "A"}), {"u1"})
  53. self.assertTrue(
  54. person_contains_match(
  55. [{"id": "u1", "name": "A"}],
  56. ["u1", "u2"],
  57. )
  58. )
  59. self.assertFalse(
  60. person_contains_match(
  61. [{"id": "u3", "name": "C"}],
  62. ["u1", "u2"],
  63. )
  64. )
  65. if __name__ == "__main__":
  66. unittest.main()