"""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