* Add unit test and adjust code.
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Executable
+30
@@ -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');
|
||||
Executable
+69
@@ -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('『计划开始』不能为空。');
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user