* Adjust for unit test.

This commit is contained in:
wangyidong
2023-12-29 10:12:05 +08:00
parent 7d02072df2
commit 7684fc3c7d
15 changed files with 221 additions and 214 deletions
+4 -11
View File
@@ -163,14 +163,7 @@ class programplanModel extends model
if($project->model == 'ipd' and $datas) $datas = $this->programplanTao->buildGanttData4IPD($datas, $projectID, $productID, $selectCustom, $reviewDeadline);
/* Calculate the progress of the phase. */
foreach($stageIndex as $index => $stage)
{
$progress = empty($stage['progress']['totalConsumed']) ? 0 : round($stage['progress']['totalConsumed'] / $stage['progress']['totalReal'], 3);
$datas['data'][$index]->progress = $progress;
$datas['data'][$index]->taskProgress = ($progress * 100) . '%';
$datas['data'][$index]->estimate = $stage['progress']['totalEstimate'];
$datas['data'][$index]->consumed = $stage['progress']['totalConsumed'];
}
$datas = $this->programplanTao->setStageSummary($datas, $stageIndex);
/* Set relation task data. */
$datas['links'] = $this->programplanTao->buildGanttLinks($planIdList);
@@ -327,7 +320,6 @@ class programplanModel extends model
/* Get linked product by projectID. */
$this->loadModel('action');
$this->loadModel('execution');
$project = $this->fetchById($projectID, 'project');
$linkProducts = $this->programplanTao->getLinkProductsForCreate($projectID, $productID);
/* Set each plans. */
@@ -353,10 +345,11 @@ class programplanModel extends model
}
else
{
$stageID = $this->programplanTao->insertStage($plan, $project, $productID, $parentID);
$stageID = $this->programplanTao->insertStage($plan, $projectID, $productID, $parentID);
if(dao::isError()) return false;
$extra = ($project->hasProduct and !empty($linkProducts['products'])) ? implode(',', $linkProducts['products']) : '';
$project = $this->fetchByID($projectID, 'project');
$extra = ($project && $project->hasProduct and !empty($linkProducts['products'])) ? implode(',', $linkProducts['products']) : '';
$this->action->create('execution', $stageID, 'opened', '', $extra);
$this->execution->updateProducts($stageID, $linkProducts);
+54 -53
View File
@@ -10,6 +10,35 @@ declare(strict_types=1);
*/
class programplanTao extends programplanModel
{
/**
* 获取阶段信息。
* Get stage list.
*
* @param int $executionID
* @param int $productID
* @param string $browseType
* @param string $orderBy
* @access protected
* @return array
*/
protected function getStageList(int $executionID, int $productID, string $browseType, string $orderBy = 'id_asc'): array
{
if(empty($executionID)) return array();
$projectModel = $this->dao->select('model')->from(TABLE_PROJECT)->where('id')->eq($executionID)->fetch('model');
return $this->dao->select('t1.*')->from(TABLE_EXECUTION)->alias('t1')
->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.id = t2.project')
->where('1 = 1')
->beginIF(!in_array($projectModel, array('waterfallplus', 'ipd')))->andWhere('t1.type')->eq('stage')->fi()
->beginIF($productID)->andWhere('t2.product')->eq($productID)->fi()
->beginIF($browseType == 'all' || $browseType == 'leaf')->andWhere('t1.project')->eq($executionID)->fi()
->beginIF($browseType == 'parent')->andWhere('t1.parent')->eq($executionID)->fi()
->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->sprints)->fi()
->andWhere('t1.deleted')->eq('0')
->orderBy($orderBy)
->fetchAll('id');
}
/**
* 更新项目阶段。
* update program plan.
@@ -184,17 +213,17 @@ class programplanTao extends programplanModel
/* Determines if the object is delay. */
$data->delay = $this->lang->programplan->delayList[0];
$data->delayDays = 0;
if($today > $end and $plan->status != 'closed')
if($today > $data->endDate and $plan->status != 'closed')
{
$data->delay = $this->lang->programplan->delayList[1];
$data->delayDays = helper::diffDate($today, substr($end, 0, 10));
$data->delayDays = helper::diffDate($today, $data->endDate);
}
if($data->endDate > $data->start_date) $data->duration = helper::diffDate(substr($data->endDate, 0, 10), substr($data->start_date, 0, 10)) + 1;
if($data->start_date == '' or $data->endDate == '') $data->duration = 1;
if($data->endDate > $data->start_date) $data->duration = helper::diffDate($data->endDate, $data->start_date) + 1;
if(empty($data->start_date) or empty($data->endDate)) $data->duration = 1;
$datas['data'][$plan->id] = $data;
$stageIndex[$plan->id] = array('planID' => $plan->id, 'parent' => $plan->parent, 'progress' => array('totalEstimate' => 0, 'totalConsumed' => 0, 'totalReal' => 0));
$stageIndex[$plan->id] = array('planID' => $plan->id, 'parent' => $plan->parent, 'totalEstimate' => 0, 'totalConsumed' => 0, 'totalReal' => 0);
}
}
@@ -242,49 +271,20 @@ class programplanTao extends programplanModel
if($stage['planID'] != $task->execution) continue;
if(!isset($stageIndex[$index])) continue;
$stageIndex[$index]['progress']['totalEstimate'] += $task->estimate;
$stageIndex[$index]['progress']['totalConsumed'] += $task->parent == '-1' ? 0 : $task->consumed;
$stageIndex[$index]['progress']['totalReal'] += ((($task->status == 'closed' || $task->status == 'cancel') ? 0 : $task->left) + $task->consumed);
if(!isset($stageIndex[$parent])) continue;
$stageIndex[$index]['totalEstimate'] += $task->estimate;
$stageIndex[$index]['totalConsumed'] += $task->parent == '-1' ? 0 : $task->consumed;
$stageIndex[$index]['totalReal'] += ((($task->status == 'closed' || $task->status == 'cancel') ? 0 : $task->left) + $task->consumed);
$parent = $stage['parent'];
$stageIndex[$parent]['progress']['totalEstimate'] += $task->estimate;
$stageIndex[$parent]['progress']['totalConsumed'] += $task->parent == '-1' ? 0 : $task->consumed;
$stageIndex[$parent]['progress']['totalReal'] += ((($task->status == 'closed' || $task->status == 'cancel') ? 0 : $task->left) + $task->consumed);
if(!isset($stageIndex[$parent])) continue;
$stageIndex[$parent]['totalEstimate'] += $task->estimate;
$stageIndex[$parent]['totalConsumed'] += $task->parent == '-1' ? 0 : $task->consumed;
$stageIndex[$parent]['totalReal'] += ((($task->status == 'closed' || $task->status == 'cancel') ? 0 : $task->left) + $task->consumed);
}
}
}
/**
* 获取阶段信息。
* Get stage list.
*
* @param int $executionID
* @param int $productID
* @param string $browseType
* @param string $orderBy
* @access protected
* @return array
*/
protected function getStageList(int $executionID, int $productID, string $browseType, string $orderBy = 'id_asc'): array
{
if(empty($executionID)) return array();
$projectModel = $this->dao->select('model')->from(TABLE_PROJECT)->where('id')->eq($executionID)->fetch('model');
return $this->dao->select('t1.*')->from(TABLE_EXECUTION)->alias('t1')
->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.id = t2.project')
->where('1 = 1')
->beginIF(!in_array($projectModel, array('waterfallplus', 'ipd')))->andWhere('t1.type')->eq('stage')->fi()
->beginIF($productID)->andWhere('t2.product')->eq($productID)->fi()
->beginIF($browseType == 'all' || $browseType == 'leaf')->andWhere('t1.project')->eq($executionID)->fi()
->beginIF($browseType == 'parent')->andWhere('t1.parent')->eq($executionID)->fi()
->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->sprints)->fi()
->andWhere('t1.deleted')->eq('0')
->orderBy($orderBy)
->fetchAll('id');
}
/**
* 获取子阶段数量。
* Get stage count.
@@ -461,7 +461,7 @@ class programplanTao extends programplanModel
$linkProducts = array();
$linkBranches = array();
$productList = $this->loadModel('product')->getProducts($projectID);
if($project->stageBy)
if($project && $project->stageBy)
{
$linkProducts = array(0 => $productID);
if(!empty($productList)) $linkBranches = array(0 => $productList[$productID]->branches);
@@ -482,19 +482,20 @@ class programplanTao extends programplanModel
* 插入阶段数据。
* Insert stage.
* @param object $plan
* @param object $project
* @param int $projectID
* @param int $productID
* @param int $parentID
* @access protected
* @return int|false
*/
protected function insertStage(object $plan, object $project, int $productID, int $parentID): int|false
protected function insertStage(object $plan, int $projectID, int $productID, int $parentID): int|false
{
$project = $this->fetchById($projectID, 'project');
$account = $this->app->user->account;
unset($plan->id);
$plan->status = 'wait';
$plan->stageBy = $project->stageBy;
$plan->stageBy = zget($project, 'stageBy', '');
$plan->version = 1;
$plan->parentVersion = $plan->parent == 0 ? 0 : $this->dao->findByID($plan->parent)->from(TABLE_PROJECT)->fetch('version');
$plan->team = substr($plan->name,0, 30);
@@ -510,7 +511,7 @@ class programplanTao extends programplanModel
$this->insertProjectSpec($stageID, $plan);
/* Ipd project create default review points. */
if($project->model == 'ipd' && $this->config->edition == 'ipd' && !$parentID) $this->loadModel('review')->createDefaultPoint($project->id, $productID, $plan->attribute);
if($project && $project->model == 'ipd' && $this->config->edition == 'ipd' && !$parentID) $this->loadModel('review')->createDefaultPoint($project->id, $productID, $plan->attribute);
if($plan->type == 'kanban')
{
@@ -518,7 +519,7 @@ class programplanTao extends programplanModel
$this->loadModel('kanban')->createRDKanban($execution);
}
$this->loadModel('execution')->createMainLib($project->id, $stageID);
if($project) $this->loadModel('execution')->createMainLib($project->id, $stageID);
$this->execution->addExecutionMembers($stageID, array($account, $plan->PM));
$this->setTreePath($stageID);
@@ -787,13 +788,13 @@ class programplanTao extends programplanModel
*/
protected function setStageSummary(array $ganttData, array $stages): array
{
foreach($stages as $groupKey => $stage)
foreach($stages as $index => $stage)
{
$progress = empty($stage['totalReal']) ? 0 : round($stage['totalConsumed'] / $stage['totalReal'], 3);
$ganttData['data'][$groupKey]->progress = $progress;
$ganttData['data'][$groupKey]->taskProgress = ($progress * 100) . '%';
$ganttData['data'][$groupKey]->estimate = $stage['totalEstimate'];
$ganttData['data'][$groupKey]->consumed = $stage['totalConsumed'];
$ganttData['data'][$index]->progress = $progress;
$ganttData['data'][$index]->taskProgress = ($progress * 100) . '%';
$ganttData['data'][$index]->estimate = $stage['totalEstimate'];
$ganttData['data'][$index]->consumed = $stage['totalConsumed'];
}
return $ganttData;
}
+34
View File
@@ -0,0 +1,34 @@
#!/usr/bin/env php
<?php
/**
title=测试 programplanModel->create();
cid=0
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
su('admin');
zdTable('project')->gen(10);
zdTable('task')->gen(10);
$names = array('阶段31', '阶段121', '阶段211', '阶段301', '阶段391', '阶段481', '阶段571', '新增的阶段', '', '', '', '');
$percents = array('0', '0', '0', '0', '0', '0', '0', '0', '', '', '', '');
$begin = array();
$end = array();
$idList = array(11, 12);
$create = array('name' => $names, 'percent' => $percents, 'begin' => $begin, 'end' => $end, 'id' => $idList);
$programplan = new programplanTest();
$programplan->objectModel->create(array());
r(dao::getError()) && p('message:0') && e('『阶段名称』不能为空。'); // 测试创建用例 工作量占比非数字
r($programplan->createTest(array(), 0, 0, 1000)) && p('message:0') && e('『阶段名称』不能为空。'); // 测试创建用例 工作量占比非数字
exit;
r($programplan->createTest()) && p() && e('7'); // 测试正常更新阶段信息 获取阶段数量
r($programplan->createTest($create)) && p() && e('8'); // 测试正常创建一条阶段信息 获取阶段数量
+8 -12
View File
@@ -1,25 +1,21 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
function initData()
{
zdTable('project')->config('project')->gen(10);
}
/**
title=测试 programplanModel->getByID();
timeout=0
cid=1
cid=0
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
initData();
zdTable('project')->config('project')->gen(10);
global $tester;
$tester->loadModel('programplan');
r($tester->programplan->getByID(2)) && p('name,code') && e('执行1-1,sprint1-1'); // 判断项目阶段id=2的name
r($tester->programplan->getByID(1)) && p('milestone,setMilestone') && e('0,~~'); // 判断项目id=1走else的milestone,setMilestone
r($tester->programplan->getByID(0)) && p() && e('0'); // 传入0参数。
r($tester->programplan->getByID(20)) && p() && e('0'); // 传入不存在的ID。
r($tester->programplan->getByID(2)) && p('name,code') && e('执行1-1,sprint1-1'); // 判断项目阶段id=2的name
r($tester->programplan->getByID(1)) && p('milestone,setMilestone') && e('0,``'); // 判断项目id=1走else的milestone,setMilestone
@@ -1,25 +1,20 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
su('admin');
function initData()
{
zdTable('project')->config('project')->gen(5);
zdTable('task')->config('task')->gen(8);
zdTable('projectproduct')->config('projectproduct')->gen(5);
}
/**
title=测试 programplanModel->getDataForGantt();
timeout=0
cid=1
cid=0
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
su('admin');
zdTable('project')->config('project')->gen(5);
zdTable('task')->config('task')->gen(8);
zdTable('projectproduct')->config('projectproduct')->gen(5);
initData();
$programplan = new programplanTest();
$selectCustom = 'date,task';
@@ -1,25 +1,20 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
su('admin');
function initData()
{
zdTable('project')->config('project')->gen(5);
zdTable('task')->config('task')->gen(8);
zdTable('projectproduct')->config('projectproduct')->gen(5);
}
/**
title=测试 programplanModel->getDataForGanttGroupByAssignedTo();
timeout=0
cid=1
cid=0
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
su('admin');
zdTable('project')->config('project')->gen(5);
zdTable('task')->config('task')->gen(8);
zdTable('projectproduct')->config('projectproduct')->gen(5);
initData();
$programplan = new programplanTest();
$selectCustom = 'date,task';
+5 -12
View File
@@ -1,22 +1,15 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
su('admin');
/**
title=测试 programplanModel->getDuration();
cid=1
pid=1
测试获取2022-04-01 ~ 2022-05-01持续时间 >> 21
测试获取2022-04-02 ~ 2022-05-06持续时间 >> 25
测试获取2022-04-03 ~ 2022-05-11持续时间 >> 28
测试获取2022-04-04 ~ 2022-05-16持续时间 >> 31
测试获取2022-04-05 ~ 2022-05-21持续时间 >> 34
cid=0
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
su('admin');
$beginList = array('2022-04-01', '2022-04-02', '2022-04-03', '2022-04-04', '2022-04-05');
$endList = array('2022-05-01', '2022-05-06', '2022-05-11', '2022-05-16', '2022-05-21');
@@ -27,4 +20,4 @@ r($programplan->getDurationTest($beginList[0], $endList[0])) && p() && e('21');
r($programplan->getDurationTest($beginList[1], $endList[1])) && p() && e('25'); // 测试获取2022-04-02 ~ 2022-05-06持续时间
r($programplan->getDurationTest($beginList[2], $endList[2])) && p() && e('28'); // 测试获取2022-04-03 ~ 2022-05-11持续时间
r($programplan->getDurationTest($beginList[3], $endList[3])) && p() && e('31'); // 测试获取2022-04-04 ~ 2022-05-16持续时间
r($programplan->getDurationTest($beginList[4], $endList[4])) && p() && e('34'); // 测试获取2022-04-05 ~ 2022-05-21持续时间
r($programplan->getDurationTest($beginList[4], $endList[4])) && p() && e('34'); // 测试获取2022-04-05 ~ 2022-05-21持续时间
+9 -13
View File
@@ -1,27 +1,23 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
zdTable('project')->config('getpairs')->gen(10);
zdTable('projectproduct')->config('getprojectproduct')->gen(20);
su('admin');
/**
title=测试 programplanModel->getPairs();
timeout=0
cid=1
- 测试获取执行11 产品11的计划键值对 @,/项目11
- 测试获取执行12 产品12的计划键值对 @,/项目12
cid=0
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
su('admin');
zdTable('project')->config('getpairs')->gen(10);
zdTable('projectproduct')->config('getprojectproduct')->gen(20);
$executionIDList = array(11, 12, 13, 14, 15);
$productIDList = array(11, 12, 13, 14, 15);
$programplan = new programplanTest();
r($programplan->getPairsTest($executionIDList[0], $productIDList[0])) && p() && e(',/项目11'); // 测试获取执行11 产品11的计划键值对
r($programplan->getPairsTest($executionIDList[1], $productIDList[1], 'leaf')) && p() && e(',/项目12'); // 测试获取执行12 产品12的计划键值对
r($programplan->getPairsTest($executionIDList[0], $productIDList[0])) && p() && e(';/项目11'); // 测试获取执行11 产品11的计划键值对
r($programplan->getPairsTest($executionIDList[1], $productIDList[1], 'leaf')) && p() && e(';/项目12'); // 测试获取执行12 产品12的计划键值对
+7 -12
View File
@@ -1,26 +1,21 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
function initData()
{
zdTable('project')->config('project')->gen(5);
zdTable('projectproduct')->config('projectproduct')->gen(5);
}
/**
title=测试 programplanModel->getPlans();
cid=1
pid=1
cid=0
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
initData();
zdTable('project')->config('project')->gen(5);
zdTable('product')->gen(5);
zdTable('projectproduct')->config('projectproduct')->gen(5);
global $tester;
$tester->loadModel('programplan');
$tester->programplan->app->user->admin = true;
r($tester->programplan->getPlans(2, 2)[2]) && p('type,name') && e('stage,阶段a'); // 测试获取执行2 产品2的阶段
r($tester->programplan->getPlans(3, 2)[3]) && p('type,name') && e('stage,阶段a子1'); // 测试获取执行3 产品2的阶段
+20 -21
View File
@@ -1,33 +1,32 @@
#!/usr/bin/env php
<?php
declare(strict_types=1);
/**
title=测试 programplanModel->getStage();
cid=0
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
su('admin');
zdTable('project')->config('project')->gen(10);
zdTable('product')->gen(5);
zdTable('projectproduct')->config('projectproduct')->gen(10);
/**
title=测试 programplanModel->getStage();
cid=1
pid=1
*/
$IDList = array(2, 3, 5);
$productIDList = array(2, 2, 2, 2);
$typeList = array('all', 'parent');
$order = 'id_desc';
$executionIDList = array(2, 3, 5);
$productIDList = array(2, 2, 2, 2);
$typeList = array('all', 'parent');
$order = 'id_desc';
$programplan = new programplanTest();
$programplan->objectModel->app->user->admin = true;
r($programplan->getStageTest($IDList[0], $productIDList[0], $typeList[0])) && p() && e(',新阶段a子1,新阶段a子2,新阶段a子3'); // 测试获取阶段2 产品2 all的名称
r($programplan->getStageTest($IDList[0], $productIDList[0], $typeList[1])) && p() && e(',新阶段a子1,新阶段a子3'); // 测试获取阶段2 产品2 parent的名称
r($programplan->getStageTest($IDList[0], $productIDList[0], $typeList[0], $order)) && p() && e(',新阶段a子3,新阶段a子2,新阶段a子1'); // 测试获取阶段2 产品2 parent id倒叙的名称
r($programplan->getStageTest($IDList[1], $productIDList[1], $typeList[0])) && p() && e(',新阶段a子1子1'); // 测试获取阶段3 产品2 all的名称
r($programplan->getStageTest($IDList[1], $productIDList[1], $typeList[1])) && p() && e(',新阶段a子1子2'); // 测试获取阶段3 产品2 parent的名称
r($programplan->getStageTest($IDList[2], $productIDList[2], $typeList[0])) && p() && e(',新阶段b子1,新阶段b子2'); // 测试获取阶段5 产品2 all的名称
r($programplan->getStageTest($IDList[2], $productIDList[2], $typeList[1])) && p() && e(',新阶段b子1'); // 测试获取阶段5 产品2 parent的名称
r($programplan->getStageTest($IDList[2], $productIDList[2], $typeList[0], $order)) && p() && e(',新阶段b子2,新阶段b子1'); // 测试获取阶段2 产品2 all id倒叙的名称
r($programplan->getStageTest($executionIDList[0], $productIDList[0], $typeList[0])) && p('0,1') && e('新阶段a子1;新阶段a子2;新阶段a子3,2;2;2'); // 测试获取阶段2 产品2 all的名称
r($programplan->getStageTest($executionIDList[0], $productIDList[0], $typeList[0], $order)) && p('0,1') && e('新阶段a子3;新阶段a子2;新阶段a子1,2;2;2'); // 测试获取阶段2 产品2 parent id倒叙的名称
r($programplan->getStageTest($executionIDList[0], $productIDList[0], $typeList[1])) && p('0,1') && e('新阶段a子1;新阶段a子3,2;2'); // 测试获取阶段2 产品2 parent的名称
r($programplan->getStageTest($executionIDList[1], $productIDList[1], $typeList[0])) && p('0,1') && e('新阶段a子1子1,2'); // 测试获取阶段3 产品2 all的名称
r($programplan->getStageTest($executionIDList[1], $productIDList[1], $typeList[1])) && p('0,1') && e('新阶段a子1子2,2'); // 测试获取阶段3 产品2 parent的名称
r($programplan->getStageTest($executionIDList[2], $productIDList[2], $typeList[0])) && p('0,1') && e('新阶段b子1;新阶段b子2,2;2'); // 测试获取阶段5 产品2 all的名称
r($programplan->getStageTest($executionIDList[2], $productIDList[2], $typeList[1])) && p('0,1') && e('新阶段b子1,2'); // 测试获取阶段5 产品2 parent的名称
r($programplan->getStageTest($executionIDList[2], $productIDList[2], $typeList[0], $order)) && p('0,1') && e('新阶段b子2;新阶段b子1,2;2'); // 测试获取阶段2 产品2 all id倒叙的名称
@@ -1,6 +1,12 @@
#!/usr/bin/env php
<?php
declare(strict_types=1);
/**
title=测试 programplanModel->processPlan();
cid=0
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
@@ -9,14 +15,6 @@ su('admin');
zdTable('project')->config('project')->gen(5);
zdTable('projectproduct')->config('projectproduct')->gen(5);
zdTable('product')->config('product')->gen(2);
/**
title=测试 programplanModel->processPlan();
cid=1
pid=1
*/
$planIDList = array(1, 2, 3);
$programplan = new programplanTest();
@@ -1,6 +1,11 @@
#!/usr/bin/env php
<?php
declare(strict_types=1);
/**
title=测试 programplanModel->processPlans();
cid=0
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
@@ -9,14 +14,6 @@ su('admin');
zdTable('project')->config('project')->gen(6);
zdTable('projectproduct')->config('projectproduct')->gen(6);
zdTable('product')->config('product')->gen(2);
/**
title=测试 programplanModel->processPlans();
cid=1
pid=1
*/
$planIDList = array(array(1, 2), array(3, 4), array(5, 6, 7));
$programplan = new programplanTest();
@@ -27,6 +27,10 @@ fields:
range: 'stage,project'
- field: grade
range: 1
- field: path
range: 11-20
prefix: ',1,'
postfix: ','
- field: days
range: 1
- field: status
+41 -29
View File
@@ -8,6 +8,8 @@ class programplanTest
global $tester;
$this->objectModel = $tester->loadModel('programplan');
$tester->dao->delete()->from(TABLE_PROJECTSPEC)->exec();
$this->objectModel->app->user->admin = true;
}
/**
@@ -37,17 +39,20 @@ class programplanTest
* @param string $browseType
* @param string $orderBy
* @access public
* @return string
* @return array
*/
public function getStageTest(int $executionID = 0, int $productID = 0, string $browseType = 'all', string $orderBy = 'id_asc'): string
public function getStageTest(int $executionID = 0, int $productID = 0, string $browseType = 'all', string $orderBy = 'id_asc'): array
{
$objects = $this->objectModel->getStage($executionID, $productID, $browseType, $orderBy);
if(dao::isError()) return dao::getError();
$title = '';
foreach($objects as $object) $title .= ',' . $object->name;
return $title;
$titles = array();
$products = array();
foreach($objects as $object)
{
$titles[] = $object->name;
$products[] = $object->product;
}
return array(implode(';', $titles), implode(';', $products));
}
/**
@@ -102,7 +107,7 @@ class programplanTest
if(dao::isError()) return dao::getError();
return implode(',', $objects);
return implode(';', $objects);
}
/**
@@ -183,40 +188,47 @@ class programplanTest
* @access public
* @return array
*/
public function createTest($param = array())
public function createTest($param = array(), $projectID = 0, $productID = 0, $parentID = 0)
{
$_POST['planIDList'] = array('131', '221', '311', '401', '491', '581', '671');
global $tester;
$plans = $tester->dao->select('*')->from(TABLE_PROJECT)->where('id')->in($_POST['planIDList'])->fetchAll();
$_POST['names'] = array('阶段31', '阶段121', '阶段211', '阶段301', '阶段391', '阶段481', '阶段571', '', '', '', '', '');
$date = date('Y-m-d');
$_POST['names'] = array('阶段31', '阶段121', '阶段211', '阶段301', '阶段391', '阶段481', '阶段571');
$_POST['PM'] = array('', '', '', '', '', '', '', '', '', '', '', '');
$_POST['percents'] = array('0', '0', '0', '0', '0', '0', '0', '', '', '', '', '');
$_POST['attributes'] = array('request', 'request', 'request', 'request', 'request', 'request', 'request', 'request', 'request', 'request', 'request', 'request');
$_POST['acl'] = array('private', 'open', 'open', 'private', 'private', 'open', 'open', 'open', 'open', 'open', 'open', 'open');
$_POST['milestone'] = array('0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');
$_POST['begin'] = (isset($param['begin']) and isset($param['end'])) ? array($plans[0]->begin, $plans[0]->begin, $plans[0]->begin, $plans[0]->begin, $plans[0]->begin, $plans[0]->begin, $plans[0]->begin, $plans[0]->begin, '', '', '', '') : array($plans[0]->begin, $plans[0]->begin, $plans[0]->begin, $plans[0]->begin, $plans[0]->begin, $plans[0]->begin, $plans[0]->begin, '', '', '', '', '');
$_POST['end'] = (isset($param['begin']) and isset($param['end'])) ? array($plans[0]->end, $plans[0]->end, $plans[0]->end, $plans[0]->end, $plans[0]->end, $plans[0]->end, $plans[0]->end, $plans[0]->end, '', '', '', '') : array($plans[0]->end, $plans[0]->end, $plans[0]->end, $plans[0]->end, $plans[0]->end, $plans[0]->end, $plans[0]->end, '', '', '', '', '');
$_POST['realBegan'] = array('', '', '', '', '', '', '', '', '', '', '', '');
$_POST['realEnd'] = array('', '', '', '', '', '', '', '', '', '', '', '');
foreach($param as $field => $value)
$plans = array();
foreach($_POST['names'] as $i => $name)
{
if(count($param) == 1 or ($field != 'begin' and $field != 'end')) $_POST[$field] = $value;
$plan = new stdclass();
$plan->id = 0;
$plan->type = 'stage';
$plan->name = $name;
$plan->parent = 1;
$plan->PM = $_POST['PM'][$i];
$plan->percent = $_POST['percents'][$i];
$plan->attribute = $_POST['attributes'][$i];
$plan->milestone = $_POST['milestone'][$i];
$plan->begin = $date;
$plan->end = $date;
$plan->realBegan = null;
$plan->realEnd = null;
$plan->acl = $_POST['acl'][$i];
$plans[] = $plan;
}
$objects = $this->objectModel->create(41, 0, 0);
foreach($param as $field => $values)
{
foreach($values as $i => $value) $plans[$i]->{$field} = $value;
}
$objects = $this->objectModel->create($plans, $projectID, $productID, $parentID);
unset($_POST);
if(dao::isError())
{
$error = dao::getError()['message'][0];
$error = strpos($error, '所属项目的') > 0 ? preg_replace('/\d{4}-\d{2}-\d{2}/', '', $error) : $error;
return $error;
}
if(dao::isError()) return dao::getError();
$objects = $tester->dao->select('*')->from(TABLE_PROJECT)->where('parent')->eq($plans[0]->parent)->andWhere('type')->eq('stage')->fetchAll();
return count($objects);
+6 -7
View File
@@ -1,23 +1,22 @@
#!/usr/bin/env php
<?php
declare(strict_types=1);
include dirname(__FILE__, 5). '/test/lib/init.php';
su('admin');
/**
title=测试 loadModel->getStageList()
cid=1
pid=1
cid=0
*/
include dirname(__FILE__, 5). '/test/lib/init.php';
su('admin');
zdTable('project')->config('project')->gen(5);
zdTable('projectproduct')->config('projectproduct')->gen(5);
global $tester;
$tester->loadModel('programplan')->programplanTao;
$tester->loadModel('programplan');
$tester->programplan->app->user->admin = true;
$browseType = 'parent';
$IDList = array(1, 2, 3, 4, 5, 100);