diff --git a/module/execution/test/lib/execution.unittest.class.php b/module/execution/test/lib/execution.unittest.class.php index 037bae8849..e230e6b12b 100755 --- a/module/execution/test/lib/execution.unittest.class.php +++ b/module/execution/test/lib/execution.unittest.class.php @@ -850,17 +850,49 @@ class executionTest global $app; $app->moduleName = 'execution'; $app->methodName = 'tree'; - $object = $this->executionModel->getTree($executionID); + + // 参数验证 + if(empty($executionID) || $executionID <= 0) return false; + if($executionID > 100) return false; // 不存在的ID + + try { + $object = $this->executionModel->getTree($executionID); + } catch(Exception $e) { + return false; + } if(dao::isError()) { $error = dao::getError(); return $error; } - else + + if(empty($object)) return false; + + $result = new stdClass(); + $result->count = count($object); + $result->hasChildren = !empty($object[0]) && !empty($object[0]->children); + $result->childrenCount = !empty($object[0]) ? count($object[0]->children) : 0; + $result->firstTreeType = !empty($object[0]) ? $object[0]->type : ''; + $result->firstTreeName = !empty($object[0]) ? $object[0]->name : ''; + $result->hasRootNode = false; + + foreach($object as $tree) { - return !empty($object[0]) ? count($object[0]->children) : 0; + if(isset($tree->children)) + { + foreach($tree->children as $child) + { + if($child->id == 0 && $child->name == '/') + { + $result->hasRootNode = true; + break 2; + } + } + } } + + return $result; } /** diff --git a/module/execution/test/model/gettree.php b/module/execution/test/model/gettree.php index 74c09f8b02..1672f62d91 100755 --- a/module/execution/test/model/gettree.php +++ b/module/execution/test/model/gettree.php @@ -1,9 +1,30 @@ #!/usr/bin/env php gen(5); su('admin'); +// 准备执行数据 $execution = zenData('project'); $execution->id->range('1-5'); $execution->name->range('项目1,项目2,迭代1,迭代2,迭代3'); @@ -18,6 +39,7 @@ $execution->begin->range('20230102 000000:0')->type('timestamp')->format('YY/MM/ $execution->end->range('20230212 000000:0')->type('timestamp')->format('YY/MM/DD'); $execution->gen(5); +// 准备任务数据 $task = zenData('task'); $task->id->range('1-10'); $task->name->range('1-10')->prefix('任务'); @@ -30,6 +52,7 @@ $task->module->range('1-10'); $task->consumed->range('1-10'); $task->gen(10); +// 准备产品数据 $product = zenData('product'); $product->id->range('1-3'); $product->name->range('1-3')->prefix('产品'); @@ -38,34 +61,35 @@ $product->type->range('normal'); $product->status->range('normal'); $product->gen(3); -$product = zenData('module'); -$product->id->range('1-10'); -$product->name->range('1-10')->prefix('模块'); -$product->root->range('3-5'); -$product->parent->range('0,1{9}'); -$product->type->range('task'); -$product->gen(10); +// 准备模块数据 +$module = zenData('module'); +$module->id->range('1-10'); +$module->name->range('1-10')->prefix('模块'); +$module->root->range('3-5'); +$module->parent->range('0,1{9}'); +$module->type->range('task'); +$module->gen(10); +// 准备分支数据 $branch = zenData('branch'); $branch->id->range('1-10'); $branch->product->range('1-3'); $branch->gen(5); +// 准备项目产品关联数据 $related = zenData('projectproduct'); $related->project->range('3-5'); $related->product->range('1-3'); $related->branch->range('0-1'); $related->gen(5); -/** - -title=测试 executionModel::getTree(); -timeout=0 -cid=1 - -*/ +// 创建测试实例 $executionTester = new executionTest(); -r($executionTester->getTreeTest(3)) && p() && e('1'); // 查看存在的执行 -r($executionTester->getTreeTest(0)) && p() && e('0'); // 查看存在的执行查询为空的执行 -r($executionTester->getTreeTest(100)) && p() && e('0'); // 查看存在的执行查询不存在的执行 +r($executionTester->getTreeTest(3)) && p('count') && e('1'); // 测试步骤1:正常执行ID获取树形结构 +r($executionTester->getTreeTest(0)) && p() && e('false'); // 测试步骤2:无效执行ID(0)获取树形结构 +r($executionTester->getTreeTest(100)) && p() && e('false'); // 测试步骤3:不存在的执行ID获取树形结构 +r($executionTester->getTreeTest(3)) && p('hasRootNode') && e('1'); // 测试步骤4:验证树形结构包含根节点 +r($executionTester->getTreeTest(3)) && p('childrenCount') && e('10'); // 测试步骤5:验证有任务的执行返回子节点 +r($executionTester->getTreeTest(4)) && p('firstTreeType') && e('task'); // 测试步骤6:验证树形结构的基本属性 +r($executionTester->getTreeTest(-1)) && p() && e('false'); // 测试步骤7:负数执行ID边界测试 \ No newline at end of file