diff --git a/module/project/model.php b/module/project/model.php
index bd466543f9..f96ea05e27 100644
--- a/module/project/model.php
+++ b/module/project/model.php
@@ -851,7 +851,7 @@ class projectModel extends model
if(isset($project->budget) and $program->budget != 0)
{
$availableBudget = $this->loadModel('program')->getBudgetLeft($program);
- if($project->budget > $availableBudget) dao::$errors['budget'] = $this->lang->program->beyondParentBudget;
+ if($availableBudget > 0 and $project->budget > $availableBudget) dao::$errors['budget'] = $this->lang->program->beyondParentBudget;
}
/* Judge products not empty. */
diff --git a/module/task/model.php b/module/task/model.php
index 5316974064..55d3ecc2e6 100644
--- a/module/task/model.php
+++ b/module/task/model.php
@@ -883,6 +883,8 @@ class taskModel extends model
*/
public function update($taskID)
{
+ if($taskID <= 0) return;
+
$oldTask = $this->getByID($taskID);
if($this->post->estimate < 0 or $this->post->left < 0 or $this->post->consumed < 0)
{
diff --git a/test/class/project.class.php b/test/class/project.class.php
index 45fa017f41..82971993f9 100644
--- a/test/class/project.class.php
+++ b/test/class/project.class.php
@@ -8,11 +8,10 @@ class Project
* @access public
* @return void
*/
- public function __construct($user)
+ public function __construct()
{
global $tester;
- su($user);
$this->project = $tester->loadModel('project');
}
@@ -36,18 +35,6 @@ class Project
return true;
}
- /**
- * checkHasChildren
- *
- * @param int mixed $projectID
- * @access public
- * @return void
- */
- public function checkHasChildren($projectID)
- {
- return $this->project->checkHasChildren($projectID);
- }
-
/**
* checkStatusOff
*
@@ -74,136 +61,6 @@ class Project
return true;
}
- /**
- * checkBudgetUnitList
- *
- * @param string $checkList
- * @param 'USD' => '美元') $'USD' => '美元')
- * @access public
- * @return void
- */
- public function checkBudgetUnitList($checkList = array('CNY' => '人民币', 'USD' => '美元'))
- {
- $budgetList = $this->project->getBudgetUnitList();
- foreach($budgetList as $enBudget => $zhBudget)
- {
- if($checkList[$enBudget] != $zhBudget) return false;
- }
- return true;
- }
-
- /**
- * getByIdList
- *
- * @param array mixed $projectIdList
- * @param int mixed $count
- * @access public
- * @return void
- */
- public function getByIdList($projectIdList, $count)
- {
- $projectList = $this->project->getByIdList($projectIdList);
- if(count($projectList) != $count) return false;
- return $projectList;
- }
-
- /**
- * getProjectByID
- *
- * @param int mixed $projectID
- * @access public
- * @return void
- */
- public function getProjectByID($projectID)
- {
- return $this->project->getByID($projectID);
- }
-
- /**
- * getProgramByID
- *
- * @param int mixed $programID
- * @access public
- * @return void
- */
- public function getProgramByID($programID)
- {
- return $this->project->getByID($programID, 'program');
- }
-
-
- /**
- * getSprintByID
- *
- * @param int mixed $sprintID
- * @access public
- * @return void
- */
- public function getSprintByID($sprintID)
- {
- return $this->project->getByID($sprintID, 'sprint');
- }
-
- /**
- * getStageByID
- *
- * @param int mixed $stageID
- * @access public
- * @return void
- */
- public function getStageByID($stageID)
- {
- return $this->project->getByID($stageID, 'stage');
- }
-
- /**
- * getKanbanByID
- *
- * @param int mixed $kanbanID
- * @access public
- * @return void
- */
- public function getKanbanByID($kanbanID)
- {
- return $this->project->getByID($kanbanID, 'kanban');
- }
-
- /**
- * getBystatus
- *
- * @param string mixed $status
- * @access public
- * @return void
- */
- public function getBystatus($status)
- {
- $projects = $this->project->getOverviewList('byStatus', $status);
- if(!$projects)
- {
- $result = array();
- $result['code'] = 'fail';
- $result['message'] = 'No data.';
-
- return $result;
- }
-
- if($status == 'undone') $status = 'wait,doing,suspended';
-
- foreach($projects as $project)
- {
- if(strpos(",$status,", $project->status) === false)
- {
- $result = array();
- $result['code'] = 'fail';
- $result['message'] = 'Error data.';
-
- return $result;
- }
- }
-
- return count($projects);
- }
-
/**
* getListByOrder
*
@@ -229,54 +86,6 @@ class Project
return $this->project->getOverviewList('byID', $projectID);
}
- /**
- * getByIdListFind
- *
- * @param array mixed $IDList
- * @access public
- * @return void
- */
- public function getByIdListFind($IDList)
- {
- $projects = $this->project->getPairsByIdList($IDList);
- if(empty($projects))
- {
- $result = array();
- $result['code'] = 'fail';
- $result['message'] = 'No data.';
-
- return $result;
- }
-
- foreach($projects as $projectID => $projectName)
- {
- if(!empty($IDList) and !in_array($projectID, $IDList))
- {
- $result = array();
- $result['code'] = 'fail';
- $result['message'] = 'Error Data.';
-
- return $result;
- }
- }
-
- return count($projects);
- }
-
- /**
- * getParentName
- *
- * @param int mixed $projectID
- * @access public
- * @return void
- */
- public function getParentName($projectID)
- {
- $program = $this->project->getParentName($projectID);
- if(empty($program)) return false;
- return $program;
- }
-
/**
* getTeamMemberPairs
*
@@ -408,63 +217,6 @@ class Project
return $releases;
}
- /**
- * getByProgram
- *
- * @param int mixed $programID
- * @access public
- * @return void
- */
- public function getByProgram($programID)
- {
- $projects = $this->project->getPairsByProgram($programID);
- if(empty($projects))
- {
- $result = array();
- $result['code'] = 'fail';
- $result['message'] = 'No data.';
-
- return $result;
- }
-
- return count($projects);
- }
-
- /**
- * getByStatusPairs
- *
- * @param string mixed $status
- * @access public
- * @return void
- */
- public function getByStatusPairs($status)
- {
- $projects = $this->project->getPairsByProgram(2, $status);
- if(empty($projects))
- {
- $result = array();
- $result['code'] = 'fail';
- $result['message'] = 'No data.';
-
- return $result;
- }
-
- return count($projects);
- }
-
- /**
- * getConsumed
- *
- * @param array mixed $projectIdList
- * @access public
- * @return void
- */
- public function getConsumed($projectIdList)
- {
- $projects = $this->project->getProjectsConsumed($projectIdList, $time = '');
- return $projects;
- }
-
/**
* getByStatusExe
*
@@ -504,46 +256,6 @@ class Project
return count($executions);
}
- /**
- * getTotalBugBy
- *
- * @param array mixed $projectIdList
- * @param string mixed $status
- * @access public
- * @return void
- */
- public function getTotalBugBy($projectIdList, $status)
- {
- $projects = $this->project->getTotalBugByProject($projectIdList, $status);
- return $projects;
- }
-
- /**
- * getWorkHour
- *
- * @param int mixed $projectID
- * @access public
- * @return void
- */
- public function getWorkHour($projectID)
- {
- $projects = $this->project->getWorkhour($projectID);
- return $projects;
- }
-
- /**
- * getInfoList
- *
- * @param string mixed $status
- * @access public
- * @return void
- */
- public function getInfoList($status)
- {
- $projects = $this->project->getInfoList($status);
- return $projects;
- }
-
/**
* getStatData
*
@@ -573,6 +285,25 @@ class Project
return $projects;
}
+ /**
+ * Test create project.
+ *
+ * @param array $params
+ * @access public
+ * @return void
+ */
+ public function create($params)
+ {
+ $_POST = $params;
+
+ $projectID = $this->project->create();
+ unset($_POST);
+
+ if(dao::isError()) return array('message' => dao::getError());
+
+ return $this->project->getById($projectID);
+ }
+
/**
* saveState
*
@@ -583,9 +314,7 @@ class Project
public function saveState($projectID)
{
$projects = $this->project->getPairsByProgram();
- $object = $this->project->saveState($projectID, $projects);
+ $object = $this->project->saveState($projectID, $projects);
return $object;
}
-
}
-?>
diff --git a/test/model/program/create.php b/test/model/program/create.php
index 2482bf3a23..948d580e5d 100755
--- a/test/model/program/create.php
+++ b/test/model/program/create.php
@@ -52,8 +52,6 @@ $moreThanParent['parent'] = '1';
$moreThanParent['begin'] = '2018-01-01';
$moreThanParent['end'] = '2022-02-10';
-$add_itemset = array('1', '2', '3', '4', '5', '6');
-
r($program->create($normalProgram)) && p('name') && e('测试新增项目集一'); // 创建新项目集
r($program->create($emptyNameProgram)) && p('message[name]:0') && e('『项目集名称』不能为空。'); // 项目集名称为空时
r($program->create($emptyBeginProgram)) && p('message[begin]:0') && e('『计划开始』不能为空。'); // 项目集的开始时间为空
diff --git a/test/model/project/buildmenuquery.php b/test/model/project/buildmenuquery.php
new file mode 100644
index 0000000000..26d9f1f57e
--- /dev/null
+++ b/test/model/project/buildmenuquery.php
@@ -0,0 +1,18 @@
+#!/usr/bin/env php
+buildMenuQuery();
+cid=1
+pid=1
+
+*/
+
+global $tester;
+$tester->loadModel('project');
+
+r(strlen($tester->project->buildMenuQuery(11))) && p() && e('231'); // 获取构建的查询项目的sql的字符串长度
+r(strlen($tester->project->buildMenuQuery(100))) && p() && e('233'); // 获取构建的查询项目的sql的字符串长度
diff --git a/test/model/project/checkhaschildren.php b/test/model/project/checkhaschildren.php
index d4fd3638b6..646ee19b36 100755
--- a/test/model/project/checkhaschildren.php
+++ b/test/model/project/checkhaschildren.php
@@ -19,4 +19,4 @@ $project = new Project('admin');
$getID = array(1, 101);
r($project->checkHasChildren($getID[0])) && p() && e('1'); //获取id为1的项目是否有子项目
-r($project->checkHasChildren($getID[1])) && p() && e('0'); //获取id为101的项目是否有子项目
\ No newline at end of file
+r($project->checkHasChildren($getID[1])) && p() && e('0'); //获取id为101的项目是否有子项目
diff --git a/test/model/project/create.php b/test/model/project/create.php
new file mode 100644
index 0000000000..0f814dde31
--- /dev/null
+++ b/test/model/project/create.php
@@ -0,0 +1,62 @@
+#!/usr/bin/env php
+> 测试新增项目一
+项目名称为空时 >> 『项目名称』不能为空。
+项目的开始时间为空 >> 『计划开始』不能为空。
+项目的完成时间为空 >> 『计划完成』不能为空。
+项目的计划完成时间大于计划开始时间 >> 『计划完成』应当大于『2022-01-12』。
+项目的完成日期大于父项目的完成日期(需要实时更新日期) >> 父项目的开始日期:2022-01-16,开始日期不能小于父项目的开始日期
+
+*/
+
+$project = new Project();
+
+$data = array(
+ 'parent' => 1,
+ 'name' => '测试新增项目一',
+ 'budget' => '',
+ 'budgetUnit' => 'CNY',
+ 'begin' => '2022-02-03',
+ 'end' => '2022-03-01',
+ 'desc' => '测试项目描述',
+ 'acl' => 'private',
+ 'whitelist' => '',
+ 'PM' => '',
+ 'products' => array(1)
+);
+
+$normalProject = $data;
+
+$emptyNameProject = $data;
+$emptyNameProject['name'] = '';
+
+$emptyBeginProject = $data;
+$emptyBeginProject['begin'] = '';
+
+$emptyEndProject = $data;
+$emptyEndProject['end'] = '';
+
+$beginGtEndProject = $data;
+$beginGtEndProject['end'] = '2022-01-10';
+
+$moreThanParent = $data;
+$moreThanParent['parent'] = '1';
+$moreThanParent['begin'] = '2018-01-01';
+
+r($project->create($normalProject)) && p('name') && e('测试新增项目一'); // 创建新项目
+r($project->create($emptyNameProject)) && p('message[name]:0') && e('『项目名称』不能为空。'); // 项目名称为空时
+r($project->create($emptyBeginProject)) && p('message[begin]:0') && e('『计划开始』不能为空。'); // 项目的开始时间为空
+r($project->create($emptyEndProject)) && p('message[end]:0') && e('『计划完成』不能为空。'); // 项目的完成时间为空
+r($project->create($beginGtEndProject)) && p('message[end]:0') && e('『计划完成』应当大于『2022-01-12』。'); // 项目的计划完成时间大于计划开始时间
+r($project->create($moreThanParent)) && p('message:begin;message:end') && e('父项目的开始日期:2022-01-16,开始日期不能小于父项目的开始日期'); // 项目的完成日期大于父项目的完成日期(需要实时更新日期)
+system("./ztest init");
diff --git a/test/model/project/getbranchesbyproject.php b/test/model/project/getbranchesbyproject.php
new file mode 100644
index 0000000000..6550b8eff8
--- /dev/null
+++ b/test/model/project/getbranchesbyproject.php
@@ -0,0 +1,21 @@
+#!/usr/bin/env php
+getBranchesByProject();
+cid=1
+pid=1
+
+*/
+
+global $tester;
+$tester->loadModel('project');
+
+$projectIdList = array(11, 12, 13);
+
+r(count($tester->project->getBranchesByProject(11))) && p('') && e('3'); // 获取id为11的项目的关联产品的分支数组数量,按产品分组
+r(key($tester->project->getBranchesByProject(11))) && p('') && e('1'); // 获取id为11的项目的关联产品的分支数组,获取第一个数组的键
+r(count($tester->project->getBranchesByProject(12))) && p('') && e('3'); // 获取id为12的项目的关联产品的分支数组数量,按产品分组
diff --git a/test/model/project/getbranchgroupbyproject.php b/test/model/project/getbranchgroupbyproject.php
new file mode 100644
index 0000000000..26ac63c1b0
--- /dev/null
+++ b/test/model/project/getbranchgroupbyproject.php
@@ -0,0 +1,21 @@
+#!/usr/bin/env php
+getBranchGroupByProject();
+cid=1
+pid=1
+
+*/
+
+global $tester;
+$tester->loadModel('project');
+
+$productIdList = array(1, 2, 3);
+
+r(count($tester->project->getBranchGroupByProject(11, $productIdList))) && p('') && e('1'); // 获取id为11的项目的关联产品的分支数组数量,按产品分组
+r(key($tester->project->getBranchGroupByProject(12, $productIdList))) && p('') && e('2'); // 获取id为11的项目的关联产品的分支数组,获取第一个数组的键
+r(count($tester->project->getBranchGroupByProject(13, $productIdList))) && p('') && e('1'); // 获取id为12的项目的关联产品的分支数组数量,按产品分组
diff --git a/test/model/project/getbudgetunitlist.php b/test/model/project/getbudgetunitlist.php
index 31d6c0d020..db6ab2efc9 100755
--- a/test/model/project/getbudgetunitlist.php
+++ b/test/model/project/getbudgetunitlist.php
@@ -1,7 +1,6 @@
#!/usr/bin/env php
checkBudgetUnitList()) && p() && e('1'); //检查翻译
\ No newline at end of file
+global $tester;
+$tester->loadModel('project');
+
+r($tester->project->getBudgetUnitList()) && p('CNY,USD') && e('人民币,美元'); //获取系统中的货币单位
diff --git a/test/model/project/getbyid.php b/test/model/project/getbyid.php
index 1aaae57c76..b82ad63236 100755
--- a/test/model/project/getbyid.php
+++ b/test/model/project/getbyid.php
@@ -1,7 +1,7 @@
#!/usr/bin/env php
loadModel('project');
-$getId = array(11, 0, 1, 0, 101, 0, 131, 0, 161, 0);
-
-r($t->getProjectByID($getId[0])) && p('code,type') && e('project1,project'); //获取ID等于11的项目
-r($t->getProjectByID($getId[1])) && p('code,type') && e('0'); //获取不存在的项目
-r($t->getProgramByID($getId[2])) && p('code,type') && e('program1,program'); //获取ID等于1的项目集
-r($t->getProgramByID($getId[3])) && p('code,type') && e('0'); //获取不存在的项目集
-r($t->getSprintByID($getId[4])) && p('code,type') && e('project1,sprint'); //获取ID等于101的冲刺
-r($t->getSprintByID($getId[5])) && p('code,type') && e('0'); //获取不存在的冲刺
-r($t->getStageByID($getId[6])) && p('code,type') && e('project31,stage'); //获取ID等于131的阶段
-r($t->getStageByID($getId[7])) && p('code,type') && e('0'); //获取不存在的阶段
-r($t->getKanbanByID($getId[8])) && p('code,type') && e('project61,kanban'); //获取ID等于161的阶段
-r($t->getKanbanByID($getId[9])) && p('code,type') && e('0'); //获取不存在的看板
\ No newline at end of file
+r($tester->project->getByID(11, 'project')) && p('code,type') && e('project1,project'); //获取ID等于11的项目
+r($tester->project->getByID(0, 'project')) && p('code,type') && e('0'); //获取不存在的项目
+r($tester->project->getByID(1, 'program')) && p('code,type') && e('program1,program'); //获取ID等于1的项目集
+r($tester->project->getByID(0, 'program')) && p('code,type') && e('0'); //获取不存在的项目集
+r($tester->project->getByID(101, 'sprint')) && p('code,type') && e('project1,sprint'); //获取ID等于101的冲刺
+r($tester->project->getByID(0, 'sprint')) && p('code,type') && e('0'); //获取不存在的冲刺
+r($tester->project->getByID(131, 'stage')) && p('code,type') && e('project31,stage'); //获取ID等于131的阶段
+r($tester->project->getByID(0, 'stage')) && p('code,type') && e('0'); //获取不存在的阶段
+r($tester->project->getByID(161, 'kanban')) && p('code,type') && e('project61,kanban'); //获取ID等于161的阶段
+r($tester->project->getByID(0, 'kanban')) && p('code,type') && e('0'); //获取不存在的看板
diff --git a/test/model/project/getbyidlist.php b/test/model/project/getbyidlist.php
index 025a1555bc..51eafaf97f 100755
--- a/test/model/project/getbyidlist.php
+++ b/test/model/project/getbyidlist.php
@@ -1,7 +1,7 @@
#!/usr/bin/env php
loadModel('project');
$projectIdList = array(11,12,13);
-r(($t->getByIdList($projectIdList, 3))) && p('11:name;12:name;13:name') && e('项目1;项目2;项目3'); //获取projectIdList对应的项目名称
\ No newline at end of file
+r(($tester->project->getByIdList($projectIdList))) && p('11:name;12:name;13:name') && e('项目1;项目2;项目3'); //获取projectIdList对应的项目名称
diff --git a/test/model/project/getinfolist.php b/test/model/project/getinfolist.php
index cfda53c84d..2e0159c408 100755
--- a/test/model/project/getinfolist.php
+++ b/test/model/project/getinfolist.php
@@ -1,7 +1,7 @@
#!/usr/bin/env php
loadModel('project');
-$t_status = array('doing', 'wait', 'suspended', 'closed', 'all');
+$doingProjects = $tester->project->getInfoList('doing');
+$waitProjects = $tester->project->getInfoList('wait');
+$suspendedProjects = $tester->project->getInfoList('suspended');
+$closedProjects = $tester->project->getInfoList('closed');
+$allProjects = $tester->project->getInfoList('all');
-//var_dump($project->getInfoList('all'));die;
-r($project->getInfoList($t_status[0])) && p() && e('0'); //查询正在进行的项目
-r($project->getInfoList($t_status[1])) && p('11:name') && e('项目1'); //查询等待状态的项目
-r($project->getInfoList($t_status[2])) && p() && e('0'); //查询暂停状态的项目
-r($project->getInfoList($t_status[3])) && p() && e('0'); //查询关闭状态的项目
-r($project->getInfoList($t_status[4])) && p('11:name') && e('项目1'); //查询所有状态的项目
\ No newline at end of file
+r(count($doingProjects)) && p() && e('44'); //查询正在进行的项目数量
+r($waitProjects) && p('11:name') && e('项目1'); //查询wait状态的Id为11的项目名称
+r(count($suspendedProjects)) && p() && e('11'); //查询暂停状态的项目数量
+r(count($closedProjects)) && p() && e('11'); //查询关闭状态的项目数量
+r(count($allProjects)) && p() && e('110'); //查询所有状态的项目数量
diff --git a/test/model/project/getmultilinkedproducts.php b/test/model/project/getmultilinkedproducts.php
new file mode 100644
index 0000000000..93ca8be7e7
--- /dev/null
+++ b/test/model/project/getmultilinkedproducts.php
@@ -0,0 +1,22 @@
+#!/usr/bin/env php
+loadModel('project');
+
+$products1 = $tester->project->getMultiLinkedProducts(1);
+$products2 = $tester->project->getMultiLinkedProducts(11);
+
+r(count($products1)) && p() && e('0'); //查询项目1的关联产品数量
+r(count($products2)) && p() && e('3'); //查询项目11的关联产品数量
+r($products2) && p('1,91,81') && e('正常产品1,多平台产品91,多平台产品81'); //查询项目11关联的产品名称
diff --git a/test/model/project/getoverviewlist.php b/test/model/project/getoverviewlist.php
index 6004dea5ed..e4ef52b1c7 100755
--- a/test/model/project/getoverviewlist.php
+++ b/test/model/project/getoverviewlist.php
@@ -1,7 +1,7 @@
#!/usr/bin/env php
loadModel('project');
-$P_status = array('wait', 'undone', 11, 10000, 'id_asc', 'name_desc');
+$byStatus1 = $tester->project->getOverviewList('byStatus', 'wait');
+$byStatus2 = $tester->project->getOverviewList('byStatus', 'undone');
-r($t->getByStatus($P_status[0])) && p() && e('15'); // 获取未开始的项目
-r($t->getByStatus($P_status[1])) && p() && e('15'); // 获取状态不为done和closed的项目
-r($t->getByID($P_status[2])) && p('11:id') && e('11'); // 根据项目ID获取项目详情
-r($t->getByID($P_status[3])) && p('id') && e('0'); // 获取不存在的项目
-r($t->getListByOrder($P_status[4])) && p() && e('1'); //按照ID正序获取项目列表
-r($t->getListByOrder($P_status[5])) && p() && e('1'); // 按照项目名称倒序获取项目列表
\ No newline at end of file
+$byId1 = $tester->project->getOverviewList('byid', '11');
+$byId2 = $tester->project->getOverviewList('byid', '10000');
+
+$byOrder1 = $tester->project->getOverviewList('byStatus', 'all', 'id_asc');
+$byOrder2 = $tester->project->getOverviewList('byStatus', 'all', 'name_desc');
+
+r(count($byStatus1)) && p() && e('15'); // 获取未开始的项目数量
+r(count($byStatus2)) && p() && e('15'); // 获取状态不为done和closed的项目数量
+r(count($byId1)) && p() && e('1'); // 根据项目ID获取项目
+r(count($byId2)) && p() && e('0'); // 获取不存在的项目
+r(current($byOrder1)) && p('id,name') && e('11,项目1'); // 按照ID正序获取项目列表,查看排第一个的项目详情
+r(current($byOrder2)) && p('id,name') && e('100,项目90'); // 按照项目名称倒序获取项目列表,查看排第一个的项目详情
diff --git a/test/model/project/getpairsbyidlist.php b/test/model/project/getpairsbyidlist.php
index 1ecc019e2e..309885c4ee 100755
--- a/test/model/project/getpairsbyidlist.php
+++ b/test/model/project/getpairsbyidlist.php
@@ -1,11 +1,11 @@
#!/usr/bin/env php
getPairsByIdList();
cid=1
pid=1
@@ -14,10 +14,9 @@ pid=1
*/
-$project = new Project('admin');
+global $tester;
+$tester->loadModel('project');
+$projectIdList = array(0, 11, 12, 13);
-$findProject = array(0,11,12,13);
-$findAllPro = array();
-
-r($project->getByIdListFind($findProject)) && p() && e('3'); //查找ID为0、11、12、13的项目
-r($project->getByIdListFind($findAllPro)) && p() && e('90'); //查找所有项目
\ No newline at end of file
+r(count($tester->project->getPairsByIdList($projectIdList))) && p() && e('3'); //查找ID为0、11、12、13的项目数量
+r(count($tester->project->getPairsByIdList(array()))) && p() && e('110'); //查找所有项目数量
diff --git a/test/model/project/getpairsbymodel.php b/test/model/project/getpairsbymodel.php
new file mode 100644
index 0000000000..f1528f851e
--- /dev/null
+++ b/test/model/project/getpairsbymodel.php
@@ -0,0 +1,19 @@
+#!/usr/bin/env php
+getPairsByModel();
+cid=1
+pid=1
+
+*/
+
+global $tester;
+$tester->loadModel('project');
+
+r(count($tester->project->getPairsByModel('all', 1))) && p() && e('9'); // 获取项目集1下的所有项目数量
+r($tester->project->getPairsByModel('all', 1)) && p('21') && e('项目集1 / 项目11'); // 获取项目集1下的项目名称
+r(count($tester->project->getPairsByModel('waterfall', 1))) && p() && e('3'); // 获取项目集1下的所有瀑布项目数量
diff --git a/test/model/project/getpairsbyprogram.php b/test/model/project/getpairsbyprogram.php
index c9bb509194..216aba2df7 100755
--- a/test/model/project/getpairsbyprogram.php
+++ b/test/model/project/getpairsbyprogram.php
@@ -1,36 +1,23 @@
#!/usr/bin/env php
getPairsByProgram();
cid=1
pid=1
-查找管理员可查看的所有项目 >> 90
-查找独立项目 >> No data.
-查找管理员可查看的所属项目集ID为1的项目 >> 9
-查找管理员可查看的所属项目集ID为1且状态为wait的项目 >> 3
-查找管理员可查看的所属项目集ID为1且状态不为closed的项目 >> 7
-
*/
-/*
- public function getListByOrder($orderBy)
- {
- $projects = $this->project->getPairsByProgram(3, 'doing', $orderBy);
- return checkOrder($projects, $orderBy);
- }
-}*/
-
-$t = new Project('admin');
+global $tester;
+$tester->loadModel('project');
$t_project = array('', 0, 1, 'wait', 'noclosed');
-r($t->getByProgram($t_project[0])) && p() && e('90'); //查找管理员可查看的所有项目
-r($t->getByProgram($t_project[1])) && p() && e('No data.'); //查找独立项目
-r($t->getByProgram($t_project[2])) && p() && e('9'); //查找管理员可查看的所属项目集ID为1的项目
-r($t->getByStatusPairs($t_project[3])) && p() && e('3'); //查找管理员可查看的所属项目集ID为1且状态为wait的项目
-r($t->getByStatusPairs($t_project[4])) && p() && e('7'); //查找管理员可查看的所属项目集ID为1且状态不为closed的项目
\ No newline at end of file
+r(count($tester->project->getPairsByProgram('', 'all', true))) && p() && e('110'); // 查找管理员可查看的所有项目数量
+r(count($tester->project->getPairsByProgram(0))) && p() && e('20'); // 查找独立项目数量
+r(count($tester->project->getPairsByProgram(1))) && p() && e('9'); // 查找管理员可查看的所属项目集ID为1的项目数量
+r(count($tester->project->getPairsByProgram(1, 'wait'))) && p() && e('3'); // 查找管理员可查看的所属项目集ID为1且状态为wait的项目数量
+r(count($tester->project->getPairsByProgram(1, 'noclosed'))) && p() && e('9'); // 查找管理员可查看的所属项目集ID为1且状态不为closed的项目数量
diff --git a/test/model/project/getparentname.php b/test/model/project/getparentname.php
deleted file mode 100755
index 796627e8be..0000000000
--- a/test/model/project/getparentname.php
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env php
-> 项目集1
-获取id为1的项目父项目名字 >> 项目集1
-获取id为0的项目父项目名字 >> 0
-
-*/
-
-$project = new Project('admin');
-
-$getName = array(11, 1, 0);
-
-r($project->getParentName($getName[0])) && p('name') && e('项目集1'); //获取id为11的项目父项目名字
-r($project->getParentName($getName[1])) && p('name') && e('项目集1'); //获取id为1的项目父项目名字
-r($project->getParentName($getName[2])) && p('name') && e('0'); //获取id为0的项目父项目名字
\ No newline at end of file
diff --git a/test/model/project/getparentprogram.php b/test/model/project/getparentprogram.php
new file mode 100644
index 0000000000..652287553a
--- /dev/null
+++ b/test/model/project/getparentprogram.php
@@ -0,0 +1,25 @@
+#!/usr/bin/env php
+> 项目集1
+获取id为1的项目父项目名字 >> 项目集1
+获取id为0的项目父项目名字 >> 0
+
+*/
+
+global $tester;
+$tester->loadModel('project');
+
+$project1 = $tester->project->getById(11);
+$project2 = $tester->project->getById(1);
+
+r($tester->project->getParentProgram($project1)) && p('name') && e('项目集1'); // 获取id为11的项目父项目名字
+r($tester->project->getParentProgram($project2)) && p('name') && e('0'); // 获取id为1的项目父项目名字
diff --git a/test/model/project/getprojectsconsumed.php b/test/model/project/getprojectsconsumed.php
index 9316dd3d84..ed1bb44432 100755
--- a/test/model/project/getprojectsconsumed.php
+++ b/test/model/project/getprojectsconsumed.php
@@ -1,7 +1,7 @@
#!/usr/bin/env php
getConsumed());die; >> 21.0
- >> 28.0
- >> 35.0
-
*/
-$projects = new Project('admin');
+global $tester;
+$tester->loadModel('project');
-$getConsumed = array(11, 12, 13);
+$projectIdList = array(11, 12, 13);
-//var_dump($projects->getConsumed($getConsumed));die;
-r($projects->getConsumed($getConsumed)) && p('11:totalConsumed') && e('21.0');
-r($projects->getConsumed($getConsumed)) && p('12:totalConsumed') && e('28.0');
-r($projects->getConsumed($getConsumed)) && p('13:totalConsumed') && e('35.0');
\ No newline at end of file
+r($tester->project->getProjectsConsumed($projectIdList)) && p('11:totalConsumed') && e('21.0'); // 批量获取各个项目的总计消耗工时
+r($tester->project->getProjectsConsumed($projectIdList)) && p('12:totalConsumed') && e('28.0'); // 批量获取各个项目的总计消耗工时
+r($tester->project->getProjectsConsumed($projectIdList)) && p('13:totalConsumed') && e('35.0'); // 批量获取各个项目的总计消耗工时
diff --git a/test/model/project/getstatdata.php b/test/model/project/getstatdata.php
index 4776452a6b..cb14e7274c 100755
--- a/test/model/project/getstatdata.php
+++ b/test/model/project/getstatdata.php
@@ -1,11 +1,11 @@
#!/usr/bin/env php
getStatData();
cid=1
pid=1
@@ -17,10 +17,11 @@ pid=1
*/
-$project = new Project('admin');
+global $tester;
+$tester->loadModel('project');
-r($project->getStatData(13)) && p('bugCount') && e('3'); //统计id=13的项目bug数量
-r($project->getStatData(13)) && p('taskCount') && e('13'); //任务数量
-r($project->getStatData(13)) && p('waitCount') && e('2'); //暂停数量
-r($project->getStatData(13)) && p('doingCount') && e('2'); //进行的数量
-r($project->getStatData(13)) && p('finishedCount') && e('0'); //完成的数量
\ No newline at end of file
+r($tester->project->getStatData(13)) && p('bugCount') && e('4'); //统计id=13的项目bug数量
+r($tester->project->getStatData(13)) && p('taskCount') && e('13'); //任务数量
+r($tester->project->getStatData(13)) && p('waitCount') && e('2'); //未开始数量
+r($tester->project->getStatData(13)) && p('doingCount') && e('2'); //进行的数量
+r($tester->project->getStatData(13)) && p('finishedCount') && e('0'); //完成的数量
diff --git a/test/model/project/getstoriesbyproject.php b/test/model/project/getstoriesbyproject.php
new file mode 100644
index 0000000000..d35eaf147c
--- /dev/null
+++ b/test/model/project/getstoriesbyproject.php
@@ -0,0 +1,20 @@
+#!/usr/bin/env php
+getStoriesByProject();
+cid=1
+pid=1
+
+*/
+
+global $tester;
+$tester->loadModel('project');
+
+$result = $tester->project->getStoriesByProject(11);
+
+r(count($result)) && p() && e('2'); // 获取项目11关联的所有产品数量
+r($result[91]) && p('0:project') && e('11'); // 获取项目11关联的产品ID为91的详情
diff --git a/test/model/project/getswitcher.php b/test/model/project/getswitcher.php
index 1c11660186..704b49e03b 100755
--- a/test/model/project/getswitcher.php
+++ b/test/model/project/getswitcher.php
@@ -15,6 +15,5 @@ pid=1
$project = $tester->loadModel('project');
-//var_dump($project->getSwitcher(11, 'project', 'browse'));die;
-r($project->getSwitcher(11, 'project', 'browse')) && p() && e('0'); //获取项目下拉菜单,项目列表页面没有项目下拉菜单
-r($project->getSwitcher(11, 'project', 'execution')) && p() && e("项目1"); //获取项目ID为11的迭代列表页面的项目下拉菜单,查看是否包含项目ID为11的名称
\ No newline at end of file
+r($project->getSwitcher(11, 'project', 'browse')) && p() && e('0'); // 获取项目下拉菜单,项目列表页面没有项目下拉菜单
+r(strpos($project->getSwitcher(11, 'project', 'execution'), "项目1")) && p() && e('137'); // 获取项目ID为11的迭代列表页面的项目下拉菜单,查看项目1下拉框出现的位置
diff --git a/test/model/project/gettotalbugbyproject.php b/test/model/project/gettotalbugbyproject.php
index 38f95e1f4d..44fe9a7fe6 100755
--- a/test/model/project/gettotalbugbyproject.php
+++ b/test/model/project/gettotalbugbyproject.php
@@ -1,11 +1,11 @@
#!/usr/bin/env php
getTotalBugByProject();
cid=1
pid=1
@@ -13,11 +13,10 @@ pid=1
*/
-$project = new Project('admin');
+global $tester;
+$tester->loadModel('project');
-$getBug = array(11, 12, 13, 14, 15, 16, 27);
+$projectIdList = array(11, 12, 13, 14, 15, 16, 27);
-//var_dump($project->getTotalBugBy($getBug, 'active'));die;
-
-r($project->getTotalBugBy($getBug, 'active')) && p(11) && e('3'); //状态一致时正常打印id为11的项目bug数量
-r($project->getTotalBugBy($getBug, 'active')) && p(27) && e(''); //在状态status不一致的情况下,打印id为27的项目bug数量
\ No newline at end of file
+r($tester->project->getTotalBugByProject($projectIdList, 'active')) && p('11') && e('4'); //获取id为11的项目下激活的bug数量
+r($tester->project->getTotalBugByProject($projectIdList, 'active')) && p('27') && e(''); //获取id为27的项目下激活的bug数量
diff --git a/test/model/project/gettotalstoriesbyproject.php b/test/model/project/gettotalstoriesbyproject.php
index a3ddfc3e9b..2a8aff4196 100755
--- a/test/model/project/gettotalstoriesbyproject.php
+++ b/test/model/project/gettotalstoriesbyproject.php
@@ -1,7 +1,7 @@
#!/usr/bin/env php
loadModel('project');
-var_dump($project->getTotalStoriesByProject());die;
\ No newline at end of file
+$productIdList = array(1, 2, 3);
+$stories1 = $tester->project->getTotalStoriesByProject(11);
+$stories2 = $tester->project->getTotalStoriesByProject(11, $productIdList);
+
+r($stories1) && p() && e('0'); // 不传入产品ID列表,获取项目11下的所有需求数量
+r($stories2) && p() && e('2'); // 传入产品ID列表,获取项目11下的所有需求数量
diff --git a/test/model/project/gettotaltaskbyproject.php b/test/model/project/gettotaltaskbyproject.php
new file mode 100644
index 0000000000..0f8007bc18
--- /dev/null
+++ b/test/model/project/gettotaltaskbyproject.php
@@ -0,0 +1,23 @@
+#!/usr/bin/env php
+getTotalTaskByProject();
+cid=1
+pid=1
+
+状态一致时正常打印id为11的项目bug数量 >> 3
+
+*/
+
+global $tester;
+$tester->loadModel('project');
+
+$projectIdList = array(11, 12, 13, 14, 15, 16, 27);
+
+r($tester->project->getTotalTaskByProject($projectIdList, 'undone')) && p('11') && e('14'); // 获取id为11的项目下激活的task数量
+r($tester->project->getTotalTaskByProject($projectIdList, 'done')) && p('15') && e('2'); // 获取id为15的项目下完成的task数量
+r($tester->project->getTotalTaskByProject($projectIdList, 'undone')) && p('27') && e('8'); // 获取id为27的项目下激活的task数量
diff --git a/test/model/project/gettreemenu.php b/test/model/project/gettreemenu.php
new file mode 100644
index 0000000000..0c995025b6
--- /dev/null
+++ b/test/model/project/gettreemenu.php
@@ -0,0 +1,19 @@
+#!/usr/bin/env php
+getTreeMenu();
+cid=1
+pid=1
+
+*/
+
+global $tester;
+$tester->loadModel('project');
+
+$lastMenu = $tester->project->getTreeMenu(0, array('projectmodel', 'createManageLink'));
+
+r(strlen($lastMenu)) && p() && e('1596'); // 查看获取到的menu option的字符串数量
diff --git a/test/model/project/getworkhour.php b/test/model/project/getworkhour.php
index 4afdd17e5e..cf6f8da7cf 100755
--- a/test/model/project/getworkhour.php
+++ b/test/model/project/getworkhour.php
@@ -1,7 +1,7 @@
#!/usr/bin/env php
loadModel('project');
-r($project->getWorkHour(13)) && p('totalEstimate') && e('61.0'); //预计61.0小时
-r($project->getWorkHour(13)) && p('totalConsumed') && e('95.0'); //消耗95.0小时
-r($project->getWorkHour(1000)) && p('totalEstimate') && e(''); //测试不存在的项目
\ No newline at end of file
+r($tester->project->getWorkHour(13)) && p('totalEstimate') && e('61.0'); //获取项目ID为13的预计工时,61.0小时
+r($tester->project->getWorkHour(13)) && p('totalConsumed') && e('95.0'); //获取项目ID为13的消耗工时,95.0小时
+r($tester->project->getWorkHour(1000)) && p('totalEstimate') && e(''); //测试不存在的项目
diff --git a/test/model/project/isclickable.php b/test/model/project/isclickable.php
index f1ceff7bf8..a208b0f4b1 100755
--- a/test/model/project/isclickable.php
+++ b/test/model/project/isclickable.php
@@ -1,6 +1,7 @@
#!/usr/bin/env php
getByID(11);
$doingProject = $projectModel->getByID(13);
$suspendProject = $projectModel->getByID(17);
$closedProject = $projectModel->getByID(18);
-$status = array('start', 'finish', 'close', 'suspend', 'activate', );
+$status = array('start', 'finish', 'close', 'suspend', 'activate', );
r($projectModel->isClickable($waitProject, $status[0])) && p() && e('1'); // 检查未开始项目的开始按钮
r($projectModel->isClickable($waitProject, $status[1])) && p() && e('1'); // 检查未开始项目的完成按钮
@@ -58,4 +59,4 @@ r($projectModel->isClickable($closedProject, $status[0])) && p() && e('0'); //
r($projectModel->isClickable($closedProject, $status[1])) && p() && e('0'); // 检查已关闭项目的完成按钮
r($projectModel->isClickable($closedProject, $status[2])) && p() && e('0'); // 检查已关闭项目的关闭按钮
r($projectModel->isClickable($closedProject, $status[3])) && p() && e('0'); // 检查已关闭项目的暂停按钮
-r($projectModel->isClickable($closedProject, $status[4])) && p() && e('1'); // 检查已关闭项目的激活按钮
\ No newline at end of file
+r($projectModel->isClickable($closedProject, $status[4])) && p() && e('1'); // 检查已关闭项目的激活按钮
diff --git a/test/model/project/savestate.php b/test/model/project/savestate.php
index 0d6f754791..86c8b78762 100755
--- a/test/model/project/savestate.php
+++ b/test/model/project/savestate.php
@@ -9,14 +9,8 @@ title=测试 programModel::saveState;
cid=1
pid=1
-传入存在ID的值14,保存session,返回对应值14 >> 14
-传入存在ID的值99,保存session,返回第一位默认值11 >> 11
-
*/
-$project = new Project('dev1');
+$project = new Project();
-$projectId = array(14, 99);
-
-r($project->saveState($projectId[0])) && p() && e('14'); //传入存在ID的值14,保存session,返回对应值14
-r($project->saveState($projectId[1])) && p() && e('11'); //传入存在ID的值99,保存session,返回第一位默认值11
\ No newline at end of file
+r($project->saveState(99)) && p() && e('11'); //传入存在ID的值99,保存session,返回第一位默认值11