43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
"""system/dept service 单元测试(回归删除父级时禁止有子级)。"""
|
|
import json
|
|
|
|
from modules.system.dept import service as dept_service
|
|
from modules.system.dept.models import Dept
|
|
from modules.system.dept.repository import dept_repo
|
|
from modules.system.dept.schemas import DeptForm
|
|
|
|
|
|
def _resp_body(resp):
|
|
return json.loads(resp.body)
|
|
|
|
|
|
def _form(**overrides):
|
|
data = dict(name="总公司", code="HQ", type=1, parentId=None, sort=1, note=None)
|
|
data.update(overrides)
|
|
return DeptForm(**data)
|
|
|
|
|
|
def test_delete_parent_with_child_blocked(fake_request, sqlite_db):
|
|
dept_service.add_dept(fake_request, _form())
|
|
parent = dept_repo.filter(Dept.name == "总公司").first()
|
|
|
|
dept_service.add_dept(
|
|
fake_request,
|
|
_form(name="研发部", code="RD", parentId=parent.id),
|
|
)
|
|
child = dept_repo.filter(Dept.name == "研发部").first()
|
|
|
|
resp = dept_service.delete_dept(str(parent.id))
|
|
assert _resp_body(resp)["code"] != 0
|
|
assert dept_repo.get_by_id(parent.id).is_delete == 0
|
|
assert dept_repo.get_by_id(child.id).is_delete == 0
|
|
|
|
|
|
def test_delete_leaf_soft_deletes(fake_request, sqlite_db):
|
|
dept_service.add_dept(fake_request, _form())
|
|
leaf = dept_repo.filter(Dept.name == "总公司").first()
|
|
|
|
resp = dept_service.delete_dept(str(leaf.id))
|
|
assert _resp_body(resp)["code"] == 0
|
|
assert dept_repo.filter(Dept.id == leaf.id).first().is_delete == 1
|