From a3a224d97e3bfb58db294c0bf61ec9b535fcd754 Mon Sep 17 00:00:00 2001 From: liumengyi Date: Wed, 6 Dec 2023 10:41:18 +0800 Subject: [PATCH] * Refactor personnelModel::getUserHours, and modify its unit test. --- module/personnel/model.php | 16 +++--- module/personnel/test/model/getuserhours.php | 55 ++++++++++++-------- module/personnel/test/personnel.class.php | 17 +++--- 3 files changed, 49 insertions(+), 39 deletions(-) diff --git a/module/personnel/model.php b/module/personnel/model.php index e70c4d55eb..07889db6b6 100644 --- a/module/personnel/model.php +++ b/module/personnel/model.php @@ -392,31 +392,31 @@ class personnelModel extends model } /** + * 获取用户工时。 * Get user hours. * - * @param object $userTasks + * @param array $userTasks * @access public - * @return object + * @return array */ - public function getUserHours($userTasks) + public function getUserHours(array $userTasks): array { $accounts = array(); - $taskIDList = array(); + $taskIdList = array(); foreach($userTasks as $account => $taskID) { $accounts[] = $account; - $taskIDList = array_merge($taskIDList, $taskID); + $taskIdList = array_merge($taskIdList, $taskID); } + $userHours = array(); $effortList = $this->dao->select('id, account, objectID , `left`, consumed')->from(TABLE_EFFORT) ->where('account')->in($accounts) ->andWhere('deleted')->eq(0) - ->andWhere('objectID')->in($taskIDList) + ->andWhere('objectID')->in($taskIdList) ->andWhere('objectType')->eq('task') ->orderBy('id_asc') ->fetchGroup('account', 'id'); - - $userHours = array(); foreach($effortList as $account => $efforts) { $latestLeft = array(); diff --git a/module/personnel/test/model/getuserhours.php b/module/personnel/test/model/getuserhours.php index 24902a933a..3aac07b11d 100755 --- a/module/personnel/test/model/getuserhours.php +++ b/module/personnel/test/model/getuserhours.php @@ -1,40 +1,43 @@ #!/usr/bin/env php id->range('1-10'); -$project->project->range('0,0,2{8}'); -$project->type->range('program,project,sprint{8}'); +$project->id->range('1-6'); +$project->project->range('0{3},3,4,3'); +$project->type->range('program,project{2},sprint{8}'); $project->status->range('doing{3},wait{7}'); $project->vision->range('rnd'); $project->name->range('1-10')->prefix('Object'); $project->multiple->range('1'); $project->deleted->range('`0`'); -$project->gen(10); +$project->gen(6); $task = zdTable('task'); -$task->id->range('1'); +$task->id->range('1-20'); $task->name->range('task1'); -$task->project->range('2'); +$task->project->range('2{2},3{2}'); +$task->execution->range('4{2},5{2}'); $task->type->range('dev'); $task->left->range('1'); -$task->openedBy->range('admin'); +$task->openedBy->range('admin,user1'); $task->consumed->range('5'); $task->deleted->range('`0`'); -$task->gen(1); +$task->gen(20); $effort = zdTable('effort'); -$effort->id->range('1-2'); +$effort->id->range('1-30'); $effort->objectType->range('task'); -$effort->objectID->range('1'); -$effort->account->range('admin'); -$effort->left->range('7,1'); +$effort->objectID->range('1-20'); +$effort->account->range('admin,user1'); +$effort->left->range('7,1,3'); $effort->consumed->range('2,3'); $effort->deleted->range('`0`'); -$effort->gen(2); +$effort->gen(30); + +zdTable('user')->gen(20); /** @@ -42,15 +45,25 @@ title=测试 personnelModel->getUserHours(); cid=1 pid=1 -正常传入的情况 >> 1 -传入不存在的情况 >> 0 - */ $personnel = new personnelTest('admin'); -$result1 = $personnel->getUserHoursTest('2', array('admin')); -$result2 = $personnel->getUserHoursTest('100', array('admin')); +$projectIdList = array(2, 3, 100); +$accounts = array(array('admin' => 'admin', 'user1' => 'user1'), array('user2' => 'user2')); -r($result1['admin']->left) && p() && e('1'); //正常传入的情况 -r($result2) && p() && e('0'); //传入不存在的情况 +$result1 = $personnel->getUserHoursTest($projectIdList[0], $accounts[0]); +$result2 = $personnel->getUserHoursTest($projectIdList[1], $accounts[0]); +$result3 = $personnel->getUserHoursTest($projectIdList[2], $accounts[0]); +$result4 = $personnel->getUserHoursTest($projectIdList[0], $accounts[1]); +$result5 = $personnel->getUserHoursTest($projectIdList[1], $accounts[1]); +$result6 = $personnel->getUserHoursTest($projectIdList[2], $accounts[1]); + +r($result1['admin']) && p('left,consumed') && e('19,16'); // 测试获取 项目 2 下用户 admin 的工时 +r($result1['user1']) && p('left,consumed') && e('15,24'); // 测试获取 项目 2 下用户 user1 的工时 +r($result2['admin']) && p('left,consumed') && e('15,14'); // 测试获取 项目 3 下用户 admin 的工时 +r($result2['user1']) && p('left,consumed') && e('21,21'); // 测试获取 项目 3 下用户 user1 的工时 +r($result3) && p() && e('0'); // 测试获取 不存在的 项目 100 下用户 admin 的工时 +r($result4) && p() && e('0'); // 测试获取 项目 2 下不存在的用户 user2 的工时 +r($result5) && p() && e('0'); // 测试获取 项目 3 下不存在的用户 user2 的工时 +r($result6) && p() && e('0'); // 测试获取 不存在的 项目 100 下不存在的用户 user2 的工时 diff --git a/module/personnel/test/personnel.class.php b/module/personnel/test/personnel.class.php index 15a2143c65..ec225670b3 100644 --- a/module/personnel/test/personnel.class.php +++ b/module/personnel/test/personnel.class.php @@ -190,14 +190,15 @@ class personnelTest } /** - * GetUserHoursTest + * 测试获取用户工时。 + * Test get user hours. * - * @param int $projectID - * @param array $accounts + * @param int $projectID + * @param array $accounts * @access public - * @return void + * @return array */ - public function getUserHoursTest($projectID, $accounts) + public function getUserHoursTest(int $projectID, array $accounts): array { global $tester; $projects = $tester->dao->select('id')->from(TABLE_PROJECT)->where('id')->in($projectID)->fetchAll('id'); @@ -210,11 +211,7 @@ class personnelTest $invest = array(); foreach($accounts as $account) { - $invest[$account]['createdTask'] = 0; - $invest[$account]['finishedTask'] = 0; - $invest[$account]['pendingTask'] = 0; - $invest[$account]['consumedTask'] = 0; - $invest[$account]['leftTask'] = 0; + $invest[$account]['createdTask'] = $invest[$account]['finishedTask'] = $invest[$account]['pendingTask'] = $invest[$account]['consumedTask'] = $invest[$account]['leftTask'] = 0; } $userTasks = array();