Files
zkxw/backend/tests/test_oa_owner_fields.py

107 lines
3.2 KiB
Python

import unittest
from app.services.oa_dept_select import validate_dept_form_values
from app.services.oa_owner_fields import apply_owner_field_defaults
from app.services.oa_person_select import validate_person_form_values
class TestOaOwnerFields(unittest.TestCase):
def test_force_overwrite_when_not_allow_modify(self):
schema = {
"rule": [
{
"type": "ownerPerson",
"field": "op1",
"title": "归属人",
"props": {"allowModify": False},
},
{
"type": "ownerDept",
"field": "od1",
"title": "归属部门",
"props": {"allowModify": False},
},
]
}
data = apply_owner_field_defaults(
schema,
{
"op1": {"id": "hack", "name": "黑客"},
"od1": {"id": "d-hack", "name": "假部门"},
},
user_id="u1",
user_name="张三",
dept_id="d1",
dept_name="研发部",
)
self.assertEqual(data["op1"], {"id": "u1", "name": "张三"})
self.assertEqual(data["od1"], {"id": "d1", "name": "研发部"})
def test_fill_empty_when_allow_modify(self):
schema = {
"rule": [
{
"type": "ownerPerson",
"field": "op1",
"props": {"allowModify": True},
}
]
}
data = apply_owner_field_defaults(
schema,
{},
user_id="u1",
user_name="张三",
dept_id="d1",
dept_name="研发部",
)
self.assertEqual(data["op1"], {"id": "u1", "name": "张三"})
def test_keep_user_value_when_allow_modify(self):
schema = {
"rule": [
{
"type": "ownerPerson",
"field": "op1",
"props": {"allowModify": True},
}
]
}
data = apply_owner_field_defaults(
schema,
{"op1": {"id": "u2", "name": "李四"}},
user_id="u1",
user_name="张三",
dept_id="d1",
dept_name="研发部",
)
self.assertEqual(data["op1"], {"id": "u2", "name": "李四"})
def test_validate_owner_person_single(self):
schema = {
"rule": [{"type": "ownerPerson", "field": "op1", "title": "归属人"}]
}
self.assertEqual(
validate_person_form_values(
schema, {"op1": {"id": "u1", "name": "张三"}}
),
[],
)
errs = validate_person_form_values(
schema, {"op1": [{"id": "u1", "name": "张三"}]}
)
self.assertTrue(any("单个" in e for e in errs))
def test_validate_owner_dept_single(self):
schema = {
"rule": [{"type": "ownerDept", "field": "od1", "title": "归属部门"}]
}
self.assertEqual(
validate_dept_form_values(schema, {"od1": {"id": "d1", "name": "研发"}}),
[],
)
if __name__ == "__main__":
unittest.main()