* Add unit test and adjust code.

This commit is contained in:
sunguangming
2023-04-28 16:57:50 +08:00
parent 512782487d
commit 0bda4847e3
5 changed files with 124 additions and 10 deletions
+9 -9
View File
@@ -359,26 +359,26 @@ class projectTao extends projectModel
*/
protected function addProjectAdmin(int $projectID): bool
{
$groupPriv = $this->dao->select('t1.*')->from(TABLE_USERGROUP)->alias('t1')
$projectAdmin = $this->dao->select('t1.*')->from(TABLE_PROJECTADMIN)->alias('t1')
->leftJoin(TABLE_GROUP)->alias('t2')->on('t1.`group` = t2.id')
->where('t1.account')->eq($this->app->user->account)
->andWhere('t2.role')->eq('projectAdmin')
->fetch();
if(!empty($groupPriv))
if(!empty($projectAdmin))
{
$newProject = $groupPriv->project . ",$projectID";
$this->dao->update(TABLE_USERGROUP)->set('project')->eq($newProject)->where('account')->eq($groupPriv->account)->andWhere('`group`')->eq($groupPriv->group)->exec();
$newProject = $projectAdmin->projects . ",$projectID";
$this->dao->update(TABLE_PROJECTADMIN)->set('projects')->eq($newProject)->where('account')->eq($projectAdmin->account)->andWhere('`group`')->eq($projectAdmin->group)->exec();
}
else
{
$projectAdminID = $this->dao->select('id')->from(TABLE_GROUP)->where('role')->eq('projectAdmin')->fetch('id');
$groupPriv = new stdclass();
$groupPriv->account = $this->app->user->account;
$groupPriv->group = $projectAdminID;
$groupPriv->project = $projectID;
$this->dao->replace(TABLE_USERGROUP)->data($groupPriv)->exec();
$projectAdmin = new stdclass();
$projectAdmin->account = $this->app->user->account;
$projectAdmin->group = $projectAdminID;
$projectAdmin->projects = $projectID;
$this->dao->replace(TABLE_PROJECTADMIN)->data($projectAdmin)->exec();
}
return !dao::isError();
+15
View File
@@ -196,4 +196,19 @@ class Project
{
return $this->project->getBudgetWithUnit($budget);
}
/**
* Add user to project admins.
*
* @param int $budget
* @access public
* @return int|string $projectBudget
*/
public function addProjectAdminTest($projectID)
{
global $tester;
$tester->loadModel('project')->addProjectAdmin($projectID);
return $tester->dao->select('*')->from(TABLE_PROJECTADMIN)->fetch();
}
}
+30
View File
@@ -0,0 +1,30 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . "/test/lib/init.php";
include dirname(__FILE__, 2) . '/project.class.php';
su('admin');
zdTable('project')->gen(5);
zdTable('projectadmin')->gen(0);
/**
title=测试 projectModel->create();
timeout=0
cid=1
- 执行projectClass模块的addProjectAdminTest方法,参数是1属性projects @1
- 执行projectClass模块的addProjectAdminTest方法,参数是2属性projects @1,2
- 执行projectClass模块的addProjectAdminTest方法,参数是3属性projects @1,2,3
*/
$projectClass = new project();
r($projectClass->addProjectAdminTest(1)) && p('projects', '|') && e('1');
r($projectClass->addProjectAdminTest(2)) && p('projects', '|') && e('1,2');
r($projectClass->addProjectAdminTest(3)) && p('projects', '|') && e('1,2,3');
+69
View File
@@ -0,0 +1,69 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . "/test/lib/init.php";
include dirname(__FILE__, 2) . '/project.class.php';
su('admin');
$program = zdTable('project');
$program->id->range('1');
$program->name->range('项目集一');
$program->model->range('program');
$program->code->range('项目集代号');
$program->desc->range('测试项目集');
$program->gen(1);
/**
title=测试 projectModel->create();
timeout=0
cid=1
- 执行projectClass模块的create方法,参数是$normalProject, $postData属性name @测试新增项目一
- 执行projectClass模块的create方法,参数是$emptyNameProject, $postData @『项目名称』不能为空。
- 执行projectClass模块的create方法,参数是$emptyEndProject, $postData @『计划完成』不能为空。
- 执行projectClass模块的create方法,参数是$beginGtEndProject, $postData @『计划完成』应当大于『2022-02-07』。
- 执行projectClass模块的create方法,参数是$emptyBeginProject, $postData @『计划开始』不能为空。
*/
global $tester;
$program = $tester->loadModel('project')->getByID(1);
$projectClass = new project();
$project = new stdclass();
$project->parent = 0;
$project->name = '测试新增项目一';
$project->budget = '';
$project->budgetUnit = 'CNY';
$project->begin = '2022-02-07';
$project->end = '2023-01-01';
$project->desc = '测试项目描述';
$project->acl = 'private';
$project->whitelist = 'user1,user2,user3';
$project->PM = 'admin';
$project->type = 'project';
$project->model = 'scrum';
$project->multiple = 1;
$project->hasProduct = 1;
$project->openedBy = 'admin';
$project->openedDate = '2023-01-01';
$postData = new stdclass();
$postData->rawdata = clone $project;
$postData->rawdata->uid = '64dda2xc';
$postData->rawdata->delta = 0;
$postData->rawdata->products = array(1);
$projectID = $projectClass->create($normalProject, $postData);
r($projectClass->createProduct($projectID, $project, $postData, $program)) && p('name') && e('测试新增项目一');
//r($projectClass->createProduct($emptyNameProject, $postData)) && p('message[name]:0') && e('『项目名称』不能为空。');
//r($projectClass->createProduct($emptyEndProject, $postData)) && p('message[end]:0') && e('『计划完成』不能为空。');
//r($projectClass->createProduct($beginGtEndProject, $postData)) && p('message[end]:0') && e('『计划完成』应当大于『2022-02-07』。');
//r($projectClass->createProduct($emptyBeginProject, $postData)) && p('message[begin]:0') && e('『计划开始』不能为空。');
+1 -1
View File
@@ -188,7 +188,7 @@ class projectZen extends project
if($this->app->tab == 'product' and !empty($output['productID'])) $this->loadModel('product')->setMenu($output['productID']);
if($this->app->tab == 'doc') unset($this->lang->doc->menu->project['subMenu']);
if($copyProjectID) $copyProject = $this->copyProject((int)$copyProjectID);
if($copyProjectID) $copyProject = $this->getCopyProject((int)$copyProjectID);
$shadow = empty($copyProject->hasProduct) ? 1 : 0;
if($this->view->globalDisableProgram) $programID = $this->config->global->defaultProgram;