| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- from sqlalchemy import create_engine
- from sqlalchemy.orm import sessionmaker
- from app.api.mini_menu import list_mobile_menu_items
- from app.models.base import Base
- from app.models.models import (
- SysMenu,
- SysPost,
- SysPostRole,
- SysRole,
- SysRoleMenu,
- SysUserPost,
- SysUserRole,
- )
- def _session():
- engine = create_engine("sqlite:///:memory:")
- Base.metadata.create_all(
- engine,
- tables=[
- SysMenu.__table__,
- SysPost.__table__,
- SysPostRole.__table__,
- SysRole.__table__,
- SysRoleMenu.__table__,
- SysUserPost.__table__,
- SysUserRole.__table__,
- ],
- )
- return sessionmaker(bind=engine)()
- def _menu(*, menu_id, tenant_no, name, parent_id, path="", perms=None, menu_type="M", order_num=1):
- return SysMenu(
- id=menu_id,
- menu_name=name,
- parent_id=parent_id,
- menu_type=menu_type,
- path=path,
- perms=perms,
- visible="1",
- status="1",
- tenant_no=tenant_no,
- order_num=order_num,
- create_dept_id="",
- del_flag=0,
- )
- def test_mobile_menu_query_uses_current_tenant_and_returns_leaf_group_title():
- db = _session()
- db.add_all(
- [
- _menu(
- menu_id="tenant-a-root",
- tenant_no="tenant-a",
- name="移动端菜单",
- parent_id="0",
- ),
- _menu(
- menu_id="tenant-a-market",
- tenant_no="tenant-a",
- name="市场部",
- parent_id="tenant-a-root",
- ),
- _menu(
- menu_id="tenant-a-manager-presign",
- tenant_no="tenant-a",
- name="预签约订单(经理)",
- parent_id="tenant-a-market",
- path="/pages/market/webview/index?entry=manager-presign",
- perms="mini:market:manager:presign",
- menu_type="C",
- ),
- _menu(
- menu_id="tenant-b-root",
- tenant_no="tenant-b",
- name="移动端菜单",
- parent_id="0",
- ),
- _menu(
- menu_id="tenant-b-market",
- tenant_no="tenant-b",
- name="市场部",
- parent_id="tenant-b-root",
- ),
- _menu(
- menu_id="tenant-b-specialist-presign",
- tenant_no="tenant-b",
- name="预签约订单(专员)",
- parent_id="tenant-b-market",
- path="/pages/market/webview/index?entry=specialist-presign",
- perms="mini:market:specialist:presign",
- menu_type="C",
- ),
- SysRole(
- id="tenant-b-role",
- role_name="市场专员",
- status="1",
- tenant_no="tenant-b",
- create_dept_id="",
- del_flag=0,
- ),
- SysUserRole(
- id="tenant-b-user-role",
- user_id="u1",
- role_id="tenant-b-role",
- tenant_no="tenant-b",
- create_dept_id="",
- del_flag=0,
- ),
- SysRoleMenu(
- id="tenant-b-role-directory",
- role_id="tenant-b-role",
- menu_id="tenant-b-market",
- tenant_no="tenant-b",
- create_dept_id="",
- del_flag=0,
- ),
- SysRoleMenu(
- id="tenant-b-role-leaf",
- role_id="tenant-b-role",
- menu_id="tenant-b-specialist-presign",
- tenant_no="tenant-b",
- create_dept_id="",
- del_flag=0,
- ),
- ]
- )
- db.commit()
- items = list_mobile_menu_items(db, user_id="u1", tenant_no="tenant-b")
- assert {item["id"] for item in items} == {"tenant-b-specialist-presign"}
- assert items[0]["groupTitle"] == "市场部"
- assert items[0]["title"] == "预签约订单(专员)"
- assert items[0]["path"] == (
- "/pages/market/webview/index?entry=specialist-presign"
- )
- assert items[0]["icon"] == "market-presign"
- assert items[0]["iconBg"] == "transparent"
- def test_mobile_menu_query_requires_explicit_tenant():
- db = _session()
- assert list_mobile_menu_items(db, user_id="u1", tenant_no="") == []
|