diff --git a/module/program/test/lib/programzen.unittest.class.php b/module/program/test/lib/programzen.unittest.class.php index 34c1c5a01d..9af2fc25c7 100644 --- a/module/program/test/lib/programzen.unittest.class.php +++ b/module/program/test/lib/programzen.unittest.class.php @@ -61,4 +61,22 @@ class programTest return $result; } + + /** + * Test buildTree method. + * + * @param array $programs + * @param int $parentID + * @access public + * @return array + */ + public function buildTreeTest(array $programs, int $parentID = 0) + { + $method = $this->objectZen->getMethod('buildTree'); + $method->setAccessible(true); + $result = $method->invokeArgs($this->objectZen->newInstance(), array($programs, $parentID)); + if(dao::isError()) return dao::getError(); + + return $result; + } } \ No newline at end of file diff --git a/module/program/test/zen/buildtree.php b/module/program/test/zen/buildtree.php new file mode 100755 index 0000000000..5881010978 --- /dev/null +++ b/module/program/test/zen/buildtree.php @@ -0,0 +1,75 @@ +#!/usr/bin/env php +> 返回空数组 +- 测试步骤2:单层顶级项目集(parent=0) >> 返回包含所有顶级项目集 +- 测试步骤3:多层嵌套项目集树形结构 >> 正确构建父子关系和递归子节点 +- 测试步骤4:指定父ID构建子树 >> 返回指定父ID的子项目集 +- 测试步骤5:包含project类型的混合数组 >> 过滤掉project类型只保留program +- 测试步骤6:树节点属性完整性 >> 包含id、text、label、keys等必需属性 + +*/ + +include dirname(__FILE__, 5) . '/test/lib/init.php'; +include dirname(__FILE__, 2) . '/lib/programzen.unittest.class.php'; + +su('admin'); + +$programTest = new programTest(); + +$program1 = new stdClass(); +$program1->id = 1; +$program1->name = '顶级项目集A'; +$program1->type = 'program'; +$program1->parent = 0; + +$program2 = new stdClass(); +$program2->id = 2; +$program2->name = '顶级项目集B'; +$program2->type = 'program'; +$program2->parent = 0; + +$program3 = new stdClass(); +$program3->id = 3; +$program3->name = '子项目集C'; +$program3->type = 'program'; +$program3->parent = 1; + +$program4 = new stdClass(); +$program4->id = 4; +$program4->name = '子项目集D'; +$program4->type = 'program'; +$program4->parent = 1; + +$program5 = new stdClass(); +$program5->id = 5; +$program5->name = '孙项目集E'; +$program5->type = 'program'; +$program5->parent = 3; + +$project1 = new stdClass(); +$project1->id = 8; +$project1->name = '独立项目1'; +$project1->type = 'project'; +$project1->parent = 0; + +$project2 = new stdClass(); +$project2->id = 9; +$project2->name = '独立项目2'; +$project2->type = 'project'; +$project2->parent = 0; + +$programs = array(1 => $program1, 2 => $program2, 3 => $program3, 4 => $program4, 5 => $program5, 8 => $project1, 9 => $project2); + +r($programTest->buildTreeTest(array(), 0)) && p() && e('0'); +r($programTest->buildTreeTest($programs, 0)) && p('0:id;1:id') && e('1;2'); +r($programTest->buildTreeTest($programs, 0)) && p('0:text') && e('顶级项目集A'); +r($programTest->buildTreeTest($programs, 1)) && p('0:id;1:id') && e('3;4'); +r($programTest->buildTreeTest($programs, 3)) && p('0:id,text') && e('5,孙项目集E'); +r($programTest->buildTreeTest($programs, 0)) && p('0:id,text,keys') && e('1,顶级项目集A,dingjixiangmujia djxmja');