Files
WonderQ-Project/WonderQ-Admin/tests/test_system.py
duanshuwen 4c245f0d1f feat(admin, admin-ui): 实现RuoYi风格后台菜单管理,优化媒体资源处理
新增服务端菜单校验与归一化逻辑,完善菜单相关Schema;前端实现条件渲染的菜单编辑器,支持搜索式图标选择器与父级树过滤。新增媒体URL统一处理工具修复管理端本地静态资源路径映射问题,更新全部相关文档、技术决策记录与测试用例。本次变更不影响WonderQ-MiniAPP端。
2026-08-27 09:08:05 +08:00

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"