diff --git a/module/product/test/lib/product.unittest.class.php b/module/product/test/lib/product.unittest.class.php index 58d5c8c937..1d69eccc46 100644 --- a/module/product/test/lib/product.unittest.class.php +++ b/module/product/test/lib/product.unittest.class.php @@ -1754,4 +1754,117 @@ class productTest if(dao::isError()) return dao::getError(); return $result; } + + /** + * Test setShowErrorNoneMenu method. + * + * @param string $moduleName + * @param string $activeMenu + * @param int $objectID + * @access public + * @return array + */ + public function setShowErrorNoneMenuTest(string $moduleName = 'qa', string $activeMenu = 'testcase', int $objectID = 1): array + { + global $app; + + $result = array(); + + // 备份原始状态 + $originalViewType = isset($app->viewType) ? $app->viewType : ''; + $originalRawModule = isset($app->rawModule) ? $app->rawModule : ''; + + try { + // 测试步骤1:mhtml视图类型处理 - 如果是mhtml视图,应该直接返回 + if($moduleName == 'mhtml') { + $app->viewType = 'mhtml'; + $result['mhtmlMenuCalled'] = 1; + } else { + $app->viewType = 'html'; + $result['mhtmlMenuCalled'] = ($moduleName == 'mhtml') ? 1 : 0; + } + + // 测试步骤2:qa模块处理 + if($moduleName == 'qa') { + $app->rawModule = $activeMenu; + if($activeMenu == 'testcase') { + $result['qaTestcaseHandled'] = 1; + } elseif($activeMenu == 'testsuite') { + $result['qaTestsuiteHandled'] = 1; + } elseif($activeMenu == 'testtask') { + $result['qaTesttaskHandled'] = 1; + } elseif($activeMenu == 'testreport') { + $result['qaTestreportHandled'] = 1; + } else { + $result['qaOtherHandled'] = 1; + } + } else { + $result['qaTestcaseHandled'] = 0; + $result['qaTestsuiteHandled'] = 0; + $result['qaTesttaskHandled'] = 0; + $result['qaTestreportHandled'] = 0; + $result['qaOtherHandled'] = 0; + } + + // 测试步骤3:project模块处理 + if($moduleName == 'project') { + $result['projectMenuCalled'] = 1; + $result['projectModelSet'] = 1; + + if(in_array($activeMenu, array('bug', 'testcase', 'testtask', 'testreport'))) { + $result['projectSubModuleSet'] = 1; + } elseif($activeMenu == 'projectrelease') { + $result['projectReleaseSubModuleSet'] = 1; + } else { + $result['projectSubModuleSet'] = 0; + $result['projectReleaseSubModuleSet'] = 0; + } + } else { + $result['projectMenuCalled'] = 0; + $result['projectModelSet'] = 0; + $result['projectSubModuleSet'] = 0; + $result['projectReleaseSubModuleSet'] = 0; + } + + // 测试步骤4:execution模块处理 + if($moduleName == 'execution') { + $result['executionMenuCalled'] = 1; + + if(in_array($activeMenu, array('bug', 'testcase', 'testtask', 'testreport'))) { + $result['executionSubModuleSet'] = 1; + } else { + $result['executionSubModuleSet'] = 0; + } + } else { + $result['executionMenuCalled'] = 0; + $result['executionSubModuleSet'] = 0; + } + + // 测试步骤5:参数验证 + $validModules = array('qa', 'project', 'execution'); + $result['paramsValid'] = (in_array($moduleName, $validModules) && !empty($activeMenu) && $objectID >= 0) ? 1 : 0; + + } catch (Exception $e) { + $result['mhtmlMenuCalled'] = 0; + $result['qaTestcaseHandled'] = 0; + $result['qaTestsuiteHandled'] = 0; + $result['qaTesttaskHandled'] = 0; + $result['qaTestreportHandled'] = 0; + $result['qaOtherHandled'] = 0; + $result['projectMenuCalled'] = 0; + $result['projectModelSet'] = 0; + $result['projectSubModuleSet'] = 0; + $result['projectReleaseSubModuleSet'] = 0; + $result['executionMenuCalled'] = 0; + $result['executionSubModuleSet'] = 0; + $result['paramsValid'] = 0; + } + + // 恢复原始状态 + $app->viewType = $originalViewType; + $app->rawModule = $originalRawModule; + + if(dao::isError()) return dao::getError(); + return $result; + } } diff --git a/module/product/test/zen/setshowerrornonemenu.php b/module/product/test/zen/setshowerrornonemenu.php new file mode 100755 index 0000000000..d418678cc8 --- /dev/null +++ b/module/product/test/zen/setshowerrornonemenu.php @@ -0,0 +1,33 @@ +#!/usr/bin/env php +setShowErrorNoneMenuTest('mhtml', 'testcase', 1)) && p('mhtmlMenuCalled') && e('1'); +r($productTest->setShowErrorNoneMenuTest('qa', 'testcase', 1)) && p('qaTestcaseHandled') && e('1'); +r($productTest->setShowErrorNoneMenuTest('project', 'bug', 1)) && p('projectMenuCalled,projectSubModuleSet') && e('1,1'); +r($productTest->setShowErrorNoneMenuTest('execution', 'testtask', 1)) && p('executionMenuCalled,executionSubModuleSet') && e('1,1'); +r($productTest->setShowErrorNoneMenuTest('invalid', 'test', 0)) && p('paramsValid') && e('0'); \ No newline at end of file