* Refactor getModulesName method and change the test case.

This commit is contained in:
tianshujie
2023-08-21 09:33:10 +08:00
parent 986a822250
commit c916c19bef
11 changed files with 95 additions and 46 deletions
+1 -1
View File
@@ -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. */
+1 -1
View File
@@ -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, '');
}
+1 -1
View File
@@ -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;
}
+1 -1
View File
@@ -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';
+1 -1
View File
@@ -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')
+1 -1
View File
@@ -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
View File
@@ -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;
+40 -13
View File
@@ -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'); // 获取分支普通模块的以分支名为前缀的名称
-18
View File
@@ -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.
*
+15
View File
@@ -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
+23
View File
@@ -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