From 4747805ea6b6a4cf0814f4e21078764f3688bfe2 Mon Sep 17 00:00:00 2001 From: liugang Date: Sat, 6 Sep 2025 13:36:59 +0800 Subject: [PATCH] + [misc] Add unit tests for adminModel::setMenu() method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../admin/test/lib/admin.unittest.class.php | 46 +++++++++++++++++++ module/admin/test/model/setmenu.php | 33 +++++++++++++ 2 files changed, 79 insertions(+) create mode 100755 module/admin/test/model/setmenu.php diff --git a/module/admin/test/lib/admin.unittest.class.php b/module/admin/test/lib/admin.unittest.class.php index 608b71ec27..58a1dcf3aa 100644 --- a/module/admin/test/lib/admin.unittest.class.php +++ b/module/admin/test/lib/admin.unittest.class.php @@ -96,4 +96,50 @@ class adminTest return $result; } + + /** + * 测试设置后台二级导航。 + * Test set menu. + * + * @param string $moduleName + * @param string $methodName + * @param array $params + * @access public + * @return mixed + */ + public function setMenuTest(string $moduleName = 'admin', string $methodName = 'index', array $params = array()) + { + global $app, $lang; + + // 保存原始值 + $originalModule = isset($app->rawModule) ? $app->rawModule : ''; + $originalMethod = isset($app->rawMethod) ? $app->rawMethod : ''; + $originalParams = isset($app->rawParams) ? $app->rawParams : array(); + + // 设置测试值 + $app->rawModule = $moduleName; + $app->rawMethod = $methodName; + $app->rawParams = $params; + + // 执行setMenu方法 + $this->objectModel->setMenu(); + + // 检查是否有错误 + if(dao::isError()) return dao::getError(); + + // 恢复原始值 + $app->rawModule = $originalModule; + $app->rawMethod = $originalMethod; + $app->rawParams = $originalParams; + + // 返回设置结果的标识 + $result = array(); + if(isset($lang->admin->menu)) $result['hasMenu'] = true; + if(isset($lang->admin->menuOrder)) $result['hasMenuOrder'] = true; + if(isset($lang->admin->dividerMenu)) $result['hasDividerMenu'] = true; + if(isset($lang->admin->tabMenu)) $result['hasTabMenu'] = true; + if(isset($lang->switcherMenu)) $result['hasSwitcherMenu'] = true; + + return $result; + } } diff --git a/module/admin/test/model/setmenu.php b/module/admin/test/model/setmenu.php new file mode 100755 index 0000000000..9e4f9d6e2d --- /dev/null +++ b/module/admin/test/model/setmenu.php @@ -0,0 +1,33 @@ +#!/usr/bin/env php +setMenuTest('admin', 'index', array())) && p('hasSwitcherMenu') && e('1'); // 步骤1:正常admin模块菜单设置 +r($adminTest->setMenuTest('user', 'browse', array())) && p('hasSwitcherMenu') && e('1'); // 步骤2:user模块菜单设置 +r($adminTest->setMenuTest('custom', 'required', array('product'))) && p('hasSwitcherMenu') && e('1'); // 步骤3:custom模块特殊方法测试 +r($adminTest->setMenuTest('project', 'browse', array())) && p('hasSwitcherMenu') && e('1'); // 步骤4:project模块菜单设置 +r($adminTest->setMenuTest('nonexistent', 'test', array())) && p('hasSwitcherMenu') && e('~~'); // 步骤5:不存在模块的处理 \ No newline at end of file