From 8ce69bb012d8da3d530e66b0e4a96b990b500f11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B9=BF=E6=98=8E?= Date: Thu, 7 Apr 2022 11:00:15 +0800 Subject: [PATCH 1/3] * Code for project test. --- test/model/project/batchupdate.php | 32 ++++++++++++++ test/model/project/update.php | 68 ++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 test/model/project/batchupdate.php create mode 100644 test/model/project/update.php diff --git a/test/model/project/batchupdate.php b/test/model/project/batchupdate.php new file mode 100644 index 0000000000..9ea974fa51 --- /dev/null +++ b/test/model/project/batchupdate.php @@ -0,0 +1,32 @@ +#!/usr/bin/env php +batchUpdate(); +cid=1 +pid=1 + +*/ + +$project = new Project(); +$projectIdList = array(11, 12, 13); + +$data['names'] = array(11 => '批量修改项目11', 12 => '批量修改项目12', 13 => '批量修改项目13'); +$data['projectIdList'] = $projectIdList; +$data['PMs'] = array(11 => 'admin', 12 => '', 13 => ''); +$data['begins'] = array(11 => '2022-01-03', 12 => '2022-03-05', 13 => ''); +$data['ends'] = array(11 => '2022-03-03', 12 => '2022-06-05', 13 => '2022-07-11'); + +$name = array( '7' => '批量修改任务一'); +$type = array( '7' => 'devel'); +$statuses = array('7' =>'doing'); + +$normal = array('names' => $name, 'types' => $type,'statuses'=> $statuses); + +$task = new taskTest(); +r($task->batchUpdateObject($normal, $taskID)) && p('1:field,old,new') && e('name,开发任务17,批量修改任务一'); // 测试批量修改任务 +system("./ztest init"); diff --git a/test/model/project/update.php b/test/model/project/update.php new file mode 100644 index 0000000000..e342fb80d8 --- /dev/null +++ b/test/model/project/update.php @@ -0,0 +1,68 @@ +#!/usr/bin/env php +> 测试更新项目十 +当计划开始为空时更新项目信息 >> 『计划开始』不能为空。 +当计划完成为空时更新项目信息 >> 『计划完成』不能为空。 +当计划完成小于计划开始时 >> 『计划完成』应当大于『2020-10-10』。 +项目名称已经存在时 >> 『项目名称』已经有『项目1』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。 +项目开始时间小于父项目时 >> 父项目的开始日期:2019-09-09,开始日期不能小于父项目的开始日期;父项目的完成日期:2019-09-09,完成日期不能大于父项目的完成日期 + +*/ + +global $tester; +$tester->app->loadConfig('execution'); + +$project = new Project(); + +$data = array( + 'parent' => '0', + 'name' => '测试更新项目十', + 'begin' => '2020-10-10', + 'end' => '2022-06-01', + 'acl' => 'private', + 'budget' => '100', + 'budgetUnit' => 'CNY', + 'PM' => 'admin', + 'products' => array(1, 2, 3), + 'whitelist' => array('dev10', 'dev12') +); + +$normalProject = $data; + +$noProductProject = $data; +$noProductProject['products'] = array(); + +$emptyTitleProject = $data; +$emptyTitleProject['name'] = ''; + +$emptyBeginProject = $data; +$emptyBeginProject['begin'] = ''; + +$emptyEndProject = $data; +$emptyEndProject['end'] = ''; + +$beginGtEndProject = $data; +$beginGtEndProject['begin'] = '2022-07-01'; + +$beginLtParentProject = $data; +$beginLtParentProject['parent'] = '9'; +$beginLtParentProject['begin'] = '2019-01-01'; + +r($project->update(10, $normalProject)) && p('name') && e('测试更新项目十'); // 正常更新项目的情况 +r($project->update(10, $noProductProject)) && p('message:0') && e('最少关联一个产品'); // 未关联产品的项目 +r($project->update(10, $emptyTitleProject)) && p('message[name]:0') && e('『项目名称』不能为空。'); // 更新项目名称为空时 +r($project->update(10, $emptyBeginProject)) && p('message[begin]:0') && e('『计划开始』不能为空。'); // 当计划完成为空时更新项目信息 +r($project->update(10, $emptyEndProject)) && p('message[end]:0') && e('『计划完成』不能为空。'); // 当计划完成小于计划开始时 +r($project->update(10, $beginGtEndProject)) && p('message[end]:0') && e('『计划完成』应当大于『2022-07-01』。'); // 父项目的开始日期大于子项目的开始日期时 +r($project->update(10, $beginLtParentProject)) && p('message:begin;message:end') && e('项目集的最小开始日期:2022-02-15,项目的开始日期不能小于项目集的最小开始日期;项目集的最大完成日期:2022-04-22,项目的完成日期不能大于项目集的最大完成日期'); // 项目开始、结束日期和子项目不符的情况 +system("./ztest init"); From a8f6e27359a7cc4fe825c969d36abceba7411746 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B9=BF=E6=98=8E?= Date: Thu, 7 Apr 2022 14:36:42 +0800 Subject: [PATCH 2/3] * Code for project. --- module/project/model.php | 4 +-- test/class/project.class.php | 50 +++++++++++++++++++++++++----- test/model/program/update.php | 10 +++--- test/model/project/activate.php | 16 +++++----- test/model/project/batchupdate.php | 18 +++++------ test/model/project/close.php | 22 +++++++------ test/model/project/create.php | 14 ++++----- test/model/project/putoff.php | 23 ++++++++++++++ test/model/project/start.php | 22 +++++-------- test/model/project/suspend.php | 23 +++++++------- 10 files changed, 131 insertions(+), 71 deletions(-) create mode 100644 test/model/project/putoff.php diff --git a/module/project/model.php b/module/project/model.php index 50905c096b..37956abcd4 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -1264,7 +1264,7 @@ class projectModel extends model if($message) hepler::end(js::alert($message)); } } - if(dao::isError()) helper::end(js::error(dao::getError())); + if(dao::isError()) return print(js::error(dao::getError())); foreach($projects as $projectID => $project) { @@ -1290,7 +1290,7 @@ class projectModel extends model if($oldProject->parent != $project->parent) $this->loadModel('program')->processNode($projectID, $project->parent, $oldProject->path, $oldProject->grade); /* When acl is open, white list set empty. When acl is private,update user view. */ - if($project->acl == 'open') $this->loadModel('personnel')->updateWhitelist('', 'project', $projectID); + if($project->acl == 'open') $this->loadModel('personnel')->updateWhitelist(array(), 'project', $projectID); if($project->acl != 'open') $this->loadModel('user')->updateUserView($projectID, 'project'); } $allChanges[$projectID] = common::createChanges($oldProject, $project); diff --git a/test/class/project.class.php b/test/class/project.class.php index 82971993f9..8960264c54 100644 --- a/test/class/project.class.php +++ b/test/class/project.class.php @@ -136,22 +136,21 @@ class Project } /** - * checkStatusBegin + * Test start a project. * - * @param int mixed $projectID + * @param int $projectID * @access public * @return void */ - public function checkStatusBegin($projectID) + public function start($projectID) { + $_POST['realBegan'] = helper::today(); $oldProject = $this->project->getById($projectID); if($oldProject->status != 'suspended' and $oldProject->status != 'wait') return false; - $change = $this->project->start($projectID); - $project = $this->project->getById($projectID); - if($project->status != 'doing') return false; + $changes = $this->project->start($projectID); - return true; + return $this->project->getById($projectID); } /** @@ -304,6 +303,43 @@ class Project return $this->project->getById($projectID); } + /** + * Update a project. + * + * @param int $projectID + * @param array $data + * @access public + * @return void + */ + public function update($projectID, $data) + { + $_POST = $data; + $this->project->update($projectID); + + unset($_POST); + if(dao::isError()) return array('message' => dao::getError()); + + return $this->project->getByID($projectID); + } + + /** + * Batch update projects. + * + * @param array $data + * @access public + * @return void + */ + public function batchUpdate($data) + { + $_POST = $data; + $this->project->batchUpdate(); + + unset($_POST); + if(dao::isError()) return array('message' => dao::getError()); + + return $this->project->getByIdList($data['projectIdList']); + } + /** * saveState * diff --git a/test/model/program/update.php b/test/model/program/update.php index a81e60f420..15dc691661 100755 --- a/test/model/program/update.php +++ b/test/model/program/update.php @@ -25,7 +25,7 @@ $data = array( 'parent' => '0', 'name' => '测试更新项目集十', 'begin' => '2020-10-10', - 'end' => '2022-06-01', + 'end' => '2022-06-03', 'acl' => 'private', 'budget' => '100', 'budgetUnit' => 'CNY', @@ -37,7 +37,7 @@ $data = array( $normalProgram = $data; $emptyTitleProgram = $data; -$emptyTitleProgram['name'] = '项目集1'; +$emptyTitleProgram['name'] = ''; $emptyBeginProgram = $data; $emptyBeginProgram['begin'] = ''; @@ -52,9 +52,9 @@ $beginLtParentProgram = $data; $beginLtParentProgram['parent'] = '9'; $beginLtParentProgram['begin'] = '2019-01-01'; -r($program->update(10, $normalProgram)) && p('name') && e('测试更新项目集十'); // 正常更新项目集的情况 -r($program->update(10, $emptyTitleProgram)) && p('message[name]:0') && e('『项目集名称』已经有『项目集1』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。'); // 更新项目集名称重复时 -r($program->update(10, $emptyBeginProgram)) && p('message[begin]:0') && e('『计划开始』不能为空。'); // 当计划完成为空时更新项目集信息 +r($program->update(10, $normalProgram)) && p('name') && e('测试更新项目集十'); // 正常更新项目集的情况 +r($program->update(10, $emptyTitleProgram)) && p('message[name]:0') && e('『项目集名称』不能为空。'); // 更新项目集名称为空时 +r($program->update(10, $emptyBeginProgram)) && p('message[begin]:0') && e('『计划开始』不能为空。'); // 当计划完成为空时更新项目集信息 r($program->update(10, $emptyEndProgram)) && p('message:end') && e('子项目的最大完成日期:2022-05-27,父项目的完成日期不能小于子项目的最大完成日期'); //当计划完成小于计划开始时 r($program->update(10, $beginGtEndProgram)) && p('message:begin') && e('子项目集的最小开始日期:2022-02-01,父项目集的开始日期不能大于子项目集的最小开始日期'); // 父项目集的开始日期大于子项目集的开始日期时 r($program->update(10, $beginLtParentProgram)) && p('message:begin;message:end') && e('父项目集的开始日期:2022-02-09,开始日期不能小于父项目集的开始日期;父项目集的完成日期:2022-04-16,完成日期不能大于父项目集的完成日期'); // 项目集开始、结束日期和子项目不符的情况 diff --git a/test/model/project/activate.php b/test/model/project/activate.php index 075a91c16d..2aaea526f7 100755 --- a/test/model/project/activate.php +++ b/test/model/project/activate.php @@ -1,11 +1,11 @@ #!/usr/bin/env php activate(); cid=1 pid=1 @@ -14,10 +14,12 @@ pid=1 */ -$project = new Project('admin'); +global $tester; +$tester->loadModel('project'); -$beginId = array(66, 67); +$changes1 = $tester->project->activate(66); +$changes2 = $tester->project->activate(73); -r($project->checkStatus($beginId[0])) && p() && e('1'); //开始id为66状态不是closed的项目 -r($project->checkStatus($beginId[1])) && p() && e('0'); //开始id为67状态是closed的项目 -system("./ztest init"); \ No newline at end of file +r($changes1) && p('1:field,old,new') && e('status,closed,doing'); // 激活id为66状态是closed的项目 +r($changes2) && p('1:field,old,new') && e('status,suspended,doing'); // 激活id为73状态是suspended的项目 +system("./ztest init"); diff --git a/test/model/project/batchupdate.php b/test/model/project/batchupdate.php index 9ea974fa51..c798c2147a 100644 --- a/test/model/project/batchupdate.php +++ b/test/model/project/batchupdate.php @@ -16,17 +16,17 @@ $project = new Project(); $projectIdList = array(11, 12, 13); $data['names'] = array(11 => '批量修改项目11', 12 => '批量修改项目12', 13 => '批量修改项目13'); +$data['parents'] = array(11 => 1, 12 => 2, 13 => 3); $data['projectIdList'] = $projectIdList; $data['PMs'] = array(11 => 'admin', 12 => '', 13 => ''); -$data['begins'] = array(11 => '2022-01-03', 12 => '2022-03-05', 13 => ''); -$data['ends'] = array(11 => '2022-03-03', 12 => '2022-06-05', 13 => '2022-07-11'); +$data['begins'] = array(11 => '2022-02-08', 12 => '2022-03-05', 13 => '2022-02-19'); +$data['ends'] = array(11 => '2022-04-13', 12 => '2022-04-13', 13 => '2022-04-13'); +$data['dayses'] = array(11 => 10, 12 => 10, 13 => 14); +$data['acls'] = array(11 => 'open', 12 => 'private', 13 => 'program'); -$name = array( '7' => '批量修改任务一'); -$type = array( '7' => 'devel'); -$statuses = array('7' =>'doing'); +$projects = $project->batchUpdate($data); -$normal = array('names' => $name, 'types' => $type,'statuses'=> $statuses); - -$task = new taskTest(); -r($task->batchUpdateObject($normal, $taskID)) && p('1:field,old,new') && e('name,开发任务17,批量修改任务一'); // 测试批量修改任务 +r(count($projects)) && p() && e('3'); // 查看被编辑了的项目数量 +r($projects) && p('11:name,parent,PM,begin,acl') && e('批量修改项目11,1,admin,2022-02-08,open'); // 查看被编辑了的项目11详情 +r($projects) && p('12:name,parent,PM,begin,acl') && e('批量修改项目12,2,,2022-03-05,private'); // 查看被编辑了的项目12详情 system("./ztest init"); diff --git a/test/model/project/close.php b/test/model/project/close.php index 895a8d4220..9ee0f3e5b0 100755 --- a/test/model/project/close.php +++ b/test/model/project/close.php @@ -1,11 +1,11 @@ #!/usr/bin/env php close(); cid=1 pid=1 @@ -15,13 +15,17 @@ pid=1 */ -$project = new Project('admin'); +global $tester; +$tester->loadModel('project'); $closeId = array(20, 26, 41); -$realEnd1 = array('realEnd' => '2022-03-11'); +$_POST['realEnd'] = '2022-03-11'; -//var_dump($project->checkStatusOff($closeId[0], $realEnd1));die; -r($project->checkStatusOff($closeId[0], $realEnd1)) && p() && e('1'); //关闭id为20状态不是closed的项目 -r($project->checkStatusOff($closeId[1], $realEnd1)) && p() && e('0'); //关闭id为26状态是closed的项目 -r($project->checkStatusOff($closeId[2], $realEnd1)) && p() && e('0'); //关闭id为41状态是suspended的项目 -system("./ztest init"); \ No newline at end of file +$changes1 = $tester->project->close(20); +$changes2 = $tester->project->close(26); +$changes3 = $tester->project->close(41); + +r($changes1) && p() && e('1'); //关闭id为20状态不是closed的项目 +r($changes2) && p() && e('0'); //关闭id为26状态是closed的项目 +r($changes3) && p() && e('0'); //关闭id为41状态是suspended的项目 +system("./ztest init"); diff --git a/test/model/project/create.php b/test/model/project/create.php index 2f8d17048d..d1c1e52250 100644 --- a/test/model/project/create.php +++ b/test/model/project/create.php @@ -6,7 +6,7 @@ su('admin'); /** -title=测试 projectModel::create(); +title=测试 projectModel->create(); cid=1 pid=1 @@ -55,10 +55,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,开始日期不能小于父项目的开始日期'); // 项目的完成日期大于父项目的完成日期(需要实时更新日期) +r($project->create($normalProject)) && p('name') && e('测试新增项目一'); // 创建新项目 +r($project->create($emptyNameProject)) && p('message[name]:0') && e('『项目名称』不能为空。'); // 项目名称为空时 +r($project->create($emptyEndProject)) && p('message[end]:0') && e('『计划完成』不能为空。'); // 项目的完成时间为空 +r($project->create($beginGtEndProject)) && p('message[end]:0') && e('『计划完成』应当大于『2022-02-07』。'); // 项目的计划完成时间大于计划开始时间 +r($project->create($emptyBeginProject)) && p('message:begin') && e('项目集的最小开始日期:2022-02-07,项目的开始日期不能小于项目集的最小开始日期'); // 项目的开始时间为空 +r($project->create($moreThanParent)) && p('message:begin;message:end') && e('项目集的最小开始日期:2022-02-07,项目的开始日期不能小于项目集的最小开始日期;'); // 项目的完成日期大于父项目的完成日期(需要实时更新日期) system("./ztest init"); diff --git a/test/model/project/putoff.php b/test/model/project/putoff.php new file mode 100644 index 0000000000..adc9b03237 --- /dev/null +++ b/test/model/project/putoff.php @@ -0,0 +1,23 @@ +#!/usr/bin/env php +start(); +cid=1 +pid=1 + +*/ + +global $tester; +$tester->loadModel('project'); +$_POST['end'] = '2023-07-01'; + +$changes1 = $tester->project->putoff(81); +$changes2 = $tester->project->putoff(0); + +r($changes1[0]) && p('new') && e('2023-07-01'); // 延期ID为81的项目,查看延期后的日期 +r($changes2) && p() && e('0'); // 延期ID为0的项目,返回空 +system("./ztest init"); diff --git a/test/model/project/start.php b/test/model/project/start.php index 7305a71968..ad7a8b9160 100755 --- a/test/model/project/start.php +++ b/test/model/project/start.php @@ -2,26 +2,20 @@ start(); cid=1 pid=1 -开始id为81状态是suspended的项目(代码缺失elBegan参数,报警告) >> 1 -开始id为83状态是wait的项目 >> 1 -开始id为82状态是closed的项目 >> 0 -开始id为85状态是doing的项目 >> 0 - */ -$project = new Project('admin'); +$project = new Project(); -$statusId = array(81, 83, 82, 85); - -r($project->checkStatusBegin($statusId[0])) && p() && e('1'); // 开始id为81状态是suspended的项目(代码缺失elBegan参数,报警告) -r($project->checkStatusBegin($statusId[1])) && p() && e('1'); // 开始id为83状态是wait的项目 -r($project->checkStatusBegin($statusId[2])) && p() && e('0'); // 开始id为82状态是closed的项目 -r($project->checkStatusBegin($statusId[3])) && p() && e('0'); // 开始id为85状态是doing的项目 -system("./ztest init"); \ No newline at end of file +r($project->start(81)) && p('name,status') && e('项目71,doing'); // 开始id为81状态是suspended的项目 +r($project->start(82)) && p() && e('0'); // 开始id为82状态是closed的项目 +r($project->start(83)) && p('name,status') && e('项目73,doing'); // 开始id为83状态是wait的项目 +r($project->start(85)) && p() && e('0'); // 开始id为85状态是doing的项目 +system("./ztest init"); diff --git a/test/model/project/suspend.php b/test/model/project/suspend.php index f6e322e188..46566e47f6 100755 --- a/test/model/project/suspend.php +++ b/test/model/project/suspend.php @@ -1,23 +1,24 @@ #!/usr/bin/env php suspend(); cid=1 pid=1 -暂停id为56状态是doing的项目 >> 1 -暂停id为73状态是suspended的项目 >> 0 -暂停id为74状态是closed的项目 >> 0 - */ -$t = new Project('admin'); +global $tester; +$tester->loadModel('project'); -r($t->checkStatusStop(56)) && p() && e('1'); // 暂停id为56状态是doing的项目 -r($t->checkStatusStop(73)) && p() && e('0'); // 暂停id为73状态是suspended的项目 -r($t->checkStatusStop(74)) && p() && e('0'); // 暂停id为74状态是closed的项目 -system("./ztest init"); \ No newline at end of file +$changes1 = $tester->project->suspend(56); +$changes2 = $tester->project->suspend(73); +$changes3 = $tester->project->suspend(74); + +r($changes1[0]) && p('new') && e('suspended'); // 挂起id为56状态是doing的项目 +r($changes2[0]) && p('field') && e('suspendedDate'); // 挂起id为73状态是suspended的项目 +r($changes3[0]) && p('new') && e('suspended'); // 挂起id为74状态是closed的项目 +system("./ztest init"); From e55a88b34b0de342487c5e8c21a4df5bebbea943 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B9=BF=E6=98=8E?= Date: Fri, 8 Apr 2022 09:16:57 +0800 Subject: [PATCH 3/3] * Finish project test. --- test/class/project.class.php | 265 -------------------- test/model/project/checkcanchangemodel.php | 18 ++ test/model/project/close.php | 11 +- test/model/project/computerprogress.php | 23 ++ test/model/project/getdatabyproject.php | 40 --- test/model/project/getmembers2import.php | 20 ++ test/model/project/getstats.php | 26 +- test/model/project/getstats4kanban.php | 21 ++ test/model/project/getteammemberpairs.php | 16 +- test/model/project/getteammembers.php | 11 +- test/model/project/managemembers.php | 29 +++ test/model/project/unlinkmember.php | 25 ++ test/model/project/updateproductprogram.php | 28 +++ test/model/project/updateproducts.php | 29 +++ 14 files changed, 228 insertions(+), 334 deletions(-) create mode 100644 test/model/project/checkcanchangemodel.php create mode 100644 test/model/project/computerprogress.php delete mode 100755 test/model/project/getdatabyproject.php create mode 100644 test/model/project/getmembers2import.php create mode 100644 test/model/project/getstats4kanban.php create mode 100644 test/model/project/managemembers.php create mode 100644 test/model/project/unlinkmember.php create mode 100644 test/model/project/updateproductprogram.php create mode 100644 test/model/project/updateproducts.php diff --git a/test/class/project.class.php b/test/class/project.class.php index 8960264c54..dae625653c 100644 --- a/test/class/project.class.php +++ b/test/class/project.class.php @@ -15,126 +15,6 @@ class Project $this->project = $tester->loadModel('project'); } - /** - * checkStatus - * - * @param int mixed $projectID - * @access public - * @return void - */ - public function checkStatus($projectID) - { - $oldProject = $this->project->getById($projectID); - if($oldProject->status != 'closed') return false; - - $change = $this->project->activate($projectID); - - $project = $this->project->getById($projectID); - if($project->status != 'doing') return false; - - return true; - } - - /** - * checkStatusOff - * - * @param int mixed $projectID - * @param array $closeTime - * @access public - * @return void - */ - public function checkStatusOff($projectID, $closeTime = array()) - { - $checkStatus = array(); - $closeEnd = array('realEnd' => ''); - foreach($closeEnd as $filed => $defaultValue) $_POST[$filed] = $defaultValue; - foreach($closeTime as $key => $value) $_POST[$key] = $value; - - $oldProject = $this->project->getById($projectID); - if($oldProject->status == 'suspended' or $oldProject->status == 'closed') return false; - - $change = $this->project->close($projectID); - - $project = $this->project->getById($projectID); - if($project->status != 'closed') return false; - - return true; - } - - /** - * getListByOrder - * - * @param string mixed $orderBy - * @access public - * @return void - */ - public function getListByOrder($orderBy) - { - $projects = $this->project->getOverviewList('byStatus', 'wait', $orderBy); - return checkOrder($projects, $orderBy); - } - - /** - * getByID - * - * @param mixed $projectID - * @access public - * @return void - */ - public function getByID($projectID) - { - return $this->project->getOverviewList('byID', $projectID); - } - - /** - * getTeamMemberPairs - * - * @param int mixed $projectID - * @access public - * @return void - */ - public function getTeamMemberPairs($projectID) - { - $members = array_filter($this->project->getTeamMemberPairs($projectID)); - if(empty($members)) return false; - return count($members); - } - - /** - * checkMembers - * - * @param int mixed $members - * @param string mixed $users - * @access public - * @return void - */ - public function checkMembers($members, $users) - { - foreach($users as $user) - { - if(!isset($members[$user])) return false; - } - return true; - } - - /** - * getTeamMembers - * - * @param int mixed $projectID - * @param striong mixed $users - * @param boolean mixed $tutorial - * @access public - * @return void - */ - public function getTeamMembers($projectID, $users, $tutorial = false) - { - if($tutorial) define('TUTORIAL', true); - $members = $this->project->getTeamMembers($projectID); - if(empty($members)) return false; - if(!empty($users)) $this->checkMembers($members, $users); - return count($members); - } - /** * Test start a project. * @@ -153,137 +33,6 @@ class Project return $this->project->getById($projectID); } - /** - * checkStatusStop - * - * @param int mixed $projectID - * @access public - * @return void - */ - public function checkStatusStop($projectID) - { - $oldProject = $this->project->getById($projectID); - if($oldProject->status == 'suspended' or $oldProject->status == 'closed') return false; - - $change = $this->project->suspend($projectID); - $project = $this->project->getById($projectID); - if($project->status != 'suspended') return false; - - return true; - } - - /** - * getExecutionData - * - * @param int mixed $projectID - * @param string $type - * @access public - * @return void - */ - public function getExecutionData($projectID, $type = '') - { - $table = 'zt_project'; - $executions = $this->project->getDataByProject($table, $projectID, $type); - if(empty($executions)) return false; - return $executions; - } - - /** - * getBuildData - * - * @param int mixed $projectID - * @access public - * @return void - */ - public function getBuildData($projectID) - { - $builds = $this->project->getDataByProject(TABLE_BUILD, $projectID); - if(empty($builds)) return false; - return $builds; - } - - /** - * getReleaseData - * - * @param int mixed $projectID - * @access public - * @return void - */ - public function getReleaseData($projectID) - { - $releases = $this->project->getDataByProject(TABLE_RELEASE, $projectID); - if(empty($releases)) return false; - return $releases; - } - - /** - * getByStatusExe - * - * @param string mixed $status - * @access public - * @return void - */ - public function getByStatusExe($status) - { - $executions = $this->project->getStats(0, $status); - if(empty($executions)) return false; - if($status != 'all') - { - foreach($executions as $execution) - { - if($execution->status != $status) return false; - } - } - return count($executions); - } - - /** - * getByProject - * - * @param int mixed $projectID - * @access public - * @return void - */ - public function getByProject($projectID) - { - $executions = $this->project->getStats($projectID, 'all'); - if(empty($executions)) return false; - foreach($executions as $execution) - { - if($execution->project != $projectID) return false; - } - return count($executions); - } - - /** - * getStatData - * - * @param int mixed $projectID - * @access public - * @return void - */ - public function getStatData($projectID) - { - $projects = $this->project->getStatData($projectID); - return $projects; - } - - /** - * getTotalStoriesByProject - * - * @param int $projectID - * @param array $productIdList - * @param string $type - * @param string $status - * @access public - * @return void - */ - public function getTotalStoriesByProject($projectID = 0, $productIdList = array(), $type = 'story', $status = 'all') - { - $projects = $this->project->getTotalStoriesByProject($projectID = 0, $productIdList = array(), $type = 'story', $status = 'all'); - return $projects; - } - /** * Test create project. * @@ -339,18 +88,4 @@ class Project return $this->project->getByIdList($data['projectIdList']); } - - /** - * saveState - * - * @param int mixed $projectID - * @access public - * @return void - */ - public function saveState($projectID) - { - $projects = $this->project->getPairsByProgram(); - $object = $this->project->saveState($projectID, $projects); - return $object; - } } diff --git a/test/model/project/checkcanchangemodel.php b/test/model/project/checkcanchangemodel.php new file mode 100644 index 0000000000..5188fb328d --- /dev/null +++ b/test/model/project/checkcanchangemodel.php @@ -0,0 +1,18 @@ +#!/usr/bin/env php +checkCanChangeModel(); +cid=1 +pid=1 + +*/ + +global $tester; +$tester->loadModel('project'); + +r($tester->project->checkCanChangeModel(11, 'scrum')) && p() && e('0'); // 查看ID为11的敏捷项目是否可切换项目管理模型 +r($tester->project->checkCanChangeModel(41, 'waterfall')) && p() && e('0'); // 查看ID为41的瀑布项目是否可切换项目管理模型 diff --git a/test/model/project/close.php b/test/model/project/close.php index 9ee0f3e5b0..5c99ab39d0 100755 --- a/test/model/project/close.php +++ b/test/model/project/close.php @@ -18,14 +18,13 @@ pid=1 global $tester; $tester->loadModel('project'); -$closeId = array(20, 26, 41); $_POST['realEnd'] = '2022-03-11'; -$changes1 = $tester->project->close(20); +$changes1 = $tester->project->close(19); $changes2 = $tester->project->close(26); -$changes3 = $tester->project->close(41); +$changes3 = $tester->project->close(33); -r($changes1) && p() && e('1'); //关闭id为20状态不是closed的项目 -r($changes2) && p() && e('0'); //关闭id为26状态是closed的项目 -r($changes3) && p() && e('0'); //关闭id为41状态是suspended的项目 +r($changes1) && p('1:field,old,new') && e('status,wait,closed'); // 关闭id为20状态不是closed的项目 +r($changes2) && p('1:field,old,new') && e('closedBy,,admin'); // 关闭id为26状态是closed的项目 +r($changes3) && p('1:field,old,new') && e('status,suspended,closed'); // 关闭id为41状态是suspended的项目 system("./ztest init"); diff --git a/test/model/project/computerprogress.php b/test/model/project/computerprogress.php new file mode 100644 index 0000000000..7bec97055a --- /dev/null +++ b/test/model/project/computerprogress.php @@ -0,0 +1,23 @@ +#!/usr/bin/env php +computerProgress(); +cid=1 +pid=1 + +*/ + +global $tester; +$tester->loadModel('project'); +$tester->loadModel('execution'); + +$executions = $tester->execution->getList(11); +$executions = $tester->project->computerProgress($executions); + +r(count($executions)) && p('') && e('7'); // 查看项目11下的所有执行的数量 +r($executions) && p('551:totalEstimate,totalConsumed,totalLeft,progress,totalReal') && e('10,3,10,23.08,13'); // 查看计算后的执行工时汇总信息 +r($executions) && p('641:totalEstimate,totalConsumed,totalLeft,progress,totalReal') && e('1,3,1,75,4'); // 查看计算后的执行工时汇总信息 diff --git a/test/model/project/getdatabyproject.php b/test/model/project/getdatabyproject.php deleted file mode 100755 index 59c46ee40b..0000000000 --- a/test/model/project/getdatabyproject.php +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env php -> 129 -获取parent为11的首个项目的id >> 130 -获取parent为11的首个项目的id >> 131 -获取parent为10000的首个项目的id >> 0 -获取parent为131的首个版本的id >> 1 -获取parent为132的首个版本的id >> 6 -获取parent为10000的首个版本的id >> 0 -获取parent为132的首个发布的id >> 1 -获取parent为132的首个发布的id >> 6 -获取parent为10000的首个发布的id >> 0 - -*/ - -/* 还有case bug testtask doc表要写,暂时表中没数据 */ - -$t = new Project('admin'); - -$PID = array(39, 40, 'sprint', 41, 'stage', 10000, 131, 132, 10000, 131, 132, 10000); - -r($t->getExecutionData($PID[0])) && p('id') && e('129'); //获取parent为11首个项目的id -r($t->getExecutionData($PID[1], $PID[2])) && p('id') && e('130'); //获取parent为11的首个项目的id -r($t->getExecutionData($PID[3], $PID[4])) && p('id') && e('131'); //获取parent为11的首个项目的id -r($t->getExecutionData($PID[5])) && p('id') && e('0'); //获取parent为10000的首个项目的id -r($t->getBuildData($PID[6])) && p('id') && e('1'); //获取parent为131的首个版本的id -r($t->getBuildData($PID[7])) && p('id') && e('6'); //获取parent为132的首个版本的id -r($t->getBuildData($PID[8])) && p('id') && e('0'); //获取parent为10000的首个版本的id -r($t->getReleaseData($PID[9])) && p('id') && e('1'); //获取parent为132的首个发布的id -r($t->getReleaseData($PID[10])) && p('id') && e('6'); //获取parent为132的首个发布的id -r($t->getReleaseData($PID[11])) && p('id') && e('0'); //获取parent为10000的首个发布的id \ No newline at end of file diff --git a/test/model/project/getmembers2import.php b/test/model/project/getmembers2import.php new file mode 100644 index 0000000000..eaa12278e9 --- /dev/null +++ b/test/model/project/getmembers2import.php @@ -0,0 +1,20 @@ +#!/usr/bin/env php +getMembers2Import(); +cid=1 +pid=1 + +*/ + +global $tester; +$tester->loadModel('project'); + +$members = $tester->project->getMembers2Import(11, array('admin')); + +r(count($members)) && p() && e('1'); // 获取id为11的项目团队成员个数,排除admin +r($members) && p('pm92:role') && e('产品经理92'); // 获取id为11的项目团队成员的角色 diff --git a/test/model/project/getstats.php b/test/model/project/getstats.php index b182cee1b1..a6871ce083 100755 --- a/test/model/project/getstats.php +++ b/test/model/project/getstats.php @@ -1,11 +1,11 @@ #!/usr/bin/env php getStats(); cid=1 pid=1 @@ -18,13 +18,21 @@ pid=1 */ -$t = new Project('admin'); +global $tester; +$tester->loadModel('project'); $OpenImplement = array('all', 'undone', 'doing', 'wait', '11', '12'); -r($t->getByStatusExe($OpenImplement[0])) && p() && e('630'); //查看所有执行 -r($t->getByStatusExe($OpenImplement[1])) && p() && e('0'); //查看未完成的执行 -r($t->getByStatusExe($OpenImplement[2])) && p() && e('315'); //查看所有进行中的执行 -r($t->getByStatusExe($OpenImplement[3])) && p() && e('315'); //查看所有进行中的执行 -r($t->getByProject($OpenImplement[4])) && p() && e('7'); //查看id为11项目的执行 -r($t->getByProject($OpenImplement[5])) && p() && e('7'); //查看id为12项目的执行 \ No newline at end of file +$allExecutions = $tester->project->getStats(0, 'all'); +$undoneExecutions = $tester->project->getStats(0, 'undone'); +$doingExecutions = $tester->project->getStats(0, 'doing'); +$waitExecutions = $tester->project->getStats(0, 'wait'); +$project11Executions = $tester->project->getStats(11); +$project12Executions = $tester->project->getStats(12); + +r(count($allExecutions)) && p() && e('630'); // 查看所有执行数量 +r(count($undoneExecutions)) && p() && e('630'); // 查看未完成的执行数量 +r(count($doingExecutions)) && p() && e('315'); // 查看所有进行中的执行数量 +r(count($waitExecutions)) && p() && e('315'); // 查看所有进行中的执行数量 +r(count($project11Executions)) && p() && e('7'); // 查看id为11项目的执行数量 +r(count($project12Executions)) && p() && e('7'); // 查看id为12项目的执行数量 diff --git a/test/model/project/getstats4kanban.php b/test/model/project/getstats4kanban.php new file mode 100644 index 0000000000..f7cf3107a0 --- /dev/null +++ b/test/model/project/getstats4kanban.php @@ -0,0 +1,21 @@ +#!/usr/bin/env php +getStats4Kanban(); +cid=1 +pid=1 + +*/ + +global $tester; +$tester->loadModel('project'); +$kanbanGroup = $tester->project->getStats4Kanban(); + +r(count($kanbanGroup['kanbanGroup'])) && p() && e('2'); //统计获取到的看板数据的分组数量 +r(count($kanbanGroup['kanbanGroup']['other'])) && p() && e('11'); //统计获取到的看板数据的其他数量 +r(count($kanbanGroup['kanbanGroup']['other'][1]['wait'])) && p() && e('3'); //统计获取到的看板数据的其他下的项目集1下的wait的项目数量 +r(count($kanbanGroup['kanbanGroup']['other'][1]['doing'])) && p() && e('4'); //统计获取到的看板数据的其他下的项目集1下的doing的项目数量 diff --git a/test/model/project/getteammemberpairs.php b/test/model/project/getteammemberpairs.php index 8b28fa1bcd..10a16437ac 100755 --- a/test/model/project/getteammemberpairs.php +++ b/test/model/project/getteammemberpairs.php @@ -1,22 +1,20 @@ #!/usr/bin/env php getTeamMemberPairs(); cid=1 pid=1 -获取id为11的项目团队成员个数 >> 2 -获取id为1的项目团队成员个数 >> 0 - */ -$project = new Project('admin'); +global $tester; +$tester->loadModel('project'); -$getIdNub = array(11, 1); +$members = $tester->project->getTeamMemberPairs(11); -r($project->getTeamMemberPairs($getIdNub[0])) && p() && e('2'); //获取id为11的项目团队成员个数 -r($project->getTeamMemberPairs($getIdNub[1])) && p() && e('0'); //获取id为1的项目团队成员个数 \ No newline at end of file +r(count($members)) && p() && e('3'); // 获取id为11的项目团队成员个数 +r($members) && p('pm92') && e('产品经理92'); // 获取id为11的项目团队成员的详细信息 diff --git a/test/model/project/getteammembers.php b/test/model/project/getteammembers.php index 17f52ad4a0..ceb40f3fb4 100755 --- a/test/model/project/getteammembers.php +++ b/test/model/project/getteammembers.php @@ -1,7 +1,7 @@ #!/usr/bin/env php loadModel('project'); -$getNu = array(11, array('admin', 'pm92'), 11, array('admin'), true); +$members = $tester->project->getTeamMembers(11); -r($project->getTeamMembers($getNu[0], $getNu[1])) && p() && e('2'); //获取id为11的项目团队成员个数 -r($project->getTeamMembers($getNu[2], $getNu[3], $getNu[4])) && p() && e('1'); //获取id为11的项目团队成员个数,开启新手引导 \ No newline at end of file +r(count($members)) && p() && e('2'); // 获取id为11的项目团队成员个数 +r($members) && p('pm92:role,totalHours,realname') && e('项目经理,343.0,产品经理92'); // 获取id为11的项目团队成员的详细信息 diff --git a/test/model/project/managemembers.php b/test/model/project/managemembers.php new file mode 100644 index 0000000000..357b1601ff --- /dev/null +++ b/test/model/project/managemembers.php @@ -0,0 +1,29 @@ +#!/usr/bin/env php +unlinkMember(); +cid=1 +pid=1 + +*/ + +global $tester; +$tester->loadModel('project'); + +$_POST['accounts'] = array('test2', 'user10', 'dev1'); +$_POST['roles'] = array('测试', '市场', '研发'); +$_POST['days'] = array('10', '12', '11'); +$_POST['hours'] = array('7.5', '8', '8.5'); +$_POST['removeExecution'] = 'no'; + +$tester->project->manageMembers(11); +$members = $tester->project->getTeamMemberPairs(11); + +r(count($members)) && p('') && e('4'); // 查看维护团队之后的成员数量 +r($members) && p('dev1') && e('开发1'); // 查看维护团队之后的成员详情 +r($members) && p('test2') && e('测试2'); // 查看维护团队之后的成员详情 +system("./ztest init"); diff --git a/test/model/project/unlinkmember.php b/test/model/project/unlinkmember.php new file mode 100644 index 0000000000..dcf098add6 --- /dev/null +++ b/test/model/project/unlinkmember.php @@ -0,0 +1,25 @@ +#!/usr/bin/env php +unlinkMember(); +cid=1 +pid=1 + +*/ + +global $tester; +$tester->loadModel('project'); + +$beforeMembers = $tester->project->getTeamMemberPairs(11); +$tester->project->unlinkMember(11, 'admin', false); +$afterMembers = $tester->project->getTeamMemberPairs(11); + +r(count($beforeMembers)) && p('') && e('3'); // 查看移除团队成员之前的ID为11的项目团队成员数量 +r(count($afterMembers)) && p('') && e('2'); // 查看移除团队成员之后的ID为11的项目团队成员数量 +r($beforeMembers) && p('pm92') && e('产品经理92'); // 查看项目ID为11的团队成员的真实姓名 +r($afterMembers) && p('pm92') && e('产品经理92'); // 查看项目ID为11的团队成员的真实姓名 +system("./ztest init"); diff --git a/test/model/project/updateproductprogram.php b/test/model/project/updateproductprogram.php new file mode 100644 index 0000000000..f8e3b50450 --- /dev/null +++ b/test/model/project/updateproductprogram.php @@ -0,0 +1,28 @@ +#!/usr/bin/env php +updateProductProgram(); +cid=1 +pid=1 + +*/ + +global $tester; +$tester->loadModel('project'); + +$productIdList = array(1, 2, 3, 4); +$tester->project->updateProductProgram(7, 1, $productIdList); + +$products = $tester->loadModel('product')->getByIdList($productIdList); + +r(count($products)) && p('') && e('4'); // 查看被更新了项目集的产品数量 +r($products) && p('1:program,name') && e('1,正常产品1'); // 查看被更新了项目集的产品详情 +r($products) && p('2:program,name') && e('1,正常产品2'); // 查看被更新了项目集的产品详情 +r($products) && p('3:program,name') && e('1,正常产品3'); // 查看被更新了项目集的产品详情 +r($products) && p('4:program,name') && e('1,正常产品4'); // 查看被更新了项目集的产品详情 +system("./ztest init"); diff --git a/test/model/project/updateproducts.php b/test/model/project/updateproducts.php new file mode 100644 index 0000000000..a874abd6c7 --- /dev/null +++ b/test/model/project/updateproducts.php @@ -0,0 +1,29 @@ +#!/usr/bin/env php +updateProducts(); +cid=1 +pid=1 + +*/ + +global $tester; +$tester->loadModel('project'); +$tester->loadModel('product'); + +$beforeProducts = $tester->product->getProductPairsByProject(11); + +$productIdList = array(1, 2, 3, 4); +$tester->project->updateProducts(11, $productIdList); + +$afterProducts = $tester->product->getProductPairsByProject(11); + +r(count($beforeProducts)) && p() && e('3'); // 查看更新项目关联的产品之前的产品数量 +r(count($afterProducts)) && p() && e('4'); // 查看更新项目关联的产品之后的产品数量 +r($beforeProducts) && p('81') && e('多平台产品81'); // 查看更新项目关联的产品之前的产品名称 +r($afterProducts) && p('4') && e('正常产品4'); // 查看更新项目关联的产品之后的产品名称 +system("./ztest init");