Files
xiaobai-review/tests/test_mobile_system_pages.py
T
cefc86917d fix(HEL-233): 去掉系统管理按钮属性多余引号,恢复点击
五个无值 data-system-* 属性名后多写了引号,选择器匹配失败导致按钮完全无效。
toast 改为在未打开抽屉时也能挂载,并补源码与真实点击回归。

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-08-29 13:14:23 +08:00

79 lines
2.8 KiB
Python

from __future__ import annotations
import re
import unittest
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
NAV = ROOT / "frontend/m/config/nav.config.js"
PAGES = ROOT / "frontend/m/js/pages.js"
ROUTER = ROOT / "frontend/m/js/router.js"
class MobileSystemPagesRegressionTests(unittest.TestCase):
"""Prevent mobile system-management entries from falling back to placeholders."""
def test_nav_system_entries_are_registered_as_real_pages(self) -> None:
nav = NAV.read_text(encoding="utf-8")
pages = PAGES.read_text(encoding="utf-8")
keys = re.findall(r'key:\s*"(system/[^"]+)"', nav)
self.assertEqual(
keys,
[
"system/profile",
"system/password",
"system/membership",
"system/admin",
"system/members",
],
)
for key in keys:
self.assertIn(f'"{key}": setupSystemPage', pages)
self.assertIn(f'"{key}": loadSystem', pages)
def test_placeholder_copy_is_only_a_router_fallback(self) -> None:
router = ROUTER.read_text(encoding="utf-8")
pages = PAGES.read_text(encoding="utf-8")
self.assertIn("该功能页将在后续批次实现", router)
self.assertNotIn("该功能页将在后续批次实现", pages)
self.assertIn("function setupSystemPage", pages)
self.assertIn("function loadSystem", pages)
def test_system_pages_render_real_controls_not_stubs(self) -> None:
pages = PAGES.read_text(encoding="utf-8")
for marker in (
'data-system-page="profile"',
'data-system-page="password"',
'data-system-page="membership"',
'data-system-page="members"',
'data-system-page="forbidden"',
'data-system-admin-panel="market"',
"m-sys-birth-date",
"m-sys-password-current",
"m-sys-token",
"m-sys-member-limit",
"data-system-switch",
'location.assign("/login/")',
):
self.assertIn(marker, pages)
def test_system_boolean_attrs_do_not_have_stray_quotes(self) -> None:
pages = PAGES.read_text(encoding="utf-8")
stray = re.findall(r'data-system-[a-z-]*"(?=[>\s])', pages)
self.assertEqual(
stray,
[],
"boolean data-system attributes must not have a trailing quote before > or space",
)
for name in (
"data-system-save-birth",
"data-system-save-password",
"data-system-add-model",
"data-system-save-models",
"data-system-save-market",
"data-system-refresh",
):
self.assertIn(name, pages)
self.assertNotIn(name + '">', pages)