From 43e8af15bc3fe20e5fa7f283289ddafaf27a2a83 Mon Sep 17 00:00:00 2001 From: liumengyi Date: Wed, 26 Apr 2023 19:01:06 +0800 Subject: [PATCH] * Refactor task-getExecutionTasks. --- module/task/model.php | 76 ++---- module/task/tao.php | 74 ++++++ module/task/test/model/getexecutiontasks.php | 253 +++++++++++++++++-- module/task/test/tao/fetchexecutiontasks.php | 253 +++++++++++++++++++ module/task/test/tao/getteambyidlist.php | 36 +++ module/task/test/task.class.php | 38 ++- 6 files changed, 648 insertions(+), 82 deletions(-) create mode 100755 module/task/test/tao/fetchexecutiontasks.php create mode 100644 module/task/test/tao/getteambyidlist.php diff --git a/module/task/model.php b/module/task/model.php index 4599f390b0..941ec1f1a5 100755 --- a/module/task/model.php +++ b/module/task/model.php @@ -2502,78 +2502,32 @@ class taskModel extends model } /** - * Get tasks of a execution. - * - * @param int $executionID - * @param int $productID - * @param string $type - * @param string $modules - * @param string $orderBy - * @param null $pager + * Get the task list under a execution. + * 获取执行下的任务列表信息。 * + * @param int $executionID + * @param int $productID + * @param string|array $type all|assignedbyme|myinvolved|undone|needconfirm|assignedtome|finishedbyme|delayed|review|wait|doing|done|pause|cancel|closed|array('wait','doing','done','pause','cancel','closed') + * @param array $modules + * @param string $orderBy + * @param object $pager * @access public - * @return array|void + * @return array */ - public function getExecutionTasks($executionID, $productID = 0, $type = 'all', $modules = 0, $orderBy = 'status_asc, id_desc', $pager = null) + public function getExecutionTasks(int $executionID, int $productID = 0, string|array $type = 'all', array $modules = array(), string $orderBy = 'status_asc, id_desc', object $pager = null): array { - if(is_string($type)) $type = strtolower($type); - $orderBy = str_replace('pri_', 'priOrder_', $orderBy); - $fields = "DISTINCT t1.*, t2.id AS storyID, t2.title AS storyTitle, t2.product, t2.branch, t2.version AS latestStoryVersion, t2.status AS storyStatus, t3.realname AS assignedToRealName, IF(t1.`pri` = 0, {$this->config->maxPriValue}, t1.`pri`) as priOrder"; - $this->config->edition == 'max' && $fields .= ', t6.name as designName, t6.version as latestDesignVersion'; - - $actionIDList = array(); - if($type == 'assignedbyme') $actionIDList = $this->dao->select('objectID')->from(TABLE_ACTION)->where('objectType')->eq('task')->andWhere('action')->eq('assigned')->andWhere('actor')->eq($this->app->user->account)->fetchPairs('objectID', 'objectID'); - - $tasks = $this->dao->select($fields) - ->from(TABLE_TASK)->alias('t1') - ->leftJoin(TABLE_STORY)->alias('t2')->on('t1.story = t2.id') - ->leftJoin(TABLE_USER)->alias('t3')->on('t1.assignedTo = t3.account') - ->leftJoin(TABLE_TASKTEAM)->alias('t4')->on('t4.task = t1.id') - ->leftJoin(TABLE_MODULE)->alias('t5')->on('t1.module = t5.id') - ->beginIF($this->config->edition == 'max')->leftJoin(TABLE_DESIGN)->alias('t6')->on('t1.design= t6.id')->fi() - ->where('t1.execution')->eq((int)$executionID) - ->beginIF($type == 'myinvolved') - ->andWhere("((t4.`account` = '{$this->app->user->account}') OR t1.`assignedTo` = '{$this->app->user->account}' OR t1.`finishedby` = '{$this->app->user->account}')") - ->fi() - ->beginIF($productID)->andWhere("((t5.root=" . (int)$productID . " and t5.type='story') OR t2.product=" . (int)$productID . ")")->fi() - ->beginIF($type == 'undone')->andWhere('t1.status')->notIN('done,closed')->fi() - ->beginIF($type == 'needconfirm')->andWhere('t2.version > t1.storyVersion')->andWhere("t2.status = 'active'")->fi() - ->beginIF($type == 'assignedtome')->andWhere("(t1.assignedTo = '{$this->app->user->account}' or (t1.mode = 'multi' and t4.`account` = '{$this->app->user->account}' and t1.status != 'closed' and t4.status != 'done') )")->fi() - ->beginIF($type == 'finishedbyme') - ->andWhere('t1.finishedby', 1)->eq($this->app->user->account) - ->orWhere('t4.status')->eq("done") - ->markRight(1) - ->fi() - ->beginIF($type == 'delayed')->andWhere('t1.deadline')->gt('1970-1-1')->andWhere('t1.deadline')->lt(date(DT_DATE1))->andWhere('t1.status')->in('wait,doing')->fi() - ->beginIF(is_array($type) or strpos(',all,undone,needconfirm,assignedtome,delayed,finishedbyme,myinvolved,assignedbyme,review,', ",$type,") === false)->andWhere('t1.status')->in($type)->fi() - ->beginIF($modules)->andWhere('t1.module')->in($modules)->fi() - ->beginIF($type == 'assignedbyme')->andWhere('t1.id')->in($actionIDList)->andWhere('t1.status')->ne('closed')->fi() - ->beginIF($type == 'review') - ->andWhere("FIND_IN_SET('{$this->app->user->account}', t1.reviewers)") - ->andWhere('t1.reviewStatus')->eq('doing') - ->fi() - ->andWhere('t1.deleted')->eq(0) - ->orderBy($orderBy) - ->page($pager, 't1.id') - ->fetchAll('id'); - - $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'task', ($productID or in_array($type, array('myinvolved', 'needconfirm', 'assignedtome'))) ? false : true); + $tasks = $this->taskTao->fetchExecutionTasks($executionID, $productID, $type, $modules, $orderBy, $pager); if(empty($tasks)) return array(); - $taskList = array_keys($tasks); - $taskTeam = $this->dao->select('*')->from(TABLE_TASKTEAM)->where('task')->in($taskList)->fetchGroup('task'); - if(!empty($taskTeam)) - { - foreach($taskTeam as $taskID => $team) $tasks[$taskID]->team = $team; - } - - $parents = array(); + $parents = array(); + $taskTeam = $this->taskTao->getTeamByIdList(array_keys($tasks)); foreach($tasks as $task) { + if(isset($taskTeam[$task->id])) $tasks[$task->id]->team = $taskTeam[$task->id]; if($task->parent > 0) $parents[$task->parent] = $task->parent; } - $parents = $this->dao->select('*')->from(TABLE_TASK)->where('id')->in($parents)->fetchAll('id'); + $parents = $this->getByList($parents); if($this->config->vision == 'lite') $tasks = $this->appendLane($tasks); foreach($tasks as $task) diff --git a/module/task/tao.php b/module/task/tao.php index 5959917339..55b32111b5 100644 --- a/module/task/tao.php +++ b/module/task/tao.php @@ -48,4 +48,78 @@ class taskTao extends taskModel return $tasks; } + + /** + * Fetch tasks under execution by executionID, + * 获取执行下的任务。 + * + * @param int $executionID + * @param int $productID + * @param string|array $type all|assignedbyme|myinvolved|undone|needconfirm|assignedtome|finishedbyme|delayed|review|wait|doing|done|pause|cancel|closed|array('wait','doing','done','pause','cancel','closed') + * @param array $modules + * @param string $orderBy + * @param object $pager + * @access protected + * @return array + */ + protected function fetchExecutionTasks(int $executionID, int $productID = 0, string|array $type = 'all', array $modules = array(), string $orderBy = 'status_asc, id_desc', object $pager = null): array + { + if(is_string($type)) $type = strtolower($type); + $orderBy = str_replace('pri_', 'priOrder_', $orderBy); + $fields = "DISTINCT t1.*, t2.id AS storyID, t2.title AS storyTitle, t2.product, t2.branch, t2.version AS latestStoryVersion, t2.status AS storyStatus, t3.realname AS assignedToRealName, IF(t1.`pri` = 0, {$this->config->maxPriValue}, t1.`pri`) as priOrder"; + if($this->config->edition == 'max') $fields .= ', t6.name as designName, t6.version as latestDesignVersion'; + + $currentAccount = $this->app->user->account; + + $actionIDList = array(); + if($type == 'assignedbyme') $actionIDList = $this->dao->select('objectID')->from(TABLE_ACTION)->where('objectType')->eq('task')->andWhere('action')->eq('assigned')->andWhere('actor')->eq($currentAccount)->fetchPairs('objectID', 'objectID'); + + $tasks = $this->dao->select($fields) + ->from(TABLE_TASK)->alias('t1') + ->leftJoin(TABLE_STORY)->alias('t2')->on('t1.story = t2.id') + ->leftJoin(TABLE_USER)->alias('t3')->on('t1.assignedTo = t3.account') + ->leftJoin(TABLE_TASKTEAM)->alias('t4')->on('t4.task = t1.id') + ->leftJoin(TABLE_MODULE)->alias('t5')->on('t1.module = t5.id') + ->beginIF($this->config->edition == 'max')->leftJoin(TABLE_DESIGN)->alias('t6')->on('t1.design= t6.id')->fi() + ->where('t1.execution')->eq($executionID) + ->beginIF($type == 'myinvolved')->andWhere("((t4.`account` = '{$currentAccount}') OR t1.`assignedTo` = '{$currentAccount}' OR t1.`finishedby` = '{$currentAccount}')")->fi() + ->beginIF($productID)->andWhere("((t5.root=" . $productID . " and t5.type='story') OR t2.product=" . $productID . ")")->fi() + ->beginIF($type == 'undone')->andWhere('t1.status')->notIN('done,closed')->fi() + ->beginIF($type == 'needconfirm')->andWhere('t2.version > t1.storyVersion')->andWhere("t2.status = 'active'")->fi() + ->beginIF($type == 'assignedtome')->andWhere("(t1.assignedTo = '{$currentAccount}' or (t1.mode = 'multi' and t4.`account` = '{$currentAccount}' and t1.status != 'closed' and t4.status != 'done') )")->fi() + ->beginIF($type == 'finishedbyme') + ->andWhere('t1.finishedby', 1)->eq($currentAccount) + ->orWhere('t4.status')->eq("done") + ->markRight(1) + ->fi() + ->beginIF($type == 'delayed')->andWhere('t1.deadline')->gt('1970-1-1')->andWhere('t1.deadline')->lt(date(DT_DATE1))->andWhere('t1.status')->in('wait,doing')->fi() + ->beginIF(is_array($type) or strpos(',all,undone,needconfirm,assignedtome,delayed,finishedbyme,myinvolved,assignedbyme,review,', ",$type,") === false)->andWhere('t1.status')->in($type)->fi() + ->beginIF($modules)->andWhere('t1.module')->in($modules)->fi() + ->beginIF($type == 'assignedbyme')->andWhere('t1.id')->in($actionIDList)->andWhere('t1.status')->ne('closed')->fi() + ->beginIF($type == 'review') + ->andWhere("FIND_IN_SET('{$currentAccount}', t1.reviewers)") + ->andWhere('t1.reviewStatus')->eq('doing') + ->fi() + ->andWhere('t1.deleted')->eq(0) + ->orderBy($orderBy) + ->page($pager, 't1.id') + ->fetchAll('id'); + + $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'task', ($productID or in_array($type, array('myinvolved', 'needconfirm', 'assignedtome'))) ? false : true); + + return $tasks; + } + + /** + * Get task team by id list. + * 通过任务ID列表查询任务团队信息。 + * + * @param array $taskIdList + * @access protected + * @return array + */ + protected function getTeamByIdList(array $taskIdList): array + { + return $this->dao->select('*')->from(TABLE_TASKTEAM)->where('task')->in($taskIdList)->fetchGroup('task'); + } } diff --git a/module/task/test/model/getexecutiontasks.php b/module/task/test/model/getexecutiontasks.php index a7026b7218..beb3a0ace7 100755 --- a/module/task/test/model/getexecutiontasks.php +++ b/module/task/test/model/getexecutiontasks.php @@ -2,33 +2,252 @@ id->range('1-5'); +$execution->name->range('项目1,项目2,迭代1,迭代2,迭代3'); +$execution->type->range('project{2},sprint,stage,kanban'); +$execution->status->range('doing{3},closed,doing'); +$execution->parent->range('0,0,1,1,2'); +$execution->grade->range('2{2},1{3}'); +$execution->path->range('1,2,`1,3`,`1,4`,`2,5`')->prefix(',')->postfix(','); +$execution->begin->range('20230102 000000:0')->type('timestamp')->format('YY/MM/DD'); +$execution->end->range('20230212 000000:0')->type('timestamp')->format('YY/MM/DD'); +$execution->gen(5); + +$task = zdTable('task'); +$task->id->range('1-20'); +$task->name->range('1-20')->prefix('任务'); +$task->module->range('1-5'); +$task->parent->range('0{15},0{5}'); +$task->execution->range('1-2'); +$task->story->range('1-10'); +$task->mode->range('[]{15},multi{3},linear{2}'); +$task->storyVersion->range('1'); +$task->deadline->range('20230212 000000:0')->type('timestamp')->format('YY/MM/DD'); +$task->status->range('wait,doing{2},done{2},pause,cancel,closed'); +$task->assignedTo->range('admin{10},user1{11-20}'); +$task->finishedBy->range('admin{10},user2{11-20}'); +$task->pri->range('1-4'); +$task->gen(20); + +$story = zdTable('story'); +$story->id->range('1-20'); +$story->title->range('1-20')->prefix('需求'); +$story->product->range('1-20'); +$story->branch->range('0'); +$story->version->range('1-2'); +$story->status->range('active{10},draft{5},reviewing{2},closed{2},changing'); +$story->gen(20); + +zdTable('user')->gen(30); + +$taskTeam = zdTable('taskteam'); +$taskTeam->id->range('1-5'); +$taskTeam->task->range('16{2},19{3}'); +$taskTeam->account->range('admin,user1,admin,user1,user2'); +$taskTeam->estimate->range('1{2},2{3}'); +$taskTeam->left->range('1{2},1{3}'); +$taskTeam->status->range('wait{2},doing{3}'); +$taskTeam->gen(5); + +$module = zdTable('module'); +$module->root->range('1-5'); +$module->type->range('story'); +$module->gen(5); + su('admin'); /** title=taskModel->getExecutionTasks(); +timeout=0 cid=1 -pid=1 -根据执行id获取任务列表 >> 开发任务11 -根据执行id获取任务数量 >> 4 -根据执行id,按pri升序获取第一个任务pri >> 3 -根据执行id,按pri降序获取第一个任务pri >> 1 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[0], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[0], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[0]- ,属性1 @任务1 + @任务1 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[1] @10 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[0], $modules[0], $orderBy[0], $count[0]- ,属性1 @任务1 + @任务1 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[0], $modules[0], $orderBy[0], $count[1] @2 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[1], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[1], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[2], $modules[0], $orderBy[0], $count[0]- ,属性1 @任务1 + @任务1 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[2], $modules[0], $orderBy[0], $count[1] @1 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[3], $modules[0], $orderBy[0], $count[0]- ,属性1 @任务1 + @任务1 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[3], $modules[0], $orderBy[0], $count[1] @2 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[4], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[4], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[5], $modules[0], $orderBy[0], $count[0]- ,属性1 @任务1 + @任务1 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[5], $modules[0], $orderBy[0], $count[1] @1 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[6], $modules[0], $orderBy[0], $count[0]- ,属性1 @任务1 + @任务1 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[6], $modules[0], $orderBy[0], $count[1] @1 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[7], $modules[0], $orderBy[0], $count[0]- ,属性1 @任务1 + @任务1 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[7], $modules[0], $orderBy[0], $count[1] @2 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[8], $modules[0], $orderBy[0], $count[0]- ,属性1 @任务1 + @任务1 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[8], $modules[0], $orderBy[0], $count[1] @1 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[9], $modules[0], $orderBy[0], $count[0]- ,属性11 @任务11 + @任务11 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[9], $modules[0], $orderBy[0], $count[1] @1 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[10], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[10], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[11], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[11], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[12], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[12], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[13], $modules[0], $orderBy[0], $count[0]- ,属性1 @任务1 + @任务1 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[13], $modules[0], $orderBy[0], $count[1] @2 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[0], $type[0], $modules[1], $orderBy[0], $count[0]- ,属性17 @任务17 + @任务17 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[0], $type[0], $modules[1], $orderBy[0], $count[1] @2 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[0], $type[0], $modules[2], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[0], $type[0], $modules[2], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[0], $type[0], $modules[3], $orderBy[0], $count[0]- ,属性17 @任务17 + @任务17 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[0], $type[0], $modules[3], $orderBy[0], $count[1] @2 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[0], $type[0], $modules[0], $orderBy[1], $count[0]- ,属性1 @任务1 + @任务1 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[1], $productIdList[0], $type[0], $modules[0], $orderBy[1], $count[1] @10 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[0]- ,属性18 @任务18 + @任务18 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[1] @10 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[0], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[0], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[1], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[1], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[2], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[2], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[3], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[3], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[4], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[4], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[5], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[5], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[6], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[6], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[7], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[7], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[8], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[8], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[9], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[9], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[10], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[10], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[11], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[11], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[12], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[12], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[13], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[13], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[0], $type[0], $modules[1], $orderBy[0], $count[0]- ,属性2 @任务2 + @任务2 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[0], $type[0], $modules[1], $orderBy[0], $count[1] @2 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[0], $type[0], $modules[2], $orderBy[0], $count[0] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[0], $type[0], $modules[2], $orderBy[0], $count[1] @0 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[0], $type[0], $modules[3], $orderBy[0], $count[0]- ,属性2 @任务2 + @任务2 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[0], $type[0], $modules[3], $orderBy[0], $count[1] @2 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[0], $type[0], $modules[0], $orderBy[1], $count[0]- ,属性20 @任务20 + @任务20 +- 执行task模块的getExecutionTasks方法,参数是$executionIdList[2], $productIdList[0], $type[0], $modules[0], $orderBy[1], $count[1] @10 + */ -$executionID = '101'; -$productID = 0; -$type = 'all'; -$modules = 0; -$orderBy = array('status_asc, id_desc', 'pri_desc', 'pri_asc'); -$count = array('0','1'); +$executionIdList = array(0, 1, 2); +$productIdList = array(0, 1, 8); +$type = array('all', 'assignedbyme', 'myinvolved', 'undone', 'needconfirm', 'assignedtome', 'finishedbyme', 'delayed', 'wait', 'doing', 'done', 'pause', 'cancel', array('wait', 'doing', 'done', 'pause', 'cancel')); +$modules = array(array(), array(2), array(8), array(2,8)); +$orderBy = array('status_asc, id_desc', 'pri_desc'); +$count = array('0','1'); $task = new taskTest(); -$priDescTasks = $task->getExecutionTasksTest($executionID, $productID, $type, $modules, $orderBy[1]); -$priAscTasks = $task->getExecutionTasksTest($executionID, $productID, $type, $modules, $orderBy[2]); -r($task->getExecutionTasksTest($executionID)) && p('1:name') && e('开发任务11'); //根据执行id获取任务列表 -r($task->getExecutionTasksTest($executionID, $productID, $type, $modules, $orderBy[0], $count[1])) && p() && e('4'); //根据执行id获取任务数量 -r(array_shift($priDescTasks)) && p('pri') && e('3'); //根据执行id,按pri升序获取第一个任务pri -r(array_shift($priAscTasks)) && p('pri') && e('1'); //根据执行id,按pri降序获取第一个任务pri +r($task->getExecutionTasksTest($executionIdList[0], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 0 product 0 type all module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[0], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 0 product 0 type all module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[0])) && p('1:name') && e('任务1'); // 测试获取执行ID 1 product 0 type all module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[1])) && p() && e('10'); // 测试获取执行ID 1 product 0 type all module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[0], $modules[0], $orderBy[0], $count[0])) && p('1:name') && e('任务1'); // 测试获取执行ID 1 product 1 type all module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[0], $modules[0], $orderBy[0], $count[1])) && p() && e('2'); // 测试获取执行ID 1 product 1 type all module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[1], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 1 product 1 type assignedbyme module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[1], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 1 product 1 type assignedbyme module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[2], $modules[0], $orderBy[0], $count[0])) && p('1:name') && e('任务1'); // 测试获取执行ID 1 product 1 type myinvolved module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[2], $modules[0], $orderBy[0], $count[1])) && p() && e('1'); // 测试获取执行ID 1 product 1 type myinvolved module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[3], $modules[0], $orderBy[0], $count[0])) && p('1:name') && e('任务1'); // 测试获取执行ID 1 product 1 type undone module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[3], $modules[0], $orderBy[0], $count[1])) && p() && e('2'); // 测试获取执行ID 1 product 1 type undone module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[4], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 1 product 1 type needconfirm module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[4], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 1 product 1 type needconfirm module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[5], $modules[0], $orderBy[0], $count[0])) && p('1:name') && e('任务1'); // 测试获取执行ID 1 product 1 type assignedtome module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[5], $modules[0], $orderBy[0], $count[1])) && p() && e('1'); // 测试获取执行ID 1 product 1 type assignedtome module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[6], $modules[0], $orderBy[0], $count[0])) && p('1:name') && e('任务1'); // 测试获取执行ID 1 product 1 type finishedbyme module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[6], $modules[0], $orderBy[0], $count[1])) && p() && e('1'); // 测试获取执行ID 1 product 1 type finishedbyme module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[7], $modules[0], $orderBy[0], $count[0])) && p('1:name') && e('任务1'); // 测试获取执行ID 1 product 1 type delayed module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[7], $modules[0], $orderBy[0], $count[1])) && p() && e('2'); // 测试获取执行ID 1 product 1 type delayed module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[8], $modules[0], $orderBy[0], $count[0])) && p('1:name') && e('任务1'); // 测试获取执行ID 1 product 1 type wait module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[8], $modules[0], $orderBy[0], $count[1])) && p() && e('1'); // 测试获取执行ID 1 product 1 type wait module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[9], $modules[0], $orderBy[0], $count[0])) && p('11:name') && e('任务11'); // 测试获取执行ID 1 product 1 type doing module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[9], $modules[0], $orderBy[0], $count[1])) && p() && e('1'); // 测试获取执行ID 1 product 1 type doing module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[10], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 1 product 1 type done module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[10], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 1 product 1 type done module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[11], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 1 product 1 type pause module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[11], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 1 product 1 type pause module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[12], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 1 product 1 type cancel module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[12], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 1 product 1 type cancel module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[13], $modules[0], $orderBy[0], $count[0])) && p('1:name') && e('任务1'); // 测试获取执行ID 1 product 1 type array('wait', 'doing', 'done', 'pause', 'cancel') module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[1], $type[13], $modules[0], $orderBy[0], $count[1])) && p() && e('2'); // 测试获取执行ID 1 product 1 type array('wait', 'doing', 'done', 'pause', 'cancel') module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[0], $type[0], $modules[1], $orderBy[0], $count[0])) && p('17:name') && e('任务17'); // 测试获取执行ID 1 product 0 type all module array(2) orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[0], $type[0], $modules[1], $orderBy[0], $count[1])) && p() && e('2'); // 测试获取执行ID 1 product 0 type all module array(2) orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[0], $type[0], $modules[2], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 1 product 0 type all module array(8) orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[0], $type[0], $modules[2], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 1 product 0 type all module array(8) orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[0], $type[0], $modules[3], $orderBy[0], $count[0])) && p('17:name') && e('任务17'); // 测试获取执行ID 1 product 0 type all module array(2,8) orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[0], $type[0], $modules[3], $orderBy[0], $count[1])) && p() && e('2'); // 测试获取执行ID 1 product 0 type all module array(2,8) orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[0], $type[0], $modules[0], $orderBy[1], $count[0])) && p('1:name') && e('任务1'); // 测试获取执行ID 1 product 0 type all module 空 orederBy 'pri_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[1], $productIdList[0], $type[0], $modules[0], $orderBy[1], $count[1])) && p() && e('10'); // 测试获取执行ID 1 product 0 type all module 空 orederBy 'pri_desc' 的任务数量 + +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[0])) && p('18:name') && e('任务18'); // 测试获取执行ID 2 product 0 type all module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[1])) && p() && e('10'); // 测试获取执行ID 2 product 0 type all module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[0], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type all module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[0], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type all module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[1], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type assignedbyme module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[1], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type assignedbyme module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[2], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type myinvolved module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[2], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type myinvolved module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[3], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type undone module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[3], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type undone module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[4], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type needconfirm module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[4], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type needconfirm module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[5], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type assignedtome module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[5], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type assignedtome module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[6], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type finishedbyme module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[6], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type finishedbyme module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[7], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type delayed module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[7], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type delayed module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[8], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type wait module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[8], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type wait module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[9], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type doing module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[9], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type doing module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[10], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type done module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[10], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type done module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[11], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type pause module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[11], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type pause module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[12], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type cancel module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[12], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type cancel module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[13], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type array('wait', 'doing', 'done', 'pause', 'cancel') module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[1], $type[13], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type array('wait', 'doing', 'done', 'pause', 'cancel') module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[1], $orderBy[0], $count[0])) && p('2:name') && e('任务2'); // 测试获取执行ID 2 product 0 type all module array(2) orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[1], $orderBy[0], $count[1])) && p() && e('2'); // 测试获取执行ID 2 product 0 type all module array(2) orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[2], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 0 type all module array(8) orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[2], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 0 type all module array(8) orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[3], $orderBy[0], $count[0])) && p('2:name') && e('任务2'); // 测试获取执行ID 2 product 0 type all module array(2,8) orederBy 'status_asc, id_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[3], $orderBy[0], $count[1])) && p() && e('2'); // 测试获取执行ID 2 product 0 type all module array(2,8) orederBy 'status_asc, id_desc' 的任务数量 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[0], $orderBy[1], $count[0])) && p('20:name') && e('任务20'); // 测试获取执行ID 2 product 0 type all module 空 orederBy 'pri_desc' 的任务 +r($task->getExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[0], $orderBy[1], $count[1])) && p() && e('10'); // 测试获取执行ID 2 product 0 type all module 空 orederBy 'pri_desc' 的任务数量 diff --git a/module/task/test/tao/fetchexecutiontasks.php b/module/task/test/tao/fetchexecutiontasks.php new file mode 100755 index 0000000000..deee84d1cc --- /dev/null +++ b/module/task/test/tao/fetchexecutiontasks.php @@ -0,0 +1,253 @@ +#!/usr/bin/env php +id->range('1-5'); +$execution->name->range('项目1,项目2,迭代1,迭代2,迭代3'); +$execution->type->range('project{2},sprint,stage,kanban'); +$execution->status->range('doing{3},closed,doing'); +$execution->parent->range('0,0,1,1,2'); +$execution->grade->range('2{2},1{3}'); +$execution->path->range('1,2,`1,3`,`1,4`,`2,5`')->prefix(',')->postfix(','); +$execution->begin->range('20230102 000000:0')->type('timestamp')->format('YY/MM/DD'); +$execution->end->range('20230212 000000:0')->type('timestamp')->format('YY/MM/DD'); +$execution->gen(5); + +$task = zdTable('task'); +$task->id->range('1-20'); +$task->name->range('1-20')->prefix('任务'); +$task->module->range('1-5'); +$task->parent->range('0{15},1{5}'); +$task->execution->range('1-2'); +$task->story->range('1-10'); +$task->mode->range('[]{15},multi{3},linear{2}'); +$task->storyVersion->range('1'); +$task->deadline->range('20230212 000000:0')->type('timestamp')->format('YY/MM/DD'); +$task->status->range('wait,doing{2},done{2},pause,cancel,closed'); +$task->assignedTo->range('admin{10},user1{11-20}'); +$task->finishedBy->range('admin{10},user2{11-20}'); +$task->pri->range('1-4'); +$task->gen(20); + +$story = zdTable('story'); +$story->id->range('1-20'); +$story->title->range('1-20')->prefix('需求'); +$story->product->range('1-20'); +$story->branch->range('0'); +$story->version->range('1-2'); +$story->status->range('active{10},draft{5},reviewing{2},closed{2},changing'); +$story->gen(20); + +zdTable('user')->gen(30); + +$taskTeam = zdTable('taskteam'); +$taskTeam->id->range('1-5'); +$taskTeam->task->range('16{2},19{3}'); +$taskTeam->account->range('admin,user1,admin,user1,user2'); +$taskTeam->estimate->range('1{2},2{3}'); +$taskTeam->left->range('1{2},1{3}'); +$taskTeam->status->range('wait{2},doing{3}'); +$taskTeam->gen(5); + +$module = zdTable('module'); +$module->root->range('1-5'); +$module->type->range('story'); +$module->gen(5); + +su('admin'); + +/** + +title=taskModel->fetchExecutionTasks(); +timeout=0 +cid=1 + +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[0], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[0], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[0]- ,属性1 @任务1 + @任务1 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[1] @10 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[0], $modules[0], $orderBy[0], $count[0]- ,属性1 @任务1 + @任务1 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[0], $modules[0], $orderBy[0], $count[1] @2 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[1], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[1], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[2], $modules[0], $orderBy[0], $count[0]- ,属性1 @任务1 + @任务1 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[2], $modules[0], $orderBy[0], $count[1] @1 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[3], $modules[0], $orderBy[0], $count[0]- ,属性1 @任务1 + @任务1 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[3], $modules[0], $orderBy[0], $count[1] @2 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[4], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[4], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[5], $modules[0], $orderBy[0], $count[0]- ,属性1 @任务1 + @任务1 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[5], $modules[0], $orderBy[0], $count[1] @1 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[6], $modules[0], $orderBy[0], $count[0]- ,属性1 @任务1 + @任务1 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[6], $modules[0], $orderBy[0], $count[1] @1 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[7], $modules[0], $orderBy[0], $count[0]- ,属性1 @任务1 + @任务1 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[7], $modules[0], $orderBy[0], $count[1] @2 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[8], $modules[0], $orderBy[0], $count[0]- ,属性1 @任务1 + @任务1 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[8], $modules[0], $orderBy[0], $count[1] @1 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[9], $modules[0], $orderBy[0], $count[0]- ,属性11 @任务11 + @任务11 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[9], $modules[0], $orderBy[0], $count[1] @1 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[10], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[10], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[11], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[11], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[12], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[12], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[13], $modules[0], $orderBy[0], $count[0]- ,属性1 @任务1 + @任务1 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[1], $type[13], $modules[0], $orderBy[0], $count[1] @2 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[0], $type[0], $modules[1], $orderBy[0], $count[0]- ,属性17 @任务17 + @任务17 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[0], $type[0], $modules[1], $orderBy[0], $count[1] @2 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[0], $type[0], $modules[2], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[0], $type[0], $modules[2], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[0], $type[0], $modules[3], $orderBy[0], $count[0]- ,属性17 @任务17 + @任务17 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[0], $type[0], $modules[3], $orderBy[0], $count[1] @2 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[0], $type[0], $modules[0], $orderBy[1], $count[0]- ,属性1 @任务1 + @任务1 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[1], $productIdList[0], $type[0], $modules[0], $orderBy[1], $count[1] @10 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[0]- ,属性18 @任务18 + @任务18 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[1] @10 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[0], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[0], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[1], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[1], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[2], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[2], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[3], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[3], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[4], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[4], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[5], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[5], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[6], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[6], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[7], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[7], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[8], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[8], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[9], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[9], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[10], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[10], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[11], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[11], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[12], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[12], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[13], $modules[0], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[1], $type[13], $modules[0], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[0], $type[0], $modules[1], $orderBy[0], $count[0]- ,属性2 @任务2 + @任务2 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[0], $type[0], $modules[1], $orderBy[0], $count[1] @2 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[0], $type[0], $modules[2], $orderBy[0], $count[0] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[0], $type[0], $modules[2], $orderBy[0], $count[1] @0 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[0], $type[0], $modules[3], $orderBy[0], $count[0]- ,属性2 @任务2 + @任务2 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[0], $type[0], $modules[3], $orderBy[0], $count[1] @2 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[0], $type[0], $modules[0], $orderBy[1], $count[0]- ,属性20 @任务20 + @任务20 +- 执行task模块的fetchExecutionTasks方法,参数是$executionIdList[2], $productIdList[0], $type[0], $modules[0], $orderBy[1], $count[1] @10 + + +*/ + +$executionIdList = array(0, 1, 2); +$productIdList = array(0, 1, 8); +$type = array('all', 'assignedbyme', 'myinvolved', 'undone', 'needconfirm', 'assignedtome', 'finishedbyme', 'delayed', 'wait', 'doing', 'done', 'pause', 'cancel', array('wait', 'doing', 'done', 'pause', 'cancel')); +$modules = array(array(), array(2), array(8), array(2,8)); +$orderBy = array('status_asc, id_desc', 'pri_desc'); +$count = array('0','1'); + +$task = new taskTest(); + +r($task->fetchExecutionTasksTest($executionIdList[0], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 0 product 0 type all module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[0], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 0 product 0 type all module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[0])) && p('1:name') && e('任务1'); // 测试获取执行ID 1 product 0 type all module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[1])) && p() && e('10'); // 测试获取执行ID 1 product 0 type all module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[0], $modules[0], $orderBy[0], $count[0])) && p('1:name') && e('任务1'); // 测试获取执行ID 1 product 1 type all module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[0], $modules[0], $orderBy[0], $count[1])) && p() && e('2'); // 测试获取执行ID 1 product 1 type all module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[1], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 1 product 1 type assignedbyme module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[1], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 1 product 1 type assignedbyme module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[2], $modules[0], $orderBy[0], $count[0])) && p('1:name') && e('任务1'); // 测试获取执行ID 1 product 1 type myinvolved module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[2], $modules[0], $orderBy[0], $count[1])) && p() && e('1'); // 测试获取执行ID 1 product 1 type myinvolved module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[3], $modules[0], $orderBy[0], $count[0])) && p('1:name') && e('任务1'); // 测试获取执行ID 1 product 1 type undone module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[3], $modules[0], $orderBy[0], $count[1])) && p() && e('2'); // 测试获取执行ID 1 product 1 type undone module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[4], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 1 product 1 type needconfirm module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[4], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 1 product 1 type needconfirm module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[5], $modules[0], $orderBy[0], $count[0])) && p('1:name') && e('任务1'); // 测试获取执行ID 1 product 1 type assignedtome module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[5], $modules[0], $orderBy[0], $count[1])) && p() && e('1'); // 测试获取执行ID 1 product 1 type assignedtome module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[6], $modules[0], $orderBy[0], $count[0])) && p('1:name') && e('任务1'); // 测试获取执行ID 1 product 1 type finishedbyme module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[6], $modules[0], $orderBy[0], $count[1])) && p() && e('1'); // 测试获取执行ID 1 product 1 type finishedbyme module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[7], $modules[0], $orderBy[0], $count[0])) && p('1:name') && e('任务1'); // 测试获取执行ID 1 product 1 type delayed module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[7], $modules[0], $orderBy[0], $count[1])) && p() && e('2'); // 测试获取执行ID 1 product 1 type delayed module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[8], $modules[0], $orderBy[0], $count[0])) && p('1:name') && e('任务1'); // 测试获取执行ID 1 product 1 type wait module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[8], $modules[0], $orderBy[0], $count[1])) && p() && e('1'); // 测试获取执行ID 1 product 1 type wait module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[9], $modules[0], $orderBy[0], $count[0])) && p('11:name') && e('任务11'); // 测试获取执行ID 1 product 1 type doing module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[9], $modules[0], $orderBy[0], $count[1])) && p() && e('1'); // 测试获取执行ID 1 product 1 type doing module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[10], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 1 product 1 type done module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[10], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 1 product 1 type done module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[11], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 1 product 1 type pause module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[11], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 1 product 1 type pause module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[12], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 1 product 1 type cancel module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[12], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 1 product 1 type cancel module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[13], $modules[0], $orderBy[0], $count[0])) && p('1:name') && e('任务1'); // 测试获取执行ID 1 product 1 type array('wait', 'doing', 'done', 'pause', 'cancel') module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[1], $type[13], $modules[0], $orderBy[0], $count[1])) && p() && e('2'); // 测试获取执行ID 1 product 1 type array('wait', 'doing', 'done', 'pause', 'cancel') module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[0], $type[0], $modules[1], $orderBy[0], $count[0])) && p('17:name') && e('任务17'); // 测试获取执行ID 1 product 0 type all module array(2) orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[0], $type[0], $modules[1], $orderBy[0], $count[1])) && p() && e('2'); // 测试获取执行ID 1 product 0 type all module array(2) orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[0], $type[0], $modules[2], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 1 product 0 type all module array(8) orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[0], $type[0], $modules[2], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 1 product 0 type all module array(8) orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[0], $type[0], $modules[3], $orderBy[0], $count[0])) && p('17:name') && e('任务17'); // 测试获取执行ID 1 product 0 type all module array(2,8) orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[0], $type[0], $modules[3], $orderBy[0], $count[1])) && p() && e('2'); // 测试获取执行ID 1 product 0 type all module array(2,8) orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[0], $type[0], $modules[0], $orderBy[1], $count[0])) && p('1:name') && e('任务1'); // 测试获取执行ID 1 product 0 type all module 空 orederBy 'pri_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[1], $productIdList[0], $type[0], $modules[0], $orderBy[1], $count[1])) && p() && e('10'); // 测试获取执行ID 1 product 0 type all module 空 orederBy 'pri_desc' 的任务数量 + +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[0])) && p('18:name') && e('任务18'); // 测试获取执行ID 2 product 0 type all module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[0], $orderBy[0], $count[1])) && p() && e('10'); // 测试获取执行ID 2 product 0 type all module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[0], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type all module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[0], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type all module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[1], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type assignedbyme module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[1], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type assignedbyme module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[2], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type myinvolved module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[2], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type myinvolved module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[3], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type undone module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[3], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type undone module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[4], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type needconfirm module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[4], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type needconfirm module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[5], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type assignedtome module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[5], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type assignedtome module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[6], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type finishedbyme module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[6], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type finishedbyme module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[7], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type delayed module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[7], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type delayed module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[8], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type wait module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[8], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type wait module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[9], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type doing module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[9], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type doing module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[10], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type done module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[10], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type done module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[11], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type pause module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[11], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type pause module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[12], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type cancel module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[12], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type cancel module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[13], $modules[0], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 1 type array('wait', 'doing', 'done', 'pause', 'cancel') module 空 orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[1], $type[13], $modules[0], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 1 type array('wait', 'doing', 'done', 'pause', 'cancel') module 空 orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[1], $orderBy[0], $count[0])) && p('2:name') && e('任务2'); // 测试获取执行ID 2 product 0 type all module array(2) orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[1], $orderBy[0], $count[1])) && p() && e('2'); // 测试获取执行ID 2 product 0 type all module array(2) orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[2], $orderBy[0], $count[0])) && p() && e('0'); // 测试获取执行ID 2 product 0 type all module array(8) orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[2], $orderBy[0], $count[1])) && p() && e('0'); // 测试获取执行ID 2 product 0 type all module array(8) orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[3], $orderBy[0], $count[0])) && p('2:name') && e('任务2'); // 测试获取执行ID 2 product 0 type all module array(2,8) orederBy 'status_asc, id_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[3], $orderBy[0], $count[1])) && p() && e('2'); // 测试获取执行ID 2 product 0 type all module array(2,8) orederBy 'status_asc, id_desc' 的任务数量 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[0], $orderBy[1], $count[0])) && p('20:name') && e('任务20'); // 测试获取执行ID 2 product 0 type all module 空 orederBy 'pri_desc' 的任务 +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[0], $orderBy[1], $count[1])) && p() && e('10'); // 测试获取执行ID 2 product 0 type all module 空 orederBy 'pri_desc' 的任务数量 diff --git a/module/task/test/tao/getteambyidlist.php b/module/task/test/tao/getteambyidlist.php new file mode 100644 index 0000000000..72442ea407 --- /dev/null +++ b/module/task/test/tao/getteambyidlist.php @@ -0,0 +1,36 @@ +#!/usr/bin/env php +id->range('1-5'); +$taskTeam->task->range('1{2},2{3}'); +$taskTeam->account->range('admin,dev01,admin,dev01,dev02'); +$taskTeam->estimate->range('1{2},2{3}'); +$taskTeam->left->range('1{2},1{3}'); +$taskTeam->status->range('wait{2},doing{3}'); +$taskTeam->gen(5); +su('admin'); + +/** + +title=测试taskModel->getTeamByIdList(); +cid=1 +pid=1 + +测试传入空的taskIdList >> 0 +测试查询给定taskIdList的任务数量 >> 2 +测试查询任务id为1的团队信息 >> admin + +*/ + +global $tester; +$tester->loadModel('task'); + +$taskIdList = array(1, 2); +$emptyData = $tester->task->getTeamByIdList(array()); +$taskTeamGroup = $tester->task->getTeamByIdList($taskIdList); +$firstTaskTeam = current($taskTeamGroup); +r($emptyData) && p() && e('0'); // 测试传入空的taskIdList +r(count($taskTeamGroup)) && p() && e('2'); // 测试查询给定taskIdList的任务数量 +r($firstTaskTeam) && p('0:account') && e('1,admin'); // 测试查询任务id为1团队中第一个人的用户名 diff --git a/module/task/test/task.class.php b/module/task/test/task.class.php index 0a6fb333f3..cb8a0678b9 100644 --- a/module/task/test/task.class.php +++ b/module/task/test/task.class.php @@ -458,9 +458,9 @@ class taskTest * @access public * @return array */ - public function getExecutionTasksTest($executionID, $productID = 0, $type = 'all', $modules = 0, $orderBy = 'status_asc, id_desc', $count = '0') + public function getExecutionTasksTest($executionID, $productID = 0, $type = 'all', $modules = array(), $orderBy = 'status_asc, id_desc', $count = '0') { - $object = $this->objectModel->getExecutionTasks($executionID, $productID, $type, $modules, $orderBy); + $tasks = $this->objectModel->getExecutionTasks($executionID, $productID, $type, $modules, $orderBy); if(dao::isError()) { $error = dao::getError(); @@ -468,11 +468,11 @@ class taskTest } elseif($count == "1") { - return count($object); + return count($tasks); } else { - return $object; + return $tasks; } } @@ -1508,4 +1508,34 @@ class taskTest return $object; } + + /** + * Test fetch tasks of a execution. + * + * @param int $executionID + * @param int $productID + * @param string|array $type + * @param string $modules + * @param string $orderBy + * @param string $count + * @access public + * @return array + */ + public function fetchExecutionTasksTest($executionID, $productID = 0, $type = 'all', $modules = array(), $orderBy = 'status_asc, id_desc', $count = '0'): array|int + { + $tasks = $this->objectModel->fetchExecutionTasks($executionID, $productID, $type, $modules, $orderBy); + if(dao::isError()) + { + $error = dao::getError(); + return $error; + } + elseif($count == "1") + { + return count($tasks); + } + else + { + return $tasks; + } + } }