Merge branch ztflow-yidong-release/21.7.2#wangyidong of zentao/zentaopms (#9396)
This commit is contained in:
@@ -12,7 +12,6 @@ timeout=0
|
||||
cid=1
|
||||
|
||||
- 测试替换看板执行的二级菜单第kanban条的link属性 @看板|execution|kanban|executionID=%s
|
||||
- 查看交付物菜单第deliverable条的link属性 @交付物|execution|deliverable|executionID=%s
|
||||
- 查看构建菜单第build条的link属性 @构建|execution|build|executionID=%s
|
||||
- 查看累积流图菜单第CFD条的link属性 @累积流图|execution|cfd|executionID=%s
|
||||
- 查看设置菜单第settings条的link属性 @设置|execution|view|executionID=%s
|
||||
@@ -20,8 +19,8 @@ cid=1
|
||||
*/
|
||||
|
||||
$executionTester = new executionTest();
|
||||
r($executionTester->setKanbanMenuTest()) && p('kanban:link') && e('看板|execution|kanban|executionID=%s'); // 测试替换看板执行的二级菜单
|
||||
r($executionTester->setKanbanMenuTest()) && p('deliverable:link') && e('交付物|execution|deliverable|executionID=%s'); // 查看交付物菜单
|
||||
r($executionTester->setKanbanMenuTest()) && p('build:link') && e('构建|execution|build|executionID=%s'); // 查看构建菜单
|
||||
r($executionTester->setKanbanMenuTest()) && p('CFD:link') && e('累积流图|execution|cfd|executionID=%s'); // 查看累积流图菜单
|
||||
r($executionTester->setKanbanMenuTest()) && p('settings:link') && e('设置|execution|view|executionID=%s'); // 查看设置菜单
|
||||
$menu = $executionTester->setKanbanMenuTest();
|
||||
r($menu) && p('kanban:link') && e('看板|execution|kanban|executionID=%s'); // 测试替换看板执行的二级菜单
|
||||
r($menu) && p('build:link') && e('构建|execution|build|executionID=%s'); // 查看构建菜单
|
||||
r($menu) && p('CFD:link') && e('累积流图|execution|cfd|executionID=%s'); // 查看累积流图菜单
|
||||
r($menu) && p('settings:link') && e('设置|execution|view|executionID=%s'); // 查看设置菜单
|
||||
|
||||
@@ -43,42 +43,42 @@ include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
global $tester;
|
||||
$product = $tester->loadModel('product');
|
||||
|
||||
$product->app->moduleName = 'product';
|
||||
$product->app->methodName = 'browse';
|
||||
$product->app->rawModule = 'product';
|
||||
$product->app->rawMethod = 'browse';
|
||||
r($product->computeLocate4DropMenu()) && p('0,1') && e('product,browse');
|
||||
|
||||
$product->app->moduleName = 'story';
|
||||
$product->app->methodName = 'view';
|
||||
$product->app->rawModule = 'story';
|
||||
$product->app->rawMethod = 'view';
|
||||
r($product->computeLocate4DropMenu()) && p('0,1') && e('product,browse');
|
||||
|
||||
$product->app->moduleName = 'story';
|
||||
$product->app->methodName = 'create';
|
||||
$product->app->rawModule = 'story';
|
||||
$product->app->rawMethod = 'create';
|
||||
r($product->computeLocate4DropMenu()) && p('0,1') && e('story,create');
|
||||
|
||||
$product->app->moduleName = 'story';
|
||||
$product->app->methodName = 'report';
|
||||
$product->app->rawModule = 'story';
|
||||
$product->app->rawMethod = 'report';
|
||||
r($product->computeLocate4DropMenu()) && p('0,1') && e('product,browse');
|
||||
|
||||
$product->app->moduleName = 'product';
|
||||
$product->app->methodName = 'report';
|
||||
$product->app->rawModule = 'product';
|
||||
$product->app->rawMethod = 'report';
|
||||
r($product->computeLocate4DropMenu()) && p('0,1') && e('product,browse');
|
||||
|
||||
$product->app->moduleName = 'bug';
|
||||
$product->app->methodName = 'edit';
|
||||
$product->app->rawModule = 'bug';
|
||||
$product->app->rawMethod = 'edit';
|
||||
r($product->computeLocate4DropMenu()) && p('0,1') && e('bug,browse');
|
||||
|
||||
$product->app->moduleName = 'bug';
|
||||
$product->app->methodName = 'view';
|
||||
$product->app->rawModule = 'bug';
|
||||
$product->app->rawMethod = 'view';
|
||||
r($product->computeLocate4DropMenu()) && p('0,1') && e('bug,view');
|
||||
|
||||
$product->app->moduleName = 'bug';
|
||||
$product->app->methodName = 'report';
|
||||
$product->app->rawModule = 'bug';
|
||||
$product->app->rawMethod = 'report';
|
||||
r($product->computeLocate4DropMenu()) && p('0,1') && e('bug,browse');
|
||||
|
||||
$product->app->moduleName = 'testcase';
|
||||
$product->app->methodName = 'edit';
|
||||
$product->app->rawModule = 'testcase';
|
||||
$product->app->rawMethod = 'edit';
|
||||
r($product->computeLocate4DropMenu()) && p('0,1') && e('testcase,browse');
|
||||
|
||||
$product->app->moduleName = 'testcase';
|
||||
$product->app->methodName = 'view';
|
||||
$product->app->rawModule = 'testcase';
|
||||
$product->app->rawMethod = 'view';
|
||||
r($product->computeLocate4DropMenu()) && p('0,1') && e('testcase,browse');
|
||||
|
||||
@@ -13,6 +13,12 @@ title=测试 programTao::buildProgramActionsMap();
|
||||
timeout=0
|
||||
cid=1
|
||||
|
||||
- 测试生成项目集id为1的操作按钮数据。第0条的name属性 @close
|
||||
- 测试生成项目集id为2的操作按钮数据。第0条的name属性 @close
|
||||
- 测试生成敏捷项目的操作按钮数据。第0条的name属性 @close
|
||||
- 测试生成瀑布项目的操作按钮数据。第0条的name属性 @close
|
||||
- 测试生成看板项目的操作按钮数据。第0条的name属性 @close
|
||||
|
||||
*/
|
||||
|
||||
$objectIdList = array(1, 2, 11, 60, 100);
|
||||
|
||||
@@ -6,6 +6,21 @@ title=测试 programTao::getTaskStats();
|
||||
timeout=0
|
||||
cid=1
|
||||
|
||||
- 获取系统中所有项目的任务统计信息
|
||||
- 第11条的totalEstimate属性 @51
|
||||
- 第11条的totalConsumed属性 @13
|
||||
- 第11条的totalLeft属性 @44
|
||||
- 第11条的teamCount属性 @0
|
||||
- 第11条的totalLeftNotDel属性 @44
|
||||
- 第11条的totalConsumedNotDel属性 @13
|
||||
- 获取系统中项目ID=60的任务统计信息
|
||||
- 第60条的totalEstimate属性 @21
|
||||
- 第60条的totalConsumed属性 @7
|
||||
- 第60条的totalLeft属性 @18
|
||||
- 第60条的teamCount属性 @0
|
||||
- 第60条的totalLeftNotDel属性 @18
|
||||
- 第60条的totalConsumedNotDel属性 @7
|
||||
|
||||
*/
|
||||
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
@@ -20,5 +35,5 @@ $projectIdList[] = array();
|
||||
$projectIdList[] = array(60);
|
||||
|
||||
$programTester = new programTest();
|
||||
r($programTester->getTaskStatsTest($projectIdList[0])) && p('11:totalEstimate,totalConsumed,totalLeft,teamCount,totalLeftNotDel,totalConsumedNotDel') && e('46,13,39,0,39,13'); // 获取系统中所有项目的任务统计信息
|
||||
r($programTester->getTaskStatsTest($projectIdList[1])) && p('60:totalEstimate,totalConsumed,totalLeft,teamCount,totalLeftNotDel,totalConsumedNotDel') && e('18,7,15,0,15,7'); // 获取系统中项目ID=60的任务统计信息
|
||||
r($programTester->getTaskStatsTest($projectIdList[0])) && p('11:totalEstimate,totalConsumed,totalLeft,teamCount,totalLeftNotDel,totalConsumedNotDel') && e('51,13,44,0,44,13'); // 获取系统中所有项目的任务统计信息
|
||||
r($programTester->getTaskStatsTest($projectIdList[1])) && p('60:totalEstimate,totalConsumed,totalLeft,teamCount,totalLeftNotDel,totalConsumedNotDel') && e('21,7,18,0,18,7'); // 获取系统中项目ID=60的任务统计信息
|
||||
|
||||
@@ -8,29 +8,29 @@ cid=0
|
||||
|
||||
- 禅道版本为开源版,检查任务关系。 @0
|
||||
- 检查第一条任务关系
|
||||
- 属性source @1-1
|
||||
- 属性target @1-2
|
||||
- 属性source @1
|
||||
- 属性target @2
|
||||
- 属性type @0
|
||||
- 检查第二条任务关系
|
||||
- 属性source @2-2
|
||||
- 属性target @2-3
|
||||
- 属性source @2
|
||||
- 属性target @3
|
||||
- 属性type @2
|
||||
- 检查第三条任务关系
|
||||
- 属性source @3-3
|
||||
- 属性target @3-4
|
||||
- 属性source @3
|
||||
- 属性target @4
|
||||
- 属性type @1
|
||||
- 检查第四条任务关系
|
||||
- 属性source @1-11
|
||||
- 属性target @1-12
|
||||
- 属性type @1
|
||||
- 检查第五条任务关系
|
||||
- 属性source @2-12
|
||||
- 属性target @2-13
|
||||
- 属性source @4
|
||||
- 属性target @5
|
||||
- 属性type @3
|
||||
- 检查第六条任务关系
|
||||
- 属性source @3-13
|
||||
- 属性target @3-14
|
||||
- 检查第五条任务关系
|
||||
- 属性source @5
|
||||
- 属性target @6
|
||||
- 属性type @0
|
||||
- 检查第六条任务关系
|
||||
- 属性source @6
|
||||
- 属性target @7
|
||||
- 属性type @2
|
||||
|
||||
*/
|
||||
|
||||
@@ -39,7 +39,7 @@ su('admin');
|
||||
|
||||
$relationoftasks = zenData('relationoftasks');
|
||||
$relationoftasks->id->range('1-100');
|
||||
$relationoftasks->execution->range('1-10');
|
||||
$relationoftasks->project->range('1');
|
||||
$relationoftasks->pretask->range('1-100');
|
||||
$relationoftasks->condition->range('end{2},begin{2}');
|
||||
$relationoftasks->task->range('2-100');
|
||||
@@ -49,16 +49,16 @@ $relationoftasks->gen(20);
|
||||
global $tester;
|
||||
$tester->loadModel('programplan');
|
||||
|
||||
$planIdList = array(1,2,3);
|
||||
$planId = 1;
|
||||
|
||||
$tester->programplan->config->edition = 'open';
|
||||
r($tester->programplan->buildGanttLinks($planIdList)) && p() && e("0"); //禅道版本为开源版,检查任务关系。
|
||||
r($tester->programplan->buildGanttLinks($planId)) && p() && e("0"); //禅道版本为开源版,检查任务关系。
|
||||
|
||||
$tester->programplan->config->edition = 'max';
|
||||
$links = $tester->programplan->buildGanttLinks($planIdList);
|
||||
r($links[0]) && p('source,target,type') && e('1,2,0'); //检查第一条任务关系
|
||||
r($links[1]) && p('source,target,type') && e('2,3,2'); //检查第二条任务关系
|
||||
r($links[2]) && p('source,target,type') && e('3,4,1'); //检查第三条任务关系
|
||||
r($links[3]) && p('source,target,type') && e('11,12,1'); //检查第四条任务关系
|
||||
r($links[4]) && p('source,target,type') && e('12,13,3'); //检查第五条任务关系
|
||||
r($links[5]) && p('source,target,type') && e('13,14,0'); //检查第六条任务关系
|
||||
$links = $tester->programplan->buildGanttLinks($planId);
|
||||
r($links[0]) && p('source,target,type') && e('1,2,0'); //检查第一条任务关系
|
||||
r($links[1]) && p('source,target,type') && e('2,3,2'); //检查第二条任务关系
|
||||
r($links[2]) && p('source,target,type') && e('3,4,1'); //检查第三条任务关系
|
||||
r($links[3]) && p('source,target,type') && e('4,5,3'); //检查第四条任务关系
|
||||
r($links[4]) && p('source,target,type') && e('5,6,0'); //检查第五条任务关系
|
||||
r($links[5]) && p('source,target,type') && e('6,7,2'); //检查第六条任务关系
|
||||
|
||||
@@ -17,13 +17,13 @@ cid=0
|
||||
- 属性realBegan @``
|
||||
- 属性realEnd @``
|
||||
- 传入进行中的任务数据
|
||||
- 属性start @2023-10-01
|
||||
- 属性end @2023-10-01
|
||||
- 属性start @2023-09-28
|
||||
- 属性end @2023-09-29
|
||||
- 属性realBegan @2023-10-01
|
||||
- 属性realEnd @``
|
||||
- 传入已完成的任务数据
|
||||
- 属性start @2023-10-01
|
||||
- 属性end @2023-10-02
|
||||
- 属性start @2023-09-28
|
||||
- 属性end @2023-09-29
|
||||
- 属性realBegan @2023-10-01
|
||||
- 属性realEnd @2023-10-02
|
||||
|
||||
@@ -54,8 +54,8 @@ r($tester->programplan->getTaskDateLimit($task)) && p('start,end,realBegan,re
|
||||
|
||||
$task->realStarted = '2023-10-01';
|
||||
$task->status = 'doing';
|
||||
r($tester->programplan->getTaskDateLimit($task)) && p('start,end,realBegan,realEnd') && e('2023-10-01,2023-10-01,2023-10-01,``'); //传入进行中的任务数据
|
||||
r($tester->programplan->getTaskDateLimit($task)) && p('start,end,realBegan,realEnd') && e('2023-09-28,2023-09-29,2023-10-01,``'); //传入进行中的任务数据
|
||||
|
||||
$task->finishedDate = '2023-10-02';
|
||||
$task->status = 'done';
|
||||
r($tester->programplan->getTaskDateLimit($task)) && p('start,end,realBegan,realEnd') && e('2023-10-01,2023-10-02,2023-10-01,2023-10-02'); //传入已完成的任务数据
|
||||
r($tester->programplan->getTaskDateLimit($task)) && p('start,end,realBegan,realEnd') && e('2023-09-28,2023-09-29,2023-10-01,2023-10-02'); //传入已完成的任务数据
|
||||
|
||||
@@ -2,16 +2,36 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Test searchTao->processBuildinFields()
|
||||
*
|
||||
* @title=测试 searchTao->processBuildinFields();
|
||||
* @timeout=0
|
||||
* @cid=1
|
||||
title=测试 searchTao->processBuildinFields();
|
||||
cid=1
|
||||
|
||||
- projectstory
|
||||
- 属性module @story
|
||||
- 属性fields @title,id,keywords,status,pri,module,stage,grade,plan,estimate,source,sourceNote,fromBug,category,openedBy,reviewedBy,result,assignedTo,closedBy,lastEditedBy,mailto,closedReason,version,openedDate,reviewedDate,assignedDate,closedDate,lastEditedDate,activatedDate
|
||||
- 属性maxCount @500
|
||||
- bug
|
||||
- 属性module @bug
|
||||
- 属性fields @title,module,keywords,steps,assignedTo,resolvedBy,status,confirmed,story,project,branch,plan,id,execution,severity,pri,type,os,browser,resolution,activatedCount,toTask,toStory,openedBy,closedBy,lastEditedBy,mailto,openedBuild,resolvedBuild,openedDate,assignedDate,resolvedDate,closedDate,lastEditedDate,deadline,activatedDate
|
||||
- 属性maxCount @500
|
||||
- product
|
||||
- 属性module @story
|
||||
- 属性fields @title,id,keywords,status,pri,module,stage,grade,plan,estimate,source,sourceNote,fromBug,category,openedBy,reviewedBy,result,assignedTo,closedBy,lastEditedBy,mailto,closedReason,version,openedDate,reviewedDate,assignedDate,closedDate,lastEditedDate,activatedDate
|
||||
- 属性maxCount @500
|
||||
- testcase
|
||||
- 属性module @testcase
|
||||
- 属性fields @title,story,id,keywords,lastEditedBy,type,auto,openedBy,status,stage,module,pri,lib,lastRunner,lastRunResult,lastRunDate,openedDate,lastEditedDate,scene
|
||||
- 属性maxCount @500
|
||||
- caselib
|
||||
- 属性module @caselib
|
||||
- 属性fields @title,story,id,keywords,lastEditedBy,type,auto,openedBy,status,stage,module,pri,openedDate,lastEditedDate
|
||||
- 属性maxCount @500
|
||||
|
||||
*/
|
||||
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/search.unittest.class.php';
|
||||
|
||||
zenData('product')->gen(2);
|
||||
su('admin');
|
||||
|
||||
$search = new searchTest();
|
||||
|
||||
@@ -219,7 +219,7 @@ class settingTest
|
||||
$params['section'] = 'global';
|
||||
$params['key'] = 'version';
|
||||
|
||||
$objects = $this->objectModel->createDAO($params)->fetchAll();
|
||||
$objects = $this->objectModel->createDAO($params)->fetchAll('', false);
|
||||
|
||||
return $objects;
|
||||
}
|
||||
|
||||
@@ -539,7 +539,14 @@ class storyTao extends storyModel
|
||||
if(strpos($orderBy, 'version_') !== false) $orderBy = str_replace('version_', 't2.version_', $orderBy);
|
||||
|
||||
$unclosedStatus = $this->getUnclosedStatusKeys();
|
||||
return $storyDAO->beginIF(!empty($productID) && (!$project->charter || ($project->charter && $project->hasProduct)))->andWhere('t1.product')->eq($productID)->fi()
|
||||
$assignProduct = false;
|
||||
if(!empty($productID) && !empty($project))
|
||||
{
|
||||
if(empty($project->charter)) $assignProduct = true;
|
||||
if(!empty($project->charter) && $project->hasProduct) $assignProduct = true;
|
||||
}
|
||||
|
||||
return $storyDAO->beginIF($assignProduct)->andWhere('t1.product')->eq($productID)->fi()
|
||||
->beginIF($type == 'bybranch' and $branch !== '')->andWhere('t2.branch')->in("0,$branch")->fi()
|
||||
->beginIF(strpos('draft|reviewing|changing|closed', $type) !== false)->andWhere('t2.status')->eq($type)->fi()
|
||||
->beginIF($type == 'unclosed')->andWhere('t2.status')->in($unclosedStatus)->fi()
|
||||
|
||||
@@ -636,6 +636,7 @@ class storyTest
|
||||
unset($unclosedStatus['closed']);
|
||||
|
||||
$storyIdList = array('1,2,3,4,5,6,7');
|
||||
$project = $this->objectModel->dao->select("*")->from(TABLE_PROJECT)->where('id')->eq($projectID)->fetch();
|
||||
$storyDAO = $this->objectModel->dao->select("DISTINCT t2.*")->from(TABLE_PROJECTSTORY)->alias('t1')
|
||||
->leftJoin(TABLE_STORY)->alias('t2')->on('t1.story = t2.id')
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t3')->on('t2.product = t3.id')
|
||||
@@ -644,7 +645,7 @@ class storyTest
|
||||
->andWhere('t2.deleted')->eq(0)
|
||||
->andWhere('t3.deleted')->eq(0);
|
||||
|
||||
return $this->objectModel->fetchProjectStories($storyDAO, $productID, $type, $branch, $storyIdList, 't2.id_desc', $pager);
|
||||
return $this->objectModel->fetchProjectStories($storyDAO, $productID, $type, $branch, $storyIdList, 't2.id_desc', $pager, empty($project) ? null : $project);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -818,7 +819,7 @@ class storyTest
|
||||
$this->objectModel->doCreateSpec($storyID, $story, $files);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
return $this->objectModel->dao->select('*')->from(TABLE_STORYSPEC)->fetchAll();
|
||||
return $this->objectModel->dao->select('*')->from(TABLE_STORYSPEC)->fetchAll('', false);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -62,7 +62,7 @@ $story->gen(11)->fixPath();
|
||||
|
||||
$task = zenData('task');
|
||||
$task->story->range('1-5');
|
||||
$task->gen('10');
|
||||
$task->gen('10')->fixPath();
|
||||
|
||||
$bug = zenData('bug');
|
||||
$bug->story->range('1-5');
|
||||
@@ -85,7 +85,7 @@ global $tester;
|
||||
$tester->loadModel('story');
|
||||
|
||||
$allStoryIdList = array(1,2,3,4,5,6,7,8,9,10,11);
|
||||
$stories = $tester->story->dao->select('*')->from(TABLE_STORY)->orderBy('id_desc')->fetchAll('id');
|
||||
$stories = $tester->story->dao->select('*')->from(TABLE_STORY)->orderBy('id_desc')->fetchAll('id', false);
|
||||
$leafNodes = $tester->story->getLeafNodes($stories);
|
||||
$allStories = $tester->story->dao->select('id,parent,isParent,root,path,grade,product,pri,type,status,stage,title,estimate')->from(TABLE_STORY)->where('root')->in('1,11')->andWhere('deleted')->eq(0)->orderBy('type,grade,parent')->fetchAll('id');
|
||||
|
||||
@@ -99,7 +99,7 @@ r((array)$epicItems['lane_4']['bug'][0]) && p('id') && e('4');
|
||||
r((array)$epicItems['lane_4']['case'][0]) && p('id') && e('4');
|
||||
|
||||
$allStoryIdList = array(2,3,4,5,6,7,8,9,10);
|
||||
$stories = $tester->story->dao->select('*')->from(TABLE_STORY)->where('id')->in('2,3,4')->orderBy('id_desc')->fetchAll('id');
|
||||
$stories = $tester->story->dao->select('*')->from(TABLE_STORY)->where('id')->in('2,3,4')->orderBy('id_desc')->fetchAll('id', false);
|
||||
$leafNodes = $tester->story->getLeafNodes($stories, 'epic');
|
||||
$allStories = $tester->story->dao->select('id,parent,isParent,root,path,grade,product,pri,type,status,stage,title,estimate')->from(TABLE_STORY)->where('root')->in('1')->andWhere('deleted')->eq(0)->orderBy('type,grade,parent')->fetchAll('id');
|
||||
|
||||
@@ -111,7 +111,7 @@ r((array)$epicItems['lane_4']['bug'][0]) && p('id') && e('4');
|
||||
r((array)$epicItems['lane_4']['case'][0]) && p('id') && e('4');
|
||||
|
||||
$allStoryIdList = array(5,6,7,8,9,10);
|
||||
$stories = $tester->story->dao->select('*')->from(TABLE_STORY)->where('id')->in('5,6,7,8,9,10')->orderBy('id_desc')->fetchAll('id');
|
||||
$stories = $tester->story->dao->select('*')->from(TABLE_STORY)->where('id')->in('5,6,7,8,9,10')->orderBy('id_desc')->fetchAll('id', false);
|
||||
$leafNodes = $tester->story->getLeafNodes($stories, 'epic');
|
||||
$allStories = $tester->story->dao->select('id,parent,isParent,root,path,grade,product,pri,type,status,stage,title,estimate')->from(TABLE_STORY)->where('root')->in('1')->andWhere('deleted')->eq(0)->orderBy('type,grade,parent')->fetchAll('id');
|
||||
|
||||
@@ -120,4 +120,4 @@ r((array)$epicItems['lane_10']['requirement_2'][0]) && p('id') && e('3');
|
||||
r((array)$epicItems['lane_10']['project'][0]) && p('id') && e('1');
|
||||
r((array)$epicItems['lane_5']['task'][0]) && p('id') && e('5');
|
||||
r((array)$epicItems['lane_5']['bug'][0]) && p('id') && e('5');
|
||||
r((array)$epicItems['lane_5']['case'][0]) && p('id') && e('5');
|
||||
r((array)$epicItems['lane_5']['case'][0]) && p('id') && e('5');
|
||||
|
||||
@@ -50,8 +50,8 @@ $_SESSION['executionStoryBrowseType'] = 'changing';
|
||||
r(count($storyTest->fetchExecutionStoriesTest($executionID[1], $productID[1]))) && p() && e('5'); //传入产品,传入执行,设置SESSION。
|
||||
|
||||
$storyTest->objectModel->app->loadClass('pager', $static = true);
|
||||
$storyTest->objectModel->app->moduleName = 'product';
|
||||
$storyTest->objectModel->app->methodName = 'track';
|
||||
$storyTest->objectModel->app->rawModule = 'product';
|
||||
$storyTest->objectModel->app->rawMethod = 'track';
|
||||
$_SESSION['executionStoryBrowseType'] = '';
|
||||
$pager = new pager(0, 5, 1);
|
||||
r(count($storyTest->fetchExecutionStoriesTest($executionID[1], $productID[1], $pager))) && p() && e('5'); //分页获取需求。
|
||||
|
||||
@@ -59,7 +59,7 @@ r(count($storyTest->fetchProjectStoriesTest($productID[1], $projectID[1], 'linke
|
||||
r(count($storyTest->fetchProjectStoriesTest($productID[1], $projectID[1], 'unlinkedexecution'))) && p() && e('24'); //传入项目,获取未关联执行的需求。
|
||||
|
||||
$storyTest->objectModel->app->loadClass('pager', $static = true);
|
||||
$storyTest->objectModel->app->moduleName = 'product';
|
||||
$storyTest->objectModel->app->methodName = 'track';
|
||||
$storyTest->objectModel->app->rawModule = 'product';
|
||||
$storyTest->objectModel->app->rawMethod = 'track';
|
||||
$pager = new pager(0, 5, 1);
|
||||
r(count($storyTest->fetchProjectStoriesTest($productID[1], $projectID[1], 'unclosed', '', $pager))) && p() && e('5'); //分页获取需求。
|
||||
|
||||
@@ -70,8 +70,8 @@ r($storyTest->getExecutionStoriesBySearchTest($executionID[1], $queryID[0], $pro
|
||||
r($storyTest->getExecutionStoriesBySearchTest($executionID[1], $queryID[0], $productID[1])) && p() && e('9'); //传入执行 ID,传入产品 ID。
|
||||
|
||||
$storyTest->objectModel->app->loadClass('pager', $static = true);
|
||||
$storyTest->objectModel->app->moduleName = 'product';
|
||||
$storyTest->objectModel->app->methodName = 'track';
|
||||
$storyTest->objectModel->app->rawModule = 'product';
|
||||
$storyTest->objectModel->app->rawMethod = 'track';
|
||||
$pager = new pager(0, 5, 1);
|
||||
$excludeStories = array(2, 4);
|
||||
r($storyTest->getExecutionStoriesBySearchTest($executionID[1], $queryID[0], $productID[1], $excludeStories)) && p() && e('7'); //传入排除需求号。
|
||||
|
||||
@@ -33,7 +33,7 @@ su('admin');
|
||||
global $tester;
|
||||
$tester->loadModel('story');
|
||||
|
||||
$stories = $tester->story->dao->select('*')->from(TABLE_STORY)->where('id')->in('1')->orderBy('id_desc')->fetchAll('id');
|
||||
$stories = $tester->story->dao->select('*')->from(TABLE_STORY)->where('id')->in('1')->orderBy('id_desc')->fetchAll('id', false);
|
||||
$allStories = $tester->story->dao->select('id,parent,isParent,root,path,grade,product,pri,type,status,stage,title,estimate')->from(TABLE_STORY)->where('deleted')->eq(0)->orderBy('id_desc')->fetchAll('id');
|
||||
|
||||
$newStories = $tester->story->mergeChildrenForTrack(array(), array(), 'epic');
|
||||
@@ -48,17 +48,17 @@ r(count($newStories)) && p() && e('0'); //stories传入空参数,检查new
|
||||
$newStories = $tester->story->mergeChildrenForTrack($allStories, $stories, 'epic');
|
||||
r(implode(';', array_keys($newStories))) && p() && e('1;4;3;10;9;8;2;7;6;5'); //传入正常的业务需求,检查newStories。
|
||||
|
||||
$stories = $tester->story->dao->select('*')->from(TABLE_STORY)->where('id')->in('3')->orderBy('id_desc')->fetchAll('id');
|
||||
$stories = $tester->story->dao->select('*')->from(TABLE_STORY)->where('id')->in('3')->orderBy('id_desc')->fetchAll('id', false);
|
||||
$allStories = $tester->story->dao->select('id,parent,isParent,root,path,grade,product,pri,type,status,stage,title,estimate')->from(TABLE_STORY)->where('deleted')->eq(0)->orderBy('id_desc')->fetchAll('id');
|
||||
$newStories = $tester->story->mergeChildrenForTrack($allStories, $stories, 'requirement');
|
||||
r(implode(';', array_keys($newStories))) && p() && e('3;10;9;8'); //传入正常用户需求,检查newStories。
|
||||
|
||||
$stories = $tester->story->dao->select('*')->from(TABLE_STORY)->where('id')->in('3')->orderBy('id_desc')->fetchAll('id');
|
||||
$stories = $tester->story->dao->select('*')->from(TABLE_STORY)->where('id')->in('3')->orderBy('id_desc')->fetchAll('id', false);
|
||||
$allStories = $tester->story->dao->select('id,parent,isParent,root,path,grade,product,pri,type,status,stage,title,estimate')->from(TABLE_STORY)->where('deleted')->eq(0)->orderBy('id_desc')->fetchAll('id');
|
||||
$newStories = $tester->story->mergeChildrenForTrack($allStories, $stories, 'story');
|
||||
r(count($newStories)) && p() && e('0'); //传入错误的用户参数,检查newStories。
|
||||
|
||||
$stories = $tester->story->dao->select('*')->from(TABLE_STORY)->where('id')->in('8')->orderBy('id_desc')->fetchAll('id');
|
||||
$stories = $tester->story->dao->select('*')->from(TABLE_STORY)->where('id')->in('8')->orderBy('id_desc')->fetchAll('id', false);
|
||||
$allStories = $tester->story->dao->select('id,parent,isParent,root,path,grade,product,pri,type,status,stage,title,estimate')->from(TABLE_STORY)->where('deleted')->eq(0)->orderBy('id_desc')->fetchAll('id');
|
||||
$newStories = $tester->story->mergeChildrenForTrack($allStories, $stories, 'story');
|
||||
r(reset($newStories)) && p('id') && e('8'); //传入正常的研发需求,检查newStories。
|
||||
r(reset($newStories)) && p('id') && e('8'); //传入正常的研发需求,检查newStories。
|
||||
|
||||
@@ -18,7 +18,7 @@ cid=0
|
||||
- 执行task模块的createAutoUpdateTaskActionTest方法,参数是$oldParentTask 属性action @activated
|
||||
- 执行task模块的createAutoUpdateTaskActionTest方法,参数是$oldParentTask 属性action @started
|
||||
- 执行task模块的createAutoUpdateTaskActionTest方法,参数是$oldParentTask 属性action @activated
|
||||
- 执行task模块的createAutoUpdateTaskActionTest方法,参数是$oldParentTask 属性action @finished
|
||||
- 执行task模块的createAutoUpdateTaskActionTest方法,参数是$oldParentTask @0
|
||||
- 执行task模块的createAutoUpdateTaskActionTest方法,参数是$oldParentTask 属性action @finished
|
||||
- 执行task模块的createAutoUpdateTaskActionTest方法,参数是$oldParentTask 属性action @finished
|
||||
- 执行task模块的createAutoUpdateTaskActionTest方法,参数是$oldParentTask 属性action @finished
|
||||
@@ -41,6 +41,7 @@ cid=0
|
||||
|
||||
*/
|
||||
|
||||
zenData('action')->gen(0);
|
||||
zenData('user')->loadYaml('user')->gen(5);
|
||||
zenData('project')->loadYaml('project')->gen(3);
|
||||
su('user4');
|
||||
@@ -77,7 +78,7 @@ r($task->createAutoUpdateTaskActionTest($oldParentTask)) && p('action') && e('ac
|
||||
|
||||
$oldParentTask->id = 3;
|
||||
$oldParentTask->status = 'done';
|
||||
r($task->createAutoUpdateTaskActionTest($oldParentTask)) && p('action') && e('finished');
|
||||
r($task->createAutoUpdateTaskActionTest($oldParentTask)) && p() && e('0');
|
||||
$oldParentTask->status = 'cancel';
|
||||
r($task->createAutoUpdateTaskActionTest($oldParentTask)) && p('action') && e('finished');
|
||||
$oldParentTask->status = 'wait';
|
||||
|
||||
@@ -3,7 +3,27 @@
|
||||
/**
|
||||
title=测试 userTao->fetchExecutionTaskCount();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
- 传入空数组,返回空数组。 @0
|
||||
- 用户 admin 没有参与执行,返回空数组。 @0
|
||||
- 用户 user1 参与了 5 个执行。 @5
|
||||
- 执行 1 中指派给 user1 的任务数为 3。属性1 @3
|
||||
- 执行 3 中指派给 user1 的任务数为 4。属性3 @4
|
||||
- 执行 4 中指派给 user1 的任务数为 2。属性4 @2
|
||||
- 执行 5 中指派给 user1 的任务数为 3。属性5 @3
|
||||
- 用户 user2 参与了 5 个执行。 @5
|
||||
- 执行 1 中指派给 user2 的任务数为 5。属性1 @5
|
||||
- 执行 2 中指派给 user2 的任务数为 7。属性2 @7
|
||||
- 执行 3 中指派给 user2 的任务数为 3。属性3 @3
|
||||
- 执行 4 中指派给 user2 的任务数为 5。属性4 @5
|
||||
- 执行 5 中指派给 user2 的任务数为 4。属性5 @4
|
||||
- 用户 user3 参与了 5 个执行。 @5
|
||||
- 执行 1 中指派给 user3 的任务数为 1。属性1 @1
|
||||
- 执行 2 中指派给 user3 的任务数为 1。属性2 @1
|
||||
- 执行 3 中指派给 user3 的任务数为 2。属性3 @2
|
||||
- 执行 4 中指派给 user3 的任务数为 1。属性4 @1
|
||||
- 执行 5 中指派给 user3 的任务数为 2。属性5 @2
|
||||
|
||||
*/
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/user.unittest.class.php';
|
||||
@@ -25,11 +45,11 @@ r($userTest->fetchExecutionTaskCountTest('user1', array())) && p() && e
|
||||
r($userTest->fetchExecutionTaskCountTest('admin', $executionIdList)) && p() && e(0); // 用户 admin 没有参与执行,返回空数组。
|
||||
|
||||
$tasks = $userTest->fetchExecutionTaskCountTest('user1', $executionIdList);
|
||||
r(count($tasks)) && p() && e(4); // 用户 user1 参与了 4 个执行。
|
||||
r($tasks) && p(1) && e(2); // 执行 1 中指派给 user1 的任务数为 2。
|
||||
r($tasks) && p(3) && e(2); // 执行 3 中指派给 user1 的任务数为 2。
|
||||
r($tasks) && p(4) && e(1); // 执行 4 中指派给 user1 的任务数为 1。
|
||||
r($tasks) && p(5) && e(1); // 执行 5 中指派给 user1 的任务数为 1。
|
||||
r(count($tasks)) && p() && e(5); // 用户 user1 参与了 5 个执行。
|
||||
r($tasks) && p(1) && e(3); // 执行 1 中指派给 user1 的任务数为 3。
|
||||
r($tasks) && p(3) && e(4); // 执行 3 中指派给 user1 的任务数为 4。
|
||||
r($tasks) && p(4) && e(2); // 执行 4 中指派给 user1 的任务数为 2。
|
||||
r($tasks) && p(5) && e(3); // 执行 5 中指派给 user1 的任务数为 3。
|
||||
|
||||
$tasks = $userTest->fetchExecutionTaskCountTest('user2', $executionIdList);
|
||||
r(count($tasks)) && p() && e(5); // 用户 user2 参与了 5 个执行。
|
||||
|
||||
@@ -7,17 +7,25 @@ su('admin');
|
||||
/**
|
||||
|
||||
title=测试 weeklyModel->getStaff();
|
||||
cid=1
|
||||
pid=1
|
||||
cid=0
|
||||
|
||||
测试project值为0,date值为2022-05-01 >> 0
|
||||
测试project值为0,date值为空 >> 0
|
||||
测试project值为1,date值为2022-05-01 >> 0
|
||||
测试project值为1,date值为空 >> 0
|
||||
测试project值为11,date值为2022-05-01 >> 0
|
||||
测试project值为11,date值为空 >> 0
|
||||
- 测试project值为0,date值为2022-05-01 @0
|
||||
- 测试project值为0,date值为空 @0
|
||||
- 测试project值为1,date值为2022-05-01 @0
|
||||
- 测试project值为1,date值为空 @0
|
||||
- 测试project值为11,date值为2022-05-01 @0
|
||||
- 测试project值为11,date值为空 @0
|
||||
|
||||
*/
|
||||
$date = date('Y-m-d');
|
||||
$project = zenData('project');
|
||||
$project->type->range('stage');
|
||||
$project->project->range('0,1,11');
|
||||
$project->gen(20);
|
||||
$task = zenData('task');
|
||||
$task->execution->range('1-20');
|
||||
$task->deadline->range("`2022-04-25`,`2022-05-31`,`{$date}`,`0000-00-00`");
|
||||
$task->gen(50);
|
||||
|
||||
$projectList = array(0, 1, 11);
|
||||
$dateList = array('2022-05-01', '');
|
||||
@@ -29,4 +37,4 @@ r($weekly->getStaffTest($projectList[0], $dateList[1])) && p() && e('0'); //测
|
||||
r($weekly->getStaffTest($projectList[1], $dateList[0])) && p() && e('0'); //测试project值为1,date值为2022-05-01
|
||||
r($weekly->getStaffTest($projectList[1], $dateList[1])) && p() && e('0'); //测试project值为1,date值为空
|
||||
r($weekly->getStaffTest($projectList[2], $dateList[0])) && p() && e('0'); //测试project值为11,date值为2022-05-01
|
||||
r($weekly->getStaffTest($projectList[2], $dateList[1])) && p() && e('0'); //测试project值为11,date值为空
|
||||
r($weekly->getStaffTest($projectList[2], $dateList[1])) && p() && e('0'); //测试project值为11,date值为空
|
||||
|
||||
@@ -8,24 +8,32 @@ su('admin');
|
||||
|
||||
title=测试 weeklyModel->getTasksOfNextWeek();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
测试project值为0,date值为2022-07-30 >> 子任务6
|
||||
测试project值为0,date值为空 >> 0
|
||||
测试project值为1,date值为2022-07-30 >> 0
|
||||
测试project值为1,date值为空 >> 0
|
||||
测试project值为11,date值为2022-07-30 >> 开发任务371
|
||||
测试project值为11,date值为空 >> 0
|
||||
- 测试project值为0,date值为2022-07-30第48条的name属性 @开发任务58
|
||||
- 测试project值为0,date值为空 @0
|
||||
- 测试project值为1,date值为2022-07-30第48条的name属性 @开发任务58
|
||||
- 测试project值为1,date值为空 @0
|
||||
- 测试project值为11,date值为2022-07-30第32条的name属性 @开发任务42
|
||||
- 测试project值为11,date值为空 @0
|
||||
|
||||
*/
|
||||
$date = date('Y-m-d', time() + 5 * 24 * 3600);
|
||||
$project = zenData('project');
|
||||
$project->type->range('stage');
|
||||
$project->project->range('0,1,11');
|
||||
$project->gen(20);
|
||||
$task = zenData('task');
|
||||
$task->execution->range('1-20');
|
||||
$task->deadline->range("`2022-07-25`,`2022-07-31`,`{$date}`,`2022-08-02`");
|
||||
$task->gen(50);
|
||||
|
||||
$projectList = array(0, 1, 11);
|
||||
$dateList = array('2022-07-30', '');
|
||||
|
||||
$weekly = new weeklyTest();
|
||||
r($weekly->getTasksOfNextWeekTest($projectList[0], $dateList[0])) && p('906:name') && e('子任务6'); //测试project值为0,date值为2022-07-30
|
||||
r($weekly->getTasksOfNextWeekTest($projectList[0], $dateList[1])) && p() && e('0'); //测试project值为0,date值为空
|
||||
r($weekly->getTasksOfNextWeekTest($projectList[1], $dateList[0])) && p() && e('0'); //测试project值为1,date值为2022-07-30
|
||||
r($weekly->getTasksOfNextWeekTest($projectList[1], $dateList[1])) && p() && e('0'); //测试project值为1,date值为空
|
||||
r($weekly->getTasksOfNextWeekTest($projectList[2], $dateList[0])) && p('361:name') && e('开发任务371'); //测试project值为11,date值为2022-07-30
|
||||
r($weekly->getTasksOfNextWeekTest($projectList[2], $dateList[1])) && p() && e('0'); //测试project值为11,date值为空
|
||||
r($weekly->getTasksOfNextWeekTest($projectList[0], $dateList[0])) && p('48:name') && e('开发任务58'); //测试project值为0,date值为2022-07-30
|
||||
r($weekly->getTasksOfNextWeekTest($projectList[0], $dateList[1])) && p() && e('0'); //测试project值为0,date值为空
|
||||
r($weekly->getTasksOfNextWeekTest($projectList[1], $dateList[0])) && p('48:name') && e('开发任务58'); //测试project值为1,date值为2022-07-30
|
||||
r($weekly->getTasksOfNextWeekTest($projectList[1], $dateList[1])) && p() && e('0'); //测试project值为1,date值为空
|
||||
r($weekly->getTasksOfNextWeekTest($projectList[2], $dateList[0])) && p('32:name') && e('开发任务42'); //测试project值为11,date值为2022-07-30
|
||||
r($weekly->getTasksOfNextWeekTest($projectList[2], $dateList[1])) && p() && e('0'); //测试project值为11,date值为空
|
||||
|
||||
Reference in New Issue
Block a user