* Refactor getModulesName method and change the test case.
This commit is contained in:
+1
-1
@@ -1178,7 +1178,7 @@ class bugZen extends bug
|
||||
/* 获取所属模块列表。*/
|
||||
/* Get module option menu. */
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu($bug->product, 'bug', 0, $bug->branch);
|
||||
if(!isset($moduleOptionMenu[$bug->module])) $moduleOptionMenu += $this->tree->getModulesName($bug->module);
|
||||
if(!isset($moduleOptionMenu[$bug->module])) $moduleOptionMenu += $this->tree->getModulesName((array)$bug->module);
|
||||
|
||||
/* 获取该 bug 关联产品和分支下的 bug 列表。*/
|
||||
/* Get bugs of current product. */
|
||||
|
||||
@@ -3377,7 +3377,7 @@ class execution extends control
|
||||
|
||||
if(!isset($modules[$story->module]))
|
||||
{
|
||||
$storyModule = $this->tree->getModulesName($story->module);
|
||||
$storyModule = $this->tree->getModulesName((array)$story->module);
|
||||
$productName = count($products) > 1 ? $products[$story->product]->name : '';
|
||||
$modules[$story->module] = $productName . zget($storyModule, $story->module, '');
|
||||
}
|
||||
|
||||
@@ -445,7 +445,7 @@ class productplan extends control
|
||||
$modulePairs = $this->loadModel('tree')->getOptionMenu($plan->product, 'story', 0, 'all');
|
||||
foreach($planStories as $story)
|
||||
{
|
||||
if(!isset($modulePairs[$story->module])) $modulePairs += $this->tree->getModulesName($story->module);
|
||||
if(!isset($modulePairs[$story->module])) $modulePairs += $this->tree->getModulesName((array)$story->module);
|
||||
$storyIdList[] = $story->id;
|
||||
}
|
||||
|
||||
|
||||
@@ -376,7 +376,7 @@ class story extends control
|
||||
if(!$productReviewers and $product->acl != 'open') $productReviewers = $this->loadModel('user')->getProductViewListUsers($product, '', '', '', '');
|
||||
|
||||
/* Process the module when branch products are switched to normal products. */
|
||||
if($product->type == 'normal' and !empty($story->branch)) $this->view->moduleOptionMenu += $this->tree->getModulesName($story->module);
|
||||
if($product->type == 'normal' and !empty($story->branch)) $this->view->moduleOptionMenu += $this->tree->getModulesName((array)$story->module);
|
||||
|
||||
$storyBranch = $story->branch > 0 ? $story->branch : '0';
|
||||
$branch = $product->type == 'branch' ? $storyBranch : 'all';
|
||||
|
||||
@@ -984,7 +984,7 @@ class testcase extends control
|
||||
}
|
||||
}
|
||||
|
||||
if(!isset($moduleOptionMenu[$case->module])) $moduleOptionMenu += $this->tree->getModulesName($case->module);
|
||||
if(!isset($moduleOptionMenu[$case->module])) $moduleOptionMenu += $this->tree->getModulesName((array)$case->module);
|
||||
|
||||
/* Get product and branches. */
|
||||
if($this->app->tab == 'execution' or $this->app->tab == 'project')
|
||||
|
||||
@@ -1386,7 +1386,7 @@ class testtask extends control
|
||||
foreach($cases as $caseID => $case)
|
||||
{
|
||||
if($case->auto == 'auto' and $confirm == 'yes') unset($cases[$caseID]);
|
||||
$moduleOptionMenu += $this->tree->getModulesName($case->module);
|
||||
$moduleOptionMenu += $this->tree->getModulesName((array)$case->module);
|
||||
}
|
||||
if(empty($cases)) return print(js::locate($url));
|
||||
|
||||
|
||||
+11
-9
@@ -1698,18 +1698,20 @@ class treeModel extends model
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getModulesName($moduleIdList, $allPath = true, $branchPath = false)
|
||||
public function getModulesName(array $moduleIdList, bool $allPath = true, bool $branchPath = false): array
|
||||
{
|
||||
if(!$allPath) return $this->dao->select('id, name')->from(TABLE_MODULE)->where('id')->in($moduleIdList)->andWhere('deleted')->eq(0)->fetchPairs('id', 'name');
|
||||
|
||||
/* Get modules and submodules through id list. */
|
||||
$modules = $this->dao->select('id, name, path, branch')->from(TABLE_MODULE)->where('id')->in($moduleIdList)->andWhere('deleted')->eq(0)->fetchAll('path');
|
||||
$allModules = $this->dao->select('id, name')->from(TABLE_MODULE)->where('id')->in(join(array_keys($modules)))->andWhere('deleted')->eq(0)->fetchPairs('id', 'name');
|
||||
|
||||
/* Constructs a key-value pair for the module name:id. */
|
||||
$branchIDList = array();
|
||||
$modulePairs = array();
|
||||
$modulePairs = array();
|
||||
foreach($modules as $module)
|
||||
{
|
||||
$paths = explode(',', trim($module->path, ','));
|
||||
$paths = explode(',', trim($module->path, ','));
|
||||
$moduleName = '';
|
||||
foreach($paths as $path) $moduleName .= '/' . $allModules[$path];
|
||||
$modulePairs[$module->id] = $moduleName;
|
||||
@@ -1719,14 +1721,14 @@ class treeModel extends model
|
||||
|
||||
if(!$branchPath) return $modulePairs;
|
||||
|
||||
$branchs = $this->dao->select('id, name')->from(TABLE_BRANCH)->where('id')->in($branchIDList)->andWhere('deleted')->eq(0)->fetchALL('id');
|
||||
/* Prefixes the module name with the branch name. */
|
||||
$branchs = $this->dao->select('id, name')->from(TABLE_BRANCH)->where('id')->in($branchIDList)->andWhere('deleted')->eq(0)->fetchALL('id');
|
||||
foreach($modules as $module)
|
||||
{
|
||||
if(isset($modulePairs[$module->id]))
|
||||
{
|
||||
$branchName = isset($branchs[$module->branch]) ? '/' . $branchs[$module->branch]->name : '';
|
||||
$modulePairs[$module->id] = $branchName . $modulePairs[$module->id];
|
||||
}
|
||||
if(!isset($modulePairs[$module->id])) continue;
|
||||
|
||||
$branchName = isset($branchs[$module->branch]) ? '/' . $branchs[$module->branch]->name : '';
|
||||
$modulePairs[$module->id] = $branchName . $modulePairs[$module->id];
|
||||
}
|
||||
|
||||
return $modulePairs;
|
||||
|
||||
@@ -1,26 +1,53 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/tree.class.php';
|
||||
su('admin');
|
||||
|
||||
zdTable('module')->config('module', true)->gen(10);
|
||||
zdTable('branch')->config('branch', true)->gen(10);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 treeModel->getModulesName();
|
||||
timeout=0
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
测试获取module 1821 1981 的module name >> /产品模块1;/产品模块161
|
||||
测试获取module 1982 1621 的module name >> /产品模块162;/模块1601
|
||||
测试获取module 1822 22 的module name >> /产品模块2;/模块2
|
||||
测试获取module 1622 21 的module name >> /模块1602;/模块1
|
||||
|
||||
*/
|
||||
$moduleIDList = array(array(1821, 1981), array(1982, 1621), array(1822, 22), array(1622, 21));
|
||||
|
||||
$tree = new treeTest();
|
||||
$moduleIdList[0] = array(1, 2);
|
||||
$moduleIdList[1] = array(3);
|
||||
$moduleIdList[2] = array(5);
|
||||
$moduleIdList[3] = array(6);
|
||||
$moduleIdList[4] = array(7);
|
||||
$moduleIdList[5] = array(10);
|
||||
|
||||
r($tree->getModulesNameTest($moduleIDList[0])) && p('1821;1981') && e('/产品模块1;/产品模块161'); // 测试获取module 1821 1981 的module name
|
||||
r($tree->getModulesNameTest($moduleIDList[1])) && p('1982;1621') && e('/产品模块162;/模块1601'); // 测试获取module 1982 1621 的module name
|
||||
r($tree->getModulesNameTest($moduleIDList[2])) && p('1822;22') && e('/产品模块2;/模块2'); // 测试获取module 1822 22 的module name
|
||||
r($tree->getModulesNameTest($moduleIDList[3])) && p('1622;21') && e('/模块1602;/模块1'); // 测试获取module 1622 21 的module name
|
||||
global $tester;
|
||||
$treeModule = $tester->loadModel('tree');
|
||||
|
||||
r($treeModule->getModulesName($moduleIdList[0], false)) && p('1') && e('模块1'); // 获取父模块的名称
|
||||
r($treeModule->getModulesName($moduleIdList[1], false)) && p('3') && e('模块3'); // 获取子模块的名称
|
||||
r($treeModule->getModulesName($moduleIdList[2], false)) && p('5') && e('模块5'); // 获取普通模块的名称
|
||||
r($treeModule->getModulesName($moduleIdList[3], false)) && p('6') && e('模块6'); // 获取分支父模块的名称
|
||||
r($treeModule->getModulesName($moduleIdList[4], false)) && p('7') && e('模块7'); // 获取分支子模块的名称
|
||||
r($treeModule->getModulesName($moduleIdList[5], false)) && p('10') && e('模块10'); // 获取分支普通模块的名称
|
||||
|
||||
r($treeModule->getModulesName($moduleIdList[0], true)) && p('1') && e('/模块1'); // 获取父模块的全路径名称
|
||||
r($treeModule->getModulesName($moduleIdList[1], true)) && p('3') && e('/模块1/模块3'); // 获取子模块的全路径名称
|
||||
r($treeModule->getModulesName($moduleIdList[2], true)) && p('5') && e('/模块5'); // 获取普通模块的全路径名称
|
||||
r($treeModule->getModulesName($moduleIdList[3], true)) && p('6') && e('/模块6'); // 获取分支父模块的全路径名称
|
||||
r($treeModule->getModulesName($moduleIdList[4], true)) && p('7') && e('/模块6/模块7'); // 获取分支子模块的全路径名称
|
||||
r($treeModule->getModulesName($moduleIdList[5], true)) && p('10') && e('/模块10'); // 获取分支普通模块的全路径名称
|
||||
|
||||
r($treeModule->getModulesName($moduleIdList[0], false, true)) && p('1') && e('模块1'); // 获取父模块的以分支名为前缀的名称
|
||||
r($treeModule->getModulesName($moduleIdList[1], false, true)) && p('3') && e('模块3'); // 获取子模块的以分支名为前缀的名称
|
||||
r($treeModule->getModulesName($moduleIdList[2], false, true)) && p('5') && e('模块5'); // 获取普通模块的以分支名为前缀的名称
|
||||
r($treeModule->getModulesName($moduleIdList[3], false, true)) && p('6') && e('模块6'); // 获取分支父模块的以分支名为前缀的名称
|
||||
r($treeModule->getModulesName($moduleIdList[4], false, true)) && p('7') && e('模块7'); // 获取分支子模块的以分支名为前缀的名称
|
||||
r($treeModule->getModulesName($moduleIdList[5], false, true)) && p('10') && e('模块10'); // 获取分支普通模块的以分支名为前缀的名称
|
||||
|
||||
r($treeModule->getModulesName($moduleIdList[0], true, true)) && p('1') && e('/模块1'); // 获取父模块的以分支名为前缀的名称
|
||||
r($treeModule->getModulesName($moduleIdList[1], true, true)) && p('3') && e('/模块1/模块3'); // 获取子模块的以分支名为前缀的名称
|
||||
r($treeModule->getModulesName($moduleIdList[2], true, true)) && p('5') && e('/模块5'); // 获取普通模块的以分支名为前缀的名称
|
||||
r($treeModule->getModulesName($moduleIdList[3], true, true)) && p('6') && e('/分支1/模块6'); // 获取分支父模块的以分支名为前缀的名称
|
||||
r($treeModule->getModulesName($moduleIdList[4], true, true)) && p('7') && e('/分支1/模块6/模块7'); // 获取分支子模块的以分支名为前缀的名称
|
||||
r($treeModule->getModulesName($moduleIdList[5], true, true)) && p('10') && e('/分支1/模块10'); // 获取分支普通模块的以分支名为前缀的名称
|
||||
|
||||
@@ -545,24 +545,6 @@ class treeTest
|
||||
return $object;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test get modules name.
|
||||
*
|
||||
* @param array $moduleIdList
|
||||
* @param bool $allPath
|
||||
* @param bool $branchPath
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getModulesNameTest($moduleIdList, $allPath = true, $branchPath = false)
|
||||
{
|
||||
$objects = $this->objectModel->getModulesName($moduleIdList, $allPath, $branchPath);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $objects;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test update modules' order.
|
||||
*
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
title: branch
|
||||
author: Shujie Tian
|
||||
version: "1.0"
|
||||
fields:
|
||||
- field: id
|
||||
range: 1-10
|
||||
- field: product
|
||||
range: 1
|
||||
- field: name
|
||||
range: 1-10
|
||||
prefix: 分支
|
||||
- field: status
|
||||
range: active{5},closed{5}
|
||||
- field: order
|
||||
range: 1-10
|
||||
@@ -0,0 +1,23 @@
|
||||
title: zt_module
|
||||
author: Shujie Tian
|
||||
version: "1.0"
|
||||
fields:
|
||||
- field: id
|
||||
range: 1-100
|
||||
- field: root
|
||||
range: 1-10{10}
|
||||
- field: branch
|
||||
range: 0{5},1-5{5},0{70}
|
||||
- field: name
|
||||
range: 1-100
|
||||
prefix: 模块
|
||||
- field: parent
|
||||
range: 0{2},1{1},2{1},0{2},6{3},0{91}
|
||||
- field: path
|
||||
range: "`,1,`,`,2,`,`,1,3,`,`,2,4,`,`,5,`,`,6,`,`,6,7,`,`,6,8,`,`,6,9,`,`,10,`,`,11,`,`,12,`,`,13,`,`,14,`,`,15,`,`,16,`,`,17,`,`,18,`,`,19,`,`,20,`"
|
||||
- field: grade
|
||||
range: 1{2},2{2},1{2},2{3},1{91}
|
||||
- field: type
|
||||
range: task{10},story{10},doc{10},bug{10}
|
||||
- field: deleted
|
||||
range: 0
|
||||
Reference in New Issue
Block a user