test_oa_owner_fields.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import unittest
  2. from app.services.oa_dept_select import validate_dept_form_values
  3. from app.services.oa_owner_fields import apply_owner_field_defaults
  4. from app.services.oa_person_select import validate_person_form_values
  5. class TestOaOwnerFields(unittest.TestCase):
  6. def test_force_overwrite_when_not_allow_modify(self):
  7. schema = {
  8. "rule": [
  9. {
  10. "type": "ownerPerson",
  11. "field": "op1",
  12. "title": "归属人",
  13. "props": {"allowModify": False},
  14. },
  15. {
  16. "type": "ownerDept",
  17. "field": "od1",
  18. "title": "归属部门",
  19. "props": {"allowModify": False},
  20. },
  21. ]
  22. }
  23. data = apply_owner_field_defaults(
  24. schema,
  25. {
  26. "op1": {"id": "hack", "name": "黑客"},
  27. "od1": {"id": "d-hack", "name": "假部门"},
  28. },
  29. user_id="u1",
  30. user_name="张三",
  31. dept_id="d1",
  32. dept_name="研发部",
  33. )
  34. self.assertEqual(data["op1"], {"id": "u1", "name": "张三"})
  35. self.assertEqual(data["od1"], {"id": "d1", "name": "研发部"})
  36. def test_fill_empty_when_allow_modify(self):
  37. schema = {
  38. "rule": [
  39. {
  40. "type": "ownerPerson",
  41. "field": "op1",
  42. "props": {"allowModify": True},
  43. }
  44. ]
  45. }
  46. data = apply_owner_field_defaults(
  47. schema,
  48. {},
  49. user_id="u1",
  50. user_name="张三",
  51. dept_id="d1",
  52. dept_name="研发部",
  53. )
  54. self.assertEqual(data["op1"], {"id": "u1", "name": "张三"})
  55. def test_keep_user_value_when_allow_modify(self):
  56. schema = {
  57. "rule": [
  58. {
  59. "type": "ownerPerson",
  60. "field": "op1",
  61. "props": {"allowModify": True},
  62. }
  63. ]
  64. }
  65. data = apply_owner_field_defaults(
  66. schema,
  67. {"op1": {"id": "u2", "name": "李四"}},
  68. user_id="u1",
  69. user_name="张三",
  70. dept_id="d1",
  71. dept_name="研发部",
  72. )
  73. self.assertEqual(data["op1"], {"id": "u2", "name": "李四"})
  74. def test_validate_owner_person_single(self):
  75. schema = {
  76. "rule": [{"type": "ownerPerson", "field": "op1", "title": "归属人"}]
  77. }
  78. self.assertEqual(
  79. validate_person_form_values(
  80. schema, {"op1": {"id": "u1", "name": "张三"}}
  81. ),
  82. [],
  83. )
  84. errs = validate_person_form_values(
  85. schema, {"op1": [{"id": "u1", "name": "张三"}]}
  86. )
  87. self.assertTrue(any("单个" in e for e in errs))
  88. def test_validate_owner_dept_single(self):
  89. schema = {
  90. "rule": [{"type": "ownerDept", "field": "od1", "title": "归属部门"}]
  91. }
  92. self.assertEqual(
  93. validate_dept_form_values(schema, {"od1": {"id": "d1", "name": "研发"}}),
  94. [],
  95. )
  96. if __name__ == "__main__":
  97. unittest.main()