新增服务端菜单校验与归一化逻辑,完善菜单相关Schema;前端实现条件渲染的菜单编辑器,支持搜索式图标选择器与父级树过滤。新增媒体URL统一处理工具修复管理端本地静态资源路径映射问题,更新全部相关文档、技术决策记录与测试用例。本次变更不影响WonderQ-MiniAPP端。
67 lines
1.9 KiB
Python
67 lines
1.9 KiB
Python
import json
|
|
from datetime import datetime
|
|
|
|
import pytest
|
|
from pydantic import ValidationError
|
|
|
|
from app.models import AdminDepartment, AdminMenu, AdminRole
|
|
from app.routers.system import _dept_dict, _menu_dict, _role_dict
|
|
from app.schemas import AdminMenuCreate
|
|
|
|
|
|
def test_role_audit_snapshot_serializes_datetime_fields():
|
|
role = AdminRole(
|
|
id="role-1",
|
|
name="验收角色",
|
|
code="acceptance_role",
|
|
dataScope="self",
|
|
description=None,
|
|
isActive=True,
|
|
createdAt=datetime(2026, 8, 26, 1, 0),
|
|
updatedAt=datetime(2026, 8, 26, 1, 0),
|
|
)
|
|
|
|
json.dumps(_role_dict(role))
|
|
|
|
|
|
def test_menu_and_department_audit_snapshots_serialize_datetime_fields():
|
|
menu = AdminMenu(
|
|
id="menu-1",
|
|
name="验收菜单",
|
|
type="page",
|
|
sortOrder=1,
|
|
isVisible=True,
|
|
isActive=True,
|
|
createdAt=datetime(2026, 8, 26, 1, 0),
|
|
updatedAt=datetime(2026, 8, 26, 1, 0),
|
|
)
|
|
dept = AdminDepartment(
|
|
id="dept-1",
|
|
name="验收部门",
|
|
sortOrder=1,
|
|
isActive=True,
|
|
createdAt=datetime(2026, 8, 26, 1, 0),
|
|
updatedAt=datetime(2026, 8, 26, 1, 0),
|
|
)
|
|
|
|
json.dumps(_menu_dict(menu))
|
|
json.dumps(_dept_dict(dept))
|
|
|
|
|
|
def test_menu_create_validates_fields_by_menu_type():
|
|
with pytest.raises(ValidationError):
|
|
AdminMenuCreate(name=" ", type="page", path="/users", componentKey="SystemUsers")
|
|
|
|
with pytest.raises(ValidationError):
|
|
AdminMenuCreate(name="按钮", type="button")
|
|
|
|
with pytest.raises(ValidationError):
|
|
AdminMenuCreate(name="页面", type="page", path="/users")
|
|
|
|
button = AdminMenuCreate(name="编辑用户", type="button", permissionCode="system:user:update")
|
|
assert button.path is None
|
|
assert button.componentKey is None
|
|
|
|
page = AdminMenuCreate(name="用户管理", type="page", path="/users", componentKey="SystemUsers")
|
|
assert page.path == "/users"
|