* Refactor personnelModel::getUserHours, and modify its unit test.
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -1,40 +1,43 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/personnel.class.php';
|
||||
su('admin');
|
||||
|
||||
$project = zdTable('project');
|
||||
$project->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 的工时
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user