Merge branch 'master' into zenops_46
This commit is contained in:
@@ -124,6 +124,7 @@ $filter->project->story = new stdclass();
|
||||
$filter->project->export = new stdclass();
|
||||
$filter->project->task = new stdclass();
|
||||
$filter->project->execution = new stdclass();
|
||||
$filter->project->testcase = new stdclass();
|
||||
$filter->projectstory->story = new stdclass();
|
||||
$filter->qa->default = new stdclass();
|
||||
$filter->story->create = new stdclass();
|
||||
|
||||
@@ -27,7 +27,6 @@
|
||||
40812 将流程图融入使用帮助中的使用教程中
|
||||
40809 地盘仪表盘删除流程图区块,增加使用帮助区块
|
||||
40808 新用户登录禅道后,删除原弹窗引导
|
||||
40806 欢迎总览页面中支持试用的版本类型调整
|
||||
40801 欢迎总览页面改版
|
||||
40797 欢迎总览页面背景颜色调整
|
||||
40615 优化创建执行节点的交互
|
||||
|
||||
@@ -205,7 +205,7 @@ $config->bug->datatable->fieldList['branch']['fixed'] = 'left';
|
||||
$config->bug->datatable->fieldList['branch']['width'] = '100';
|
||||
$config->bug->datatable->fieldList['branch']['required'] = 'no';
|
||||
$config->bug->datatable->fieldList['branch']['control'] = 'select';
|
||||
$config->bug->datatable->fieldList['branch']['dataSource'] = array('module' => 'bug', 'method' => 'getRelatedObjects', 'params' => 'branch&id,name');
|
||||
$config->bug->datatable->fieldList['branch']['dataSource'] = array('module' => 'branch', 'method' => 'getPairs', 'params' => '$productID');
|
||||
|
||||
$config->bug->datatable->fieldList['type']['title'] = 'type';
|
||||
$config->bug->datatable->fieldList['type']['fixed'] = 'no';
|
||||
|
||||
+14
-6
@@ -863,7 +863,7 @@ class bugModel extends model
|
||||
|
||||
if($bug->assignedTo != $oldBug->assignedTo) $bug->assignedDate = $now;
|
||||
if($bug->resolution != '') $bug->confirmed = 1;
|
||||
if(($bug->resolvedBy != '' or $bug->resolution != '') and $oldBug->status != 'closed')
|
||||
if(($bug->resolvedBy != '' or $bug->resolution != '') and strpos(',resolved,closed,', ",{$oldBug->status},") === false)
|
||||
{
|
||||
$bug->resolvedDate = $now;
|
||||
$bug->status = 'resolved';
|
||||
@@ -1527,17 +1527,25 @@ class bugModel extends model
|
||||
* @return array
|
||||
*/
|
||||
public function getBugs2Link($bugID, $browseType = 'bySearch', $queryID = 0, $pager = null, $excludeBugs = '')
|
||||
{
|
||||
if($browseType == 'bySearch')
|
||||
{
|
||||
$bug = $this->getById($bugID);
|
||||
$bugIDList = $bug->id . ',' . $bug->linkBug . ',' . $excludeBugs;
|
||||
$bugs2Link = $this->getBySearch($bug->product, 'all', $queryID, 'id', $bugIDList, $pager);
|
||||
return $bugs2Link;
|
||||
|
||||
if($browseType == 'bySearch')
|
||||
{
|
||||
return $this->getBySearch($bug->product, 'all', $queryID, 'id', $bugIDList, $pager);
|
||||
}
|
||||
else
|
||||
{
|
||||
return array();
|
||||
return $this->dao->select('*')->from(TABLE_BUG)
|
||||
->where('deleted')->eq('0')
|
||||
->andWhere('id')->notin($bugIDList)
|
||||
->andWhere('product')->eq($bug->product)
|
||||
->beginIF($bug->project)->andWhere('project')->eq($bug->project)->fi()
|
||||
->beginIF($bug->execution)->andWhere('execution')->eq($bug->execution)->fi()
|
||||
->orderBy('id desc')
|
||||
->page($pager)
|
||||
->fetchAll();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -48,7 +48,19 @@ class custom extends control
|
||||
$currentLang = $this->app->getClientLang();
|
||||
|
||||
$this->app->loadLang($module);
|
||||
if($lang == 'all')
|
||||
{
|
||||
$fieldList = array();
|
||||
$items = $this->custom->getItems("lang=all&module=$module§ion=$field&vision={$this->config->vision}");
|
||||
foreach($items as $key => $item)
|
||||
{
|
||||
$fieldList[$key] = $item->value;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$fieldList = zget($this->lang->$module, $field, '');
|
||||
}
|
||||
|
||||
if($module == 'project' and $field == 'unitList')
|
||||
{
|
||||
|
||||
@@ -90,6 +90,9 @@ class datatable extends control
|
||||
}
|
||||
|
||||
$cols = $this->datatable->getFieldList($module);
|
||||
|
||||
if($module == 'story' && $extra != 'requirement') unset($cols['SRS']);
|
||||
|
||||
if($extra == 'requirement')
|
||||
{
|
||||
unset($cols['plan']);
|
||||
@@ -97,6 +100,8 @@ class datatable extends control
|
||||
unset($cols['taskCount']);
|
||||
unset($cols['bugCount']);
|
||||
unset($cols['caseCount']);
|
||||
unset($cols['URS']);
|
||||
|
||||
$cols['title']['title'] = str_replace($this->lang->SRCommon, $this->lang->URCommon, $this->lang->story->title);
|
||||
}
|
||||
|
||||
|
||||
@@ -1760,12 +1760,15 @@ class execution extends control
|
||||
foreach($products as $productIndex => $product)
|
||||
{
|
||||
$productPlans[$productIndex] = array();
|
||||
if(isset($branches[$productIndex]))
|
||||
{
|
||||
foreach($branches[$productIndex] as $branchID => $branch)
|
||||
{
|
||||
$linkedBranches[$productIndex][$branchID] = $branchID;
|
||||
$productPlans[$productIndex] += isset($plans[$productIndex][$branchID]) ? $plans[$productIndex][$branchID] : array();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->view->branches = $branches;
|
||||
$this->view->linkedBranches = $linkedBranches;
|
||||
|
||||
@@ -395,6 +395,7 @@ $lang->kanbancard->beginAndEnd = 'Begin & End';
|
||||
$lang->kanbancard->begin = 'Begin';
|
||||
$lang->kanbancard->end = 'End';
|
||||
$lang->kanbancard->pri = 'Priority';
|
||||
$lang->kanbancard->status = 'Status';
|
||||
$lang->kanbancard->progress = 'Progress';
|
||||
$lang->kanbancard->desc = 'Description';
|
||||
$lang->kanbancard->estimate = 'Estimate';
|
||||
|
||||
@@ -395,6 +395,7 @@ $lang->kanbancard->beginAndEnd = 'Begin & End';
|
||||
$lang->kanbancard->begin = 'Begin';
|
||||
$lang->kanbancard->end = 'End';
|
||||
$lang->kanbancard->pri = 'Priority';
|
||||
$lang->kanbancard->status = 'Status';
|
||||
$lang->kanbancard->progress = 'Progress';
|
||||
$lang->kanbancard->desc = 'Description';
|
||||
$lang->kanbancard->estimate = 'Estimate';
|
||||
|
||||
@@ -395,6 +395,7 @@ $lang->kanbancard->beginAndEnd = 'Begin & End';
|
||||
$lang->kanbancard->begin = 'Begin';
|
||||
$lang->kanbancard->end = 'End';
|
||||
$lang->kanbancard->pri = 'Priority';
|
||||
$lang->kanbancard->status = 'Status';
|
||||
$lang->kanbancard->progress = 'Progress';
|
||||
$lang->kanbancard->desc = 'Description';
|
||||
$lang->kanbancard->estimate = 'Estimate';
|
||||
|
||||
@@ -395,6 +395,7 @@ $lang->kanbancard->beginAndEnd = '起止日期';
|
||||
$lang->kanbancard->begin = '预计开始';
|
||||
$lang->kanbancard->end = '截止日期';
|
||||
$lang->kanbancard->pri = '优先级';
|
||||
$lang->kanbancard->status = '状态';
|
||||
$lang->kanbancard->progress = '进度';
|
||||
$lang->kanbancard->desc = '描述';
|
||||
$lang->kanbancard->estimate = '预计';
|
||||
|
||||
@@ -222,9 +222,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group addProduct hidden <?php if($programID) echo 'required';?>">
|
||||
<div class="input-group addProduct hidden">
|
||||
<?php echo html::input('productName', '', "class='form-control'");?>
|
||||
<span class='input-group-addon'><?php echo html::checkBox('newProduct', $lang->project->addProduct, '', "onchange=addNewProduct(this);");?></span>
|
||||
<span class='input-group-addon required'><?php echo html::checkBox('newProduct', $lang->project->addProduct, '', "onchange=addNewProduct(this);");?></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -254,5 +254,5 @@ $config->story->datatable->fieldList['caseCount']['name'] = $lang->story->ca
|
||||
|
||||
$config->story->datatable->fieldList['actions']['title'] = 'actions';
|
||||
$config->story->datatable->fieldList['actions']['fixed'] = 'right';
|
||||
$config->story->datatable->fieldList['actions']['width'] = $app->tab == 'project' ? '230' : '210';
|
||||
$config->story->datatable->fieldList['actions']['width'] = $app->tab == 'project' ? '250' : '230';
|
||||
$config->story->datatable->fieldList['actions']['required'] = 'yes';
|
||||
|
||||
@@ -1364,7 +1364,7 @@ class story extends control
|
||||
$buildApp = $tab == 'product' ? 'project' : $tab;
|
||||
$releaseApp = $tab == 'execution' ? 'product' : $tab;
|
||||
$this->session->set('productList', $uri . "#app={$tab}", 'product');
|
||||
if(!isonlybody())$this->session->set('buildList', $uri, $buildApp);
|
||||
if(!isonlybody()) $this->session->set('buildList', $uri, $buildApp);
|
||||
$this->app->loadLang('bug');
|
||||
|
||||
$storyID = (int)$storyID;
|
||||
@@ -1401,7 +1401,8 @@ class story extends control
|
||||
}
|
||||
elseif($from == 'project')
|
||||
{
|
||||
$this->loadModel('project')->setMenu($this->session->project);
|
||||
$projectID = (isset($story->projects[$this->session->project]) || empty($story->projects)) ? $this->session->project : key($story->projects);
|
||||
$this->loadModel('project')->setMenu($projectID);
|
||||
}
|
||||
elseif($from == 'qa')
|
||||
{
|
||||
|
||||
+19
-2
@@ -47,13 +47,30 @@ class storyModel extends model
|
||||
if($setImgSize) $story->spec = $this->file->setImgSize($story->spec);
|
||||
if($setImgSize) $story->verify = $this->file->setImgSize($story->verify);
|
||||
|
||||
$story->executions = $this->dao->select('t1.project, t2.name, t2.status, t2.type, t2.multiple')->from(TABLE_PROJECTSTORY)->alias('t1')
|
||||
$projects = $this->dao->select('t1.project, t2.name, t2.status, t2.type, t2.multiple, t2.project AS parentProject')->from(TABLE_PROJECTSTORY)->alias('t1')
|
||||
->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.project = t2.id')
|
||||
->where('t2.type')->in('sprint,stage,kanban')
|
||||
->where('t2.type')->in('sprint,stage,kanban,project')
|
||||
->beginIF($story->twins)->andWhere('t1.story')->in(ltrim($story->twins, ',') . $story->id)
|
||||
->beginIF(!$story->twins)->andWhere('t1.story')->in($story->id)
|
||||
->orderBy('t1.`order` DESC')
|
||||
->fetchAll('project');
|
||||
|
||||
$story->projects = array();
|
||||
$story->executions = array();
|
||||
foreach($projects as $project)
|
||||
{
|
||||
if($project->type == 'project')
|
||||
{
|
||||
$story->projects[$project->project] = $project->project;
|
||||
}
|
||||
else
|
||||
{
|
||||
$story->executions[$project->project] = $project;
|
||||
|
||||
if(!$project->multiple) $story->projects[$project->parentProject] = $project->parentProject;
|
||||
}
|
||||
}
|
||||
|
||||
$story->tasks = $this->dao->select('id, name, assignedTo, execution, project, status, consumed, `left`,type')->from(TABLE_TASK)
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF($story->twins)->andWhere('story')->in(ltrim($story->twins, ',') . $story->id)
|
||||
|
||||
@@ -158,6 +158,6 @@ ksort($myOrders);
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php if($i > 4):?>
|
||||
<?php if(!empty($myCountList) and $i > 4):?>
|
||||
<style>#legendMyEffort > .table {margin-bottom: 5px;}</style>
|
||||
<?php endif;?>
|
||||
|
||||
@@ -71,6 +71,7 @@ class tutorialModel extends model
|
||||
$product->type = 'normal';
|
||||
$product->status = 'normal';
|
||||
$product->desc = '';
|
||||
$product->shadow = '0';
|
||||
$product->PO = $this->app->user->account;
|
||||
$product->QD = '';
|
||||
$product->RD = '';
|
||||
@@ -166,8 +167,9 @@ class tutorialModel extends model
|
||||
$project->displayCards = 0;
|
||||
$project->fluidBoard = 0;
|
||||
$project->deleted = '0';
|
||||
$project->hasProduct = '';
|
||||
$project->hasProduct = '1';
|
||||
$project->multiple = '';
|
||||
$project->division = 0;
|
||||
|
||||
return $project;
|
||||
}
|
||||
@@ -224,10 +226,15 @@ class tutorialModel extends model
|
||||
$execution->teamCount = count($execution->teamMembers);
|
||||
$execution->hasProduct = '';
|
||||
$execution->multiple = '';
|
||||
$execution->order = 1;
|
||||
$execution->burns = array('');
|
||||
$execution->type = 'sprint';
|
||||
$execution->projectName = '';
|
||||
$execution->projectModel = '';
|
||||
|
||||
if($browseType and $browseType != 'all') $execution->name .= '-' . $browseType; // Fix bug #21096
|
||||
|
||||
$executionStat[$execution->id] = $execution;
|
||||
$executionStat[0] = $execution;
|
||||
return $executionStat;
|
||||
}
|
||||
|
||||
|
||||
@@ -485,7 +485,7 @@ class userModel extends model
|
||||
}
|
||||
|
||||
$accounts[$i] = $data[$i]->account;
|
||||
$prev['company'] = $data[$i]->company;
|
||||
if($users->userType == 'outside') $prev['company'] = $data[$i]->company;
|
||||
$prev['dept'] = $data[$i]->dept;
|
||||
$prev['role'] = $data[$i]->role;
|
||||
$prev['group'] = $data[$i]->group;
|
||||
|
||||
+342
-10
@@ -15,6 +15,90 @@ class programTest
|
||||
$this->program = $tester->loadModel('program');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get switcher.
|
||||
*
|
||||
* @param int $programID
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getSwitcherTest($programID = 0)
|
||||
{
|
||||
return $this->program->getSwitcher($programID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get list by search.
|
||||
*
|
||||
* @param string $orderBy
|
||||
* @param int $queryID
|
||||
* @param string $sql
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getListBySearchTest($orderBy = 'id_asc', $queryID = 0, $sql = '')
|
||||
{
|
||||
if(!empty($sql)) $_SESSION['programQuery'] = $sql;
|
||||
|
||||
return $this->program->getListBySearch($orderBy, $queryID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get pairs.
|
||||
*
|
||||
* @param bool $isQueryAll
|
||||
* @param string $orderBy
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getPairsTest($isQueryAll = false, $orderBy = 'id_desc')
|
||||
{
|
||||
return $this->program->getPairs($isQueryAll, $orderBy);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get pairs by id list.
|
||||
*
|
||||
* @param string $programIDList
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getPairsByListTest($programIDList = '')
|
||||
{
|
||||
return $this->program->getPairsByList($programIDList);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get parent pairs.
|
||||
*
|
||||
* @param string $model
|
||||
* @param string $mode
|
||||
* @param bool $showRoot
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getParentPairsTest($model = '', $mode = 'noclosed', $showRoot = true)
|
||||
{
|
||||
return $this->program->getParentPairs($model, $mode, $showRoot);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the product associated with the program.
|
||||
*
|
||||
* @param int $programID
|
||||
* @param string $mode
|
||||
* @param string $status
|
||||
* @param string|array $append
|
||||
* @param int|string $shadow
|
||||
* @param bool $withProgram
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProductPairsTest($programID = 0, $mode = 'assign', $status = 'all', $append = '', $shadow = 0, $withProgram = false)
|
||||
{
|
||||
return $this->program->getProductPairs($programID, $mode, $status, $append, $shadow, $withProgram);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test create program.
|
||||
*
|
||||
@@ -22,7 +106,7 @@ class programTest
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function create($data)
|
||||
public function createTest($data)
|
||||
{
|
||||
$_POST = $data;
|
||||
|
||||
@@ -30,21 +114,34 @@ class programTest
|
||||
|
||||
if(dao::isError()) return array('message' => dao::getError());
|
||||
|
||||
$program = $this->program->getById($programID);
|
||||
$program = $this->program->getByID($programID);
|
||||
|
||||
return $program;
|
||||
}
|
||||
|
||||
/**
|
||||
* createStakeholder
|
||||
* Get parent PM.
|
||||
*
|
||||
* @param int mixed $programID
|
||||
* @param array $programIdList
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getParentPMTest($programIdList)
|
||||
{
|
||||
return $this->program->getParentPM($programIdList);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create stakeholder.
|
||||
*
|
||||
* @param int $programID
|
||||
* @param array $accounts
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function createStakeholder($programID)
|
||||
public function createStakeholderTest($programID, $accounts = array())
|
||||
{
|
||||
$_POST['accounts'] = array('dev1', 'dev2');
|
||||
$_POST['accounts'] = $accounts;
|
||||
$stakeHolder = $this->program->createStakeholder($programID);
|
||||
|
||||
return $this->program->getStakeholdersByPrograms($programID);
|
||||
@@ -60,7 +157,7 @@ class programTest
|
||||
{
|
||||
$programID = $this->program->createDefaultProgram();
|
||||
|
||||
return $programID;
|
||||
return $programID > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -74,7 +171,7 @@ class programTest
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getList($status = 'all', $orderBy = 'id_asc', $pager = NULL, $type = '', $idList = '')
|
||||
public function getListTest($status = 'all', $orderBy = 'id_asc', $pager = NULL, $type = '', $idList = '')
|
||||
{
|
||||
$this->program->cookie->showClosed = 'ture';
|
||||
$programs = $this->program->getList($status, $orderBy, $pager, $type, $idList);
|
||||
@@ -86,14 +183,14 @@ class programTest
|
||||
|
||||
|
||||
/**
|
||||
* update
|
||||
* Test update program.
|
||||
*
|
||||
* @param mixed $proguamID
|
||||
* @param mixed $data
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function update($programID, $data)
|
||||
public function updateTest($programID, $data)
|
||||
{
|
||||
$_POST = $data;
|
||||
$this->program->update($programID);
|
||||
@@ -116,4 +213,239 @@ class programTest
|
||||
|
||||
return $program;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get budget left.
|
||||
*
|
||||
* @param int $programID
|
||||
* @access public
|
||||
* @return int
|
||||
*/
|
||||
public function getBudgetLeftTest($programID)
|
||||
{
|
||||
$program = $this->program->getByID($programID);
|
||||
$budget = $this->program->getBudgetLeft($program);
|
||||
|
||||
if(dao::isError()) return array('message' => dao::getError());
|
||||
|
||||
return $budget;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set tree path.
|
||||
*
|
||||
* @param int $programID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setTreePathTest($programID)
|
||||
{
|
||||
$this->program->setTreePath($programID);
|
||||
$program = $this->program->getByID($programID);
|
||||
|
||||
return $program;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get children.
|
||||
*
|
||||
* @param int $programID
|
||||
* @access public
|
||||
* @return int
|
||||
*/
|
||||
public function getChildrenTest($programID)
|
||||
{
|
||||
return $this->program->getChildren($programID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check clickable.
|
||||
*
|
||||
* @param int $programID
|
||||
* @param string $status
|
||||
* @access public
|
||||
* @return int
|
||||
*/
|
||||
public function isClickableTest($programID, $status)
|
||||
{
|
||||
return $this->program->isClickable($programID, $status);
|
||||
}
|
||||
|
||||
/**
|
||||
* Has unfinished.
|
||||
*
|
||||
* @param int $programID
|
||||
* @access public
|
||||
* @return int
|
||||
*/
|
||||
public function hasUnfinishedTest($programID)
|
||||
{
|
||||
$program = $this->program->getByID($programID);
|
||||
return $this->program->hasUnfinished($program);
|
||||
}
|
||||
|
||||
/*
|
||||
* get involved programs.
|
||||
*
|
||||
* @param string $account
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getInvolvedProgramsTest($account)
|
||||
{
|
||||
return $this->program->getInvolvedPrograms($account);
|
||||
}
|
||||
|
||||
/*
|
||||
* Get Tree menu.
|
||||
*
|
||||
* @param string $programID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getTreeMenuTest($programID)
|
||||
{
|
||||
return $this->program->getTreeMenu($programID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get top pairs.
|
||||
*
|
||||
* @param string $model
|
||||
* @param string $mode
|
||||
* @param bool $isQueryAll
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getTopPairsTest($model = '', $mode = '', $isQueryAll = false)
|
||||
{
|
||||
return $this->program->getTopPairs($model, $mode, $isQueryAll);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get kanban group.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getKanbanGroupTest()
|
||||
{
|
||||
return $this->program->getKanbanGroup();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get team member pairs .
|
||||
*
|
||||
* @param int $programID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getTeamMemberPairsTest($programID)
|
||||
{
|
||||
return $this->program->getTeamMemberPairs($programID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get project stats.
|
||||
*
|
||||
* @param int $programID
|
||||
* @param string $browseType
|
||||
* @param int $queryID
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectStatsTest($programID = 0, $browseType = 'undone', $queryID = 0, $orderBy = 'id_desc', $pager = null)
|
||||
{
|
||||
return $this->program->getProjectStats($programID, $browseType, $queryID, $orderBy, $pager);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get project list.
|
||||
*
|
||||
* @param int $programID
|
||||
* @param string $browseType
|
||||
* @param int $queryID
|
||||
* @param string $orderBy
|
||||
* @param int $pager
|
||||
* @param int $programTitle
|
||||
* @param int $involved
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectListTest($programID = 0, $browseType = 'all', $queryID = 0, $orderBy = 'id_desc', $pager = null, $programTitle = 0, $involved = 0)
|
||||
{
|
||||
return $this->program->getProjectList($programID, $browseType, $queryID, $orderBy, $pager, $programTitle, $involved);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get progress list.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProgressListTest()
|
||||
{
|
||||
return $this->program->getProgressList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get stakeholders.
|
||||
*
|
||||
* @param int $programID
|
||||
* @param string $orderBy
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getStakeholdersTest($programID, $orderBy = 'id_desc')
|
||||
{
|
||||
return $this->program->getStakeholders($programID, $orderBy);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test save state.
|
||||
*
|
||||
* @param int $programID
|
||||
* @param array $programs
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function saveStateTest($programID = 0, $programs = array())
|
||||
{
|
||||
return $this->program->saveState($programID, $programs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test build operate menu.
|
||||
*
|
||||
* @param int $programID
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function buildOperateMenuTest($programID = 0)
|
||||
{
|
||||
$program = $this->program->getByID($programID);
|
||||
if(empty($program)) return '0';
|
||||
|
||||
return $this->program->buildOperateMenu($program);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test set menu.
|
||||
*
|
||||
* @param int $programID
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function setMenuTest($programID = 0)
|
||||
{
|
||||
$program = $this->program->getByID($programID);
|
||||
if(empty($program)) return '0';
|
||||
|
||||
$this->program->setMenu($programID);
|
||||
|
||||
global $lang;
|
||||
return strip_tags($lang->switcherMenu);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,9 +14,9 @@ class userTest
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getListTest($count = false)
|
||||
public function getListTest($params = 'nodeleted', $count = false)
|
||||
{
|
||||
$objects = $this->objectModel->getList();
|
||||
$objects = $this->objectModel->getList($params);
|
||||
if(dao::isError())
|
||||
{
|
||||
$error = dao::getError();
|
||||
@@ -32,13 +32,14 @@ class userTest
|
||||
* Test get user information by accounts.
|
||||
*
|
||||
* @param array $accounts
|
||||
* @param string $keyField
|
||||
* @param bool $count
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getListByAccountsTest($accounts = array(), $count = false)
|
||||
public function getListByAccountsTest($accounts = array(), $keyField = 'id', $count = false)
|
||||
{
|
||||
$objects = $this->objectModel->getListByAccounts($accounts);
|
||||
$objects = $this->objectModel->getListByAccounts($accounts, $keyField);
|
||||
if(dao::isError())
|
||||
{
|
||||
$error = dao::getError();
|
||||
@@ -77,12 +78,13 @@ class userTest
|
||||
/**
|
||||
* Test get avatar pairs.
|
||||
*
|
||||
* @param string $params
|
||||
* @access public
|
||||
* @return void
|
||||
* @return array
|
||||
*/
|
||||
public function getAvatarPairsTest()
|
||||
public function getAvatarPairsTest($param = 'nodeleted')
|
||||
{
|
||||
$objects = $this->objectModel->getAvatarPairs();
|
||||
$objects = $this->objectModel->getAvatarPairs($param);
|
||||
if(dao::isError())
|
||||
{
|
||||
$error = dao::getError();
|
||||
@@ -955,4 +957,18 @@ class userTest
|
||||
{
|
||||
return $this->objectModel->processAccountSort($users);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set users list.
|
||||
*
|
||||
* @param array $users
|
||||
* @param string $account
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function setUserListTest($users, $account)
|
||||
{
|
||||
$string = $this->objectModel->setUserList($users, $account);
|
||||
return strpos($string, "<option value='$account' selected='selected'") !== false ? 1 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ fields:
|
||||
note: "真实姓名"
|
||||
fields:
|
||||
- field: realname1
|
||||
range: admin,用户,测试{100},开发{100},项目经理{100},产品经理{100},研发主管{100},产品主管{100},测试主管{100},高层管理{100},用户{100},其他{100},A,BB,CCC,非常长非常长的用户名怎么这么长?
|
||||
range: admin,用户{99},测试{100},开发{100},项目经理{100},产品经理{100},研发主管{100},产品主管{100},测试主管{100},高层管理{100},外用户{100},其他{100},A,BB,CCC,非常长非常长的用户名怎么这么长?
|
||||
- field: realname2
|
||||
range: [],1-99,1-100,1-100,1-100,1-100,1-100,1-100,1-100,1-100,1-100,1-100,[]{4}
|
||||
- field: nickname
|
||||
|
||||
@@ -52,7 +52,6 @@ class Processor
|
||||
$this->initTest();
|
||||
$this->initTodo();
|
||||
$this->initSonPlan();
|
||||
$this->initBassicSql();
|
||||
|
||||
$this->dao->commit();
|
||||
}
|
||||
@@ -298,7 +297,6 @@ class Processor
|
||||
{
|
||||
global $app;
|
||||
$sqlRoot = $app->getAppRoot();
|
||||
$this->dao->exec(file_get_contents($sqlRoot . '/data/zt_config.sql'));
|
||||
$this->dao->exec(file_get_contents($sqlRoot . '/data/zt_block.sql'));
|
||||
$this->dao->exec(file_get_contents($sqlRoot . '/data/zt_lang.sql'));
|
||||
$this->dao->exec(file_get_contents($sqlRoot . '/data/zt_cron.sql'));
|
||||
|
||||
@@ -4,7 +4,7 @@ INSERT INTO `zt_config` (`id`, `vision`, `owner`, `module`, `section`, `key`, `v
|
||||
(2, 'rnd', 'system', 'common', '', 'CRProduct', '1'),
|
||||
(3, 'rnd', 'system', 'common', '', 'CRExecution', '1'),
|
||||
(4, 'rnd', 'system', 'custom', '', 'URSR', '2'),
|
||||
(9, 'rnd', 'system', 'common', 'global', 'mode', 'new'),
|
||||
(9, 'rnd', 'system', 'common', 'global', 'mode', 'ALM'),
|
||||
(6, 'rnd', 'system', 'project', '', 'unitList', 'CNY,USD'),
|
||||
(7, 'rnd', 'system', 'project', '', 'defaultCurrency', 'CNY'),
|
||||
(8, 'rnd', 'system', 'story', '', 'reviewRules', 'allpass'),
|
||||
|
||||
+1
-1
@@ -259,7 +259,7 @@ function zdImport($table, $yaml, $count = 10)
|
||||
function su($account)
|
||||
{
|
||||
$userModel = new userModel();
|
||||
$user = $userModel->identify($account, '123qwe!@#');
|
||||
$user = $userModel->identify($account, '123Qwe!@#');
|
||||
if($user) return $userModel->login($user);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -257,7 +257,7 @@ class yaml
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function gen($rows, $version = '')
|
||||
public function gen($rows, $version = '1.0')
|
||||
{
|
||||
$runFileDir = dirname(getcwd() . DS . $_SERVER['SCRIPT_FILENAME']);
|
||||
$runFileName = str_replace(strrchr($_SERVER['SCRIPT_FILENAME'], "."), "", $_SERVER['SCRIPT_FILENAME']);
|
||||
@@ -270,7 +270,7 @@ class yaml
|
||||
|
||||
$yamlDataArr['title'] = "zt_{$this->tableName}";
|
||||
$yamlDataArr['author'] = "auto_{$runFileName}";
|
||||
$version ? $yamlDataArr['version'] = $version : $yamlDataArr['version'] = '1.0';
|
||||
$yamlDataArr['version'] = $version;
|
||||
|
||||
if(empty($this->fields->fieldArr))
|
||||
{
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModel::getStakeholdersByPrograms();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
权限不足跳转 >> html
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
ob_start();
|
||||
$tester->program->accessDenied();
|
||||
$result = ob_get_clean();
|
||||
|
||||
r(substr($result, 1, 4)) && p() && e('html'); // 权限不足跳转
|
||||
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1,2');
|
||||
$program->name->range('父项目集1,父项目集2');
|
||||
$program->type->range('program');
|
||||
$program->budget->range('900000,899900');
|
||||
$program->path->range('1,2')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(2);
|
||||
|
||||
su('admin');
|
||||
/**
|
||||
|
||||
title=测试 programModel::buildOperateMenu();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
项目集不存在 >> 0
|
||||
项目集存在 >> div
|
||||
|
||||
*/
|
||||
|
||||
$programTester = new programTest();
|
||||
$menus1 = $programTester->buildOperateMenuTest(0);
|
||||
$menus2 = $programTester->buildOperateMenuTest(1);
|
||||
|
||||
r($menus1) && p() && e('0'); // 项目集不存在
|
||||
r(substr($menus2, 1, 3)) && p() && e('div'); // 项目集存在
|
||||
@@ -2,9 +2,17 @@
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
$db->switchDB();
|
||||
su('admin');
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1');
|
||||
$program->name->range('父项目集1');
|
||||
$program->type->range('program');
|
||||
$program->path->range('1')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(1);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModel::create();
|
||||
@@ -15,12 +23,11 @@ pid=1
|
||||
项目集名称为空时 >> 『项目集名称』不能为空。
|
||||
项目集的开始时间为空 >> 『计划开始』不能为空。
|
||||
项目集的完成时间为空 >> 『计划完成』不能为空。
|
||||
项目集的计划完成时间大于计划开始时间 >> 『计划完成』应当大于『2022-01-12』。
|
||||
项目集的完成日期大于父项目集的完成日期(需要实时更新日期) >> 父项目集的开始日期:2022-01-16,开始日期不能小于父项目集的开始日期
|
||||
『计划完成』应当大于『2022-01-12』。 >> 『计划完成』应当大于『2022-01-12』。
|
||||
|
||||
*/
|
||||
|
||||
$program = new programTest();
|
||||
$programTester = new programTest();
|
||||
|
||||
$data = array(
|
||||
'parent' => 0,
|
||||
@@ -48,15 +55,8 @@ $emptyEndProgram['end'] = '';
|
||||
$beginGtEndProgram = $data;
|
||||
$beginGtEndProgram['end'] = '2022-01-10';
|
||||
|
||||
$moreThanParent = $data;
|
||||
$moreThanParent['parent'] = '1';
|
||||
$moreThanParent['begin'] = '2018-01-01';
|
||||
$moreThanParent['end'] = '2022-02-10';
|
||||
|
||||
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('『计划开始』不能为空。'); // 项目集的开始时间为空
|
||||
r($program->create($emptyEndProgram)) && p('message[end]:0') && e('『计划完成』不能为空。'); // 项目集的完成时间为空
|
||||
r($program->create($beginGtEndProgram)) && p('message[end]:0') && e('『计划完成』应当大于『2022-01-12』。'); // 项目集的计划完成时间大于计划开始时间
|
||||
r($program->create($moreThanParent)) && p('message:begin;message:end') && e('父项目集的开始日期:2022-01-16,开始日期不能小于父项目集的开始日期'); // 项目集的完成日期大于父项目集的完成日期(需要实时更新日期)
|
||||
$db->restoreDB();
|
||||
r($programTester->createTest($normalProgram)) && p('name') && e('测试新增项目集一'); // 创建新项目集
|
||||
r($programTester->createTest($emptyNameProgram)) && p('message[name]:0') && e('『项目集名称』不能为空。'); // 项目集名称为空时
|
||||
r($programTester->createTest($emptyBeginProgram)) && p('message[begin]:0') && e('『计划开始』不能为空。'); // 项目集的开始时间为空
|
||||
r($programTester->createTest($emptyEndProgram)) && p('message[end]:0') && e('『计划完成』不能为空。'); // 项目集的完成时间为空
|
||||
r($programTester->createTest($beginGtEndProgram)) && p('message[end]:0') && e('『计划完成』应当大于『2022-01-12』。'); // 『计划完成』应当大于『2022-01-12』。
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
$db->switchDB();
|
||||
|
||||
/**
|
||||
|
||||
@@ -10,14 +9,12 @@ title=测试 programModel::createDefaultProgram();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
创建默认项目集并返回ID >> 751
|
||||
创建默认项目集 >> 1
|
||||
|
||||
*/
|
||||
|
||||
$test = new programTest();
|
||||
$programTester = new programTest();
|
||||
|
||||
$result = $test->createDefaultProgramTest();
|
||||
$result = $programTester->createDefaultProgramTest();
|
||||
|
||||
r($result) && p('') && e('751'); // 创建默认项目集并返回ID
|
||||
|
||||
$db->restoreDB();
|
||||
r($result) && p('') && e('1'); // 创建默认项目集
|
||||
|
||||
@@ -2,7 +2,15 @@
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
$db->switchDB();
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1');
|
||||
$program->name->range('父项目集1');
|
||||
$program->type->range('program');
|
||||
$program->path->range('1')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(1);
|
||||
|
||||
/**
|
||||
|
||||
@@ -11,17 +19,14 @@ cid=1
|
||||
pid=1
|
||||
|
||||
创建id=1的项目集的干系人并查看数量。 >> 2
|
||||
创建id=1的项目集的干系人dev1,dev2并查看Account。 >> dev2;dev1
|
||||
创建id=1的项目集的干系人dev1,dev2并查看Account。 >> dev1;dev2
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
$programTester = new programTest();
|
||||
|
||||
$_POST['accounts'] = array('dev1', 'dev2');
|
||||
$tester->program->createStakeholder(1);
|
||||
$result = $tester->program->getStakeholdersByPrograms(1);
|
||||
$accounts = array('dev1', 'dev2');
|
||||
$result = $programTester->createStakeholderTest(1, $accounts);
|
||||
|
||||
r(count($result)) && p('') && e('2'); // 创建id=1的项目集的干系人并查看数量。
|
||||
r($result) && p('0:account;1:account') && e('dev2;dev1'); // 创建id=1的项目集的干系人dev1,dev2并查看Account。
|
||||
$db->restoreDB();
|
||||
r($result) && p('0:account;1:account') && e('dev1;dev2'); // 创建id=1的项目集的干系人dev1,dev2并查看Account。
|
||||
|
||||
@@ -1,25 +1,33 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
su('admin');
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1,2');
|
||||
$program->name->range('父项目集1,父项目集2');
|
||||
$program->type->range('program');
|
||||
$program->budget->range('900000,899900');
|
||||
$program->path->range('1,2')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(2);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModel::getBudgetLeft();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
查看项目11的所有父项目集的预算剩余 >> 900000
|
||||
查看项目12的所有父项目集的预算剩余 >> 899900
|
||||
查看项目集1的所有父项目集的预算剩余 >> 900000
|
||||
查看项目集2的所有父项目集的预算剩余 >> 899900
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
$program1 = $tester->program->getById(11);
|
||||
$program2 = $tester->program->getById(12);
|
||||
$result1 = $tester->program->getBudgetLeft($program1);
|
||||
$result2 = $tester->program->getBudgetLeft($program2);
|
||||
$programTester = new programTest();
|
||||
$result1 = $programTester->getBudgetLeftTest(1);
|
||||
$result2 = $programTester->getBudgetLeftTest(2);
|
||||
|
||||
r($result) && p() && e('900000'); // 查看项目11的所有父项目集的预算剩余
|
||||
r($result) && p() && e('899900'); // 查看项目12的所有父项目集的预算剩余
|
||||
r($result1) && p() && e('900000'); // 查看项目集1的所有父项目集的预算剩余
|
||||
r($result2) && p() && e('899900'); // 查看项目集2的所有父项目集的预算剩余
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModel::getBudgetUnitList();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
获取货币类型列表 >> 人民币;美元
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('project');
|
||||
|
||||
r($tester->loadModel('program')->getBudgetUnitList()) && p('CNY;USD') && e('人民币;美元'); //获取货币类型列表
|
||||
@@ -1,23 +1,30 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
su('admin');
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1-3');
|
||||
$program->name->range('父项目集1,子项目集1,子项目集2');
|
||||
$program->parent->range('0,1,1');
|
||||
$program->grade->range('1,2,2');
|
||||
$program->type->range('program');
|
||||
$program->path->range('`,1,`,`,1,2,`,`,1,3,`');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(3);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModel:: getChildren();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
通过id查找id=1的子项目集个数 >> 9
|
||||
通过id查找id=22的子项目集个数 >> 7
|
||||
通过id查找id=221的子项目集个数 >> 0
|
||||
通过id查找id=1的子项目集个数 >> 2
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
$programTester = new programTest();
|
||||
|
||||
r($tester->program->getChildren(1)) && p() && e('9'); // 通过id查找id=1的子项目集个数
|
||||
r($tester->program->getChildren(22)) && p() && e('7'); // 通过id查找id=22的子项目集个数
|
||||
r($tester->program->getChildren(221)) && p() && e('0'); // 通过id查找id=221的子项目集个数
|
||||
r($programTester->getChildrenTest(1)) && p() && e('2'); // 通过id查找id=1的子项目集个数
|
||||
|
||||
@@ -1,8 +1,20 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
su('admin');
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1-3');
|
||||
$program->name->range('1-3')->prefix('项目集');
|
||||
$program->type->range('program');
|
||||
$program->path->range('1-3')->prefix(',')->postfix(',');
|
||||
$program->grade->range('1');
|
||||
$program->openedBy->range('admin,test1');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(3);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModel::getInvolvedPrograms();
|
||||
@@ -10,18 +22,17 @@ cid=1
|
||||
pid=1
|
||||
|
||||
获取admin参与的项目集数量 >> 2
|
||||
获取test2参与的项目集数量 >> 1
|
||||
获取admin参与的项目集ID >> 10
|
||||
获取test2参与的项目集ID >> 1
|
||||
获取test1参与的项目集数量 >> 1
|
||||
获取admin参与的项目集ID >> 1
|
||||
获取test1参与的项目集ID >> 2
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
$adminPrograms = $tester->program->getInvolvedPrograms('admin');
|
||||
$test2Programs = $tester->program->getInvolvedPrograms('test2');
|
||||
$programTester = new programTest();
|
||||
$adminPrograms = $programTester->getInvolvedProgramsTest('admin');
|
||||
$test1Programs = $programTester->getInvolvedProgramsTest('test1');
|
||||
|
||||
r(count($adminPrograms)) && p() && e('2'); // 获取admin参与的项目集数量
|
||||
r(count($test2Programs)) && p() && e('1'); // 获取test2参与的项目集数量
|
||||
r($adminPrograms) && p('10') && e('10'); // 获取admin参与的项目集ID
|
||||
r($test2Programs) && p('1') && e('1'); // 获取test2参与的项目集ID
|
||||
r(count($test1Programs)) && p() && e('1'); // 获取test1参与的项目集数量
|
||||
r($adminPrograms) && p('1') && e('1'); // 获取admin参与的项目集ID
|
||||
r($test1Programs) && p('2') && e('2'); // 获取test1参与的项目集ID
|
||||
|
||||
@@ -1,8 +1,21 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
su('admin');
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1-3');
|
||||
$program->name->range('1-3')->prefix('项目集');
|
||||
$program->type->range('program');
|
||||
$program->path->range('1-3')->prefix(',')->postfix(',');
|
||||
$program->grade->range('1');
|
||||
$program->status->range('wait');
|
||||
$program->openedBy->range('admin,test1');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(3);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModel::getKanbanGroup();
|
||||
@@ -10,16 +23,15 @@ cid=1
|
||||
pid=1
|
||||
|
||||
查看当前用户负责的项目集看板数量 >> 2
|
||||
查看当前用户其他的项目集看板数量 >> 8
|
||||
查看当前用户其他的项目集看板数量 >> 1
|
||||
查看当前用户其他的项目集看板详情 >> 项目集2
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
$programTester = new programTest();
|
||||
|
||||
$kanbanGroup = $tester->program->getKanbanGroup();
|
||||
$kanbanGroup = $programTester->getKanbanGroupTest();
|
||||
|
||||
r(count($kanbanGroup['my'])) && p('') && e('2'); //查看当前用户负责的项目集看板数量
|
||||
r(count($kanbanGroup['others'])) && p('') && e('8'); //查看当前用户其他的项目集看板数量
|
||||
r(count($kanbanGroup['others'])) && p('') && e('1'); //查看当前用户其他的项目集看板数量
|
||||
r($kanbanGroup['others']) && p('0:name') && e('项目集2'); //查看当前用户其他的项目集看板详情
|
||||
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModel::getLink();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
项目集页面跳转项目集项目列表 >> project
|
||||
非项目集页面跳转项目集列表 >> all
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
$link1 = $tester->program->getLink('program', 'project', 1);
|
||||
$result = '';
|
||||
if(strpos($link1, 'project')) $result = 'project';
|
||||
r($result) && p() && e('project'); // 项目集页面跳转项目集项目列表
|
||||
|
||||
$link2 = $tester->program->getLink('program', 'project', 1, '', 'product');
|
||||
if(strpos($link2, 'all')) $result = 'all';
|
||||
r($result) && p() && e('all'); // 非项目集页面跳转项目集列表
|
||||
@@ -4,45 +4,57 @@ include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
su('admin');
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1-20');
|
||||
$program->name->range('1-20')->prefix('项目集');
|
||||
$program->type->range('program');
|
||||
$program->path->range('1-20')->prefix(',')->postfix(',');
|
||||
$program->grade->range('1');
|
||||
$program->status->range('wait,doing,suspended,closed');
|
||||
$program->openedBy->range('admin,test1');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(20);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModel::getList();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
查看所有项目和项目集的个数 >> 120
|
||||
查看所有项目和项目集的个数 >> 20
|
||||
查看分页后项目集和项目的个数 >> 10
|
||||
查看所有'closed'的项目和项目集的个数 >> 11
|
||||
查看所有'suspended'的项目和项目集的个数 >> 11
|
||||
查看所有'closed'的项目和项目集的个数 >> 5
|
||||
查看所有'suspended'的项目和项目集的个数 >> 5
|
||||
按照项目和项目集名称倒序获取第一个ID >> 9
|
||||
按照ID正序获取项目和项目集列表第一个ID >> 1
|
||||
获取顶级项目集个数 >> 30
|
||||
获取顶级项目集个数 >> 20
|
||||
获取分页后顶级项目集个数 >> 10
|
||||
获取分页后顶级项目集个数 >> 120
|
||||
获取所有项目集个数 >> 20
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$program = new programTest();
|
||||
$programTester = new programTest();
|
||||
$tester->app->loadClass('pager', $static = true);
|
||||
$pager = new pager(0, 10, 1);
|
||||
|
||||
$allPorgrams = $program->getList('all');
|
||||
$pagerPrograms = $program->getList('all', 'id_asc', $pager);
|
||||
$closedPrograms = $program->getList('closed');
|
||||
$suspendedPrograms = $program->getList('closed');
|
||||
$namedescPrograms = $program->getList('all', 'name_desc');
|
||||
$idascPrograms = $program->getList('all', 'id_asc');
|
||||
$topPrograms = $program->getList('all', 'id_asc', null, 'top');
|
||||
$topPagePrograms = $program->getList('all', 'id_asc', $pager, 'top');
|
||||
$childPrograms = $program->getList('all', 'id_asc', null, 'child', $topPrograms);
|
||||
$allPorgrams = $programTester->getListTest('all');
|
||||
$pagerPrograms = $programTester->getListTest('all', 'id_asc', $pager);
|
||||
$closedPrograms = $programTester->getListTest('closed');
|
||||
$suspendedPrograms = $programTester->getListTest('closed');
|
||||
$namedescPrograms = $programTester->getListTest('all', 'name_desc');
|
||||
$idascPrograms = $programTester->getListTest('all', 'id_asc');
|
||||
$topPrograms = $programTester->getListTest('all', 'id_asc', null, 'top');
|
||||
$topPagePrograms = $programTester->getListTest('all', 'id_asc', $pager, 'top');
|
||||
$childPrograms = $programTester->getListTest('all', 'id_asc', null, 'child', $topPrograms);
|
||||
|
||||
r(count($allPorgrams)) && p() && e('120'); // 查看所有项目和项目集的个数
|
||||
r(count($allPorgrams)) && p() && e('20'); // 查看所有项目和项目集的个数
|
||||
r(count($pagerPrograms)) && p() && e('10'); // 查看分页后项目集和项目的个数
|
||||
r(count($closedPrograms)) && p() && e('11'); // 查看所有'closed'的项目和项目集的个数
|
||||
r(count($suspendedPrograms)) && p() && e('11'); // 查看所有'suspended'的项目和项目集的个数
|
||||
r(count($closedPrograms)) && p() && e('5'); // 查看所有'closed'的项目和项目集的个数
|
||||
r(count($suspendedPrograms)) && p() && e('5'); // 查看所有'suspended'的项目和项目集的个数
|
||||
r(key($namedescPrograms)) && p() && e('9'); // 按照项目和项目集名称倒序获取第一个ID
|
||||
r(key($idascPrograms)) && p() && e('1'); // 按照ID正序获取项目和项目集列表第一个ID
|
||||
r(count($topPrograms)) && p() && e('30'); // 获取顶级项目集个数
|
||||
r(count($topPrograms)) && p() && e('20'); // 获取顶级项目集个数
|
||||
r(count($topPagePrograms)) && p() && e('10'); // 获取分页后顶级项目集个数
|
||||
r(count($childPrograms)) && p() && e('120'); // 获取分页后顶级项目集个数
|
||||
r(count($childPrograms)) && p() && e('20'); // 获取所有项目集个数
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
zdTable('user')->gen(5);
|
||||
su('admin');
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1-20');
|
||||
$program->name->range('1-20')->prefix('项目集');
|
||||
$program->type->range('program');
|
||||
$program->path->range('1-20')->prefix(',')->postfix(',');
|
||||
$program->grade->range('1');
|
||||
$program->status->range('wait,doing,suspended,closed');
|
||||
$program->openedBy->range('admin,user1');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(20);
|
||||
|
||||
$query = zdTable('userquery');
|
||||
$query->id->range('1');
|
||||
$query->account->range('admin');
|
||||
$query->module->range('program');
|
||||
$query->title->range('搜索条件1');
|
||||
$query->form->range('`a:41:{s:9:"fieldname";s:0:"";s:11:"fieldstatus";s:0:"";s:9:"fielddesc";s:0:"";s:7:"fieldPM";s:0:"";s:15:"fieldopenedDate";s:0:"";s:10:"fieldbegin";s:0:"";s:8:"fieldend";s:0:"";s:13:"fieldopenedBy";s:0:"";s:19:"fieldlastEditedDate";s:0:"";s:14:"fieldrealBegan";s:0:"";s:12:"fieldrealEnd";s:0:"";s:15:"fieldclosedDate";s:0:"";s:6:"andOr1";s:3:"AND";s:6:"field1";s:4:"name";s:9:"operator1";s:7:"include";s:6:"value1";s:9:"项目集";s:6:"andOr2";s:3:"and";s:6:"field2";s:6:"status";s:9:"operator2";s:1:"=";s:6:"value2";s:0:"";s:6:"andOr3";s:3:"and";s:6:"field3";s:4:"desc";s:9:"operator3";s:7:"include";s:6:"value3";s:0:"";s:10:"groupAndOr";s:3:"and";s:6:"andOr4";s:3:"AND";s:6:"field4";s:6:"status";s:9:"operator4";s:1:"=";s:6:"value4";s:4:"wait";s:6:"andOr5";s:3:"and";s:6:"field5";s:10:"openedDate";s:9:"operator5";s:1:"=";s:6:"value5";s:0:"";s:6:"andOr6";s:3:"and";s:6:"field6";s:5:"begin";s:9:"operator6";s:1:"=";s:6:"value6";s:0:"";s:6:"module";s:7:"program";s:9:"actionURL";s:56:"/program-browse-bySearch-order_asc-0-10-1-myQueryID.html";s:10:"groupItems";s:1:"3";s:8:"formType";s:4:"lite";}`');
|
||||
$query->sql->range("`(( 1 AND `name` LIKE '%项目集%' ) AND ( 1 AND `status` = 'wait' ))`");
|
||||
$query->gen(1);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModel::getListBySearch();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
按照id倒序查看,所有名称包含项目集并且未开始的第一个项目集 >> 项目集17
|
||||
按照id正序查看,所有名称包含项目集并且进行中的第一个项目集 >> 项目集1
|
||||
按照id正序查看,符合搜索条件id=1,的第一个项目集 >> 项目集1
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$programTester = new programTest();
|
||||
|
||||
$sql1 = "(( 1 AND `name` LIKE '%项目集%' ) AND ( 1 AND `status` = 'wait' ))";
|
||||
$sql2 = "(( 1 AND `name` LIKE '%项目集%' ) AND ( 1 AND `status` = 'doing' ))";
|
||||
|
||||
r($programTester->getListBySearchTest('id_desc', 0, $sql)) && p('17:name') && e('项目集17'); // 按照id倒序查看,所有名称包含项目集并且未开始的第一个项目集
|
||||
r($programTester->getListBySearchTest('id_asc', 0, $sql)) && p('1:name') && e('项目集1'); // 按照id正序查看,所有名称包含项目集并且进行中的第一个项目集
|
||||
r($programTester->getListBySearchTest('id_asc', 1)) && p('1:name') && e('项目集1'); // 按照id正序查看,符合搜索条件id=1,的第一个项目集
|
||||
@@ -1,6 +1,21 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
su('admin');
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1-20');
|
||||
$program->name->range('1-20')->prefix('项目集');
|
||||
$program->type->range('program');
|
||||
$program->path->range('1-20')->prefix(',')->postfix(',');
|
||||
$program->grade->range('1');
|
||||
$program->status->range('wait,doing,suspended,closed');
|
||||
$program->openedBy->range('admin,test1');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->deleted->range('0{15},1{5}');
|
||||
$program->gen(20);
|
||||
|
||||
/**
|
||||
|
||||
@@ -8,18 +23,18 @@ title=测试 programModel::getPairs();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
获取项目集个数 >> 6
|
||||
获取项目集个数 >> 10
|
||||
获取项目集id为9的名称 >> 项目集9
|
||||
获取项目集个数 >> 15
|
||||
获取所有项目集个数 >> 15
|
||||
获取按照id正序的第一个项目集名称 >> 项目集1
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
$programs1 = $tester->program->getPairs();
|
||||
$programs2 = $tester->program->getPairs('true');
|
||||
$programTester = new programTest();
|
||||
|
||||
r(count($programs1)) && p() && e('6'); // 获取项目集个数
|
||||
r(count($programs2)) && p() && e('10'); // 获取项目集个数
|
||||
r($programs1) && p('9') && e('项目集9'); // 获取项目集id为9的名称
|
||||
r($programs2) && p('11') && e(''); // 获取不存在的项目集
|
||||
$programs1 = $programTester->getPairsTest();
|
||||
$programs2 = $programTester->getPairsTest('true');
|
||||
$programs3 = $programTester->getPairsTest('false', 'id_asc');
|
||||
|
||||
r(count($programs1)) && p() && e('15'); // 获取项目集个数
|
||||
r(count($programs2)) && p() && e('15'); // 获取所有项目集个数
|
||||
r(current($programs3)) && p('1') && e('项目集1'); // 获取按照id正序的第一个项目集名称
|
||||
|
||||
@@ -2,6 +2,19 @@
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
su('admin');
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1-10');
|
||||
$program->name->range('1-10')->prefix('项目集');
|
||||
$program->type->range('program');
|
||||
$program->path->range('1-10')->prefix(',')->postfix(',');
|
||||
$program->grade->range('1');
|
||||
$program->status->range('wait,doing,suspended,closed');
|
||||
$program->openedBy->range('admin,test1');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(10);
|
||||
|
||||
/**
|
||||
|
||||
@@ -13,20 +26,19 @@ pid=1
|
||||
通过字符串'1,2,3'获取项目集名称 >> 项目集1,项目集2,项目集3
|
||||
通过数组array(1)获取项目集名称 >> 项目集1
|
||||
通过数组array(1,2,3)获取项目集名称 >> 项目集1,项目集2,项目集3
|
||||
通过id为空获取项目集名称 >> Not Found
|
||||
通过id=0获取项目集名称 >> Not Found
|
||||
通过id=11获取项目集名称 >> Not Found
|
||||
通过id为空获取项目集名称 >> 0
|
||||
通过id=0获取项目集名称 >> 0
|
||||
通过id=11获取项目集名称 >> 0
|
||||
|
||||
*/
|
||||
|
||||
$program = new programTest();
|
||||
|
||||
$programTester = new programTest();
|
||||
$programIdList = array('1', '1,2,3', array(1), array(1,2,3), '', '0', '11');
|
||||
|
||||
r($program->getPairsByList($programIdList[0])) && p('1') && e('项目集1'); // 通过字符串'1'获取项目集名称
|
||||
r($program->getPairsByList($programIdList[1])) && p('1,2,3') && e('项目集1,项目集2,项目集3'); // 通过字符串'1,2,3'获取项目集名称
|
||||
r($program->getPairsByList($programIdList[2])) && p('1') && e('项目集1'); // 通过数组array(1)获取项目集名称
|
||||
r($program->getPairsByList($programIdList[3])) && p('1,2,3') && e('项目集1,项目集2,项目集3'); // 通过数组array(1,2,3)获取项目集名称
|
||||
r($program->getPairsByList($programIdList[4])) && p('message') && e('Not Found'); // 通过id为空获取项目集名称
|
||||
r($program->getPairsByList($programIdList[5])) && p('message') && e('Not Found'); // 通过id=0获取项目集名称
|
||||
r($program->getPairsByList($programIdList[6])) && p('message') && e('Not Found'); // 通过id=11获取项目集名称
|
||||
r($programTester->getPairsByListTest($programIdList[0])) && p('1') && e('项目集1'); // 通过字符串'1'获取项目集名称
|
||||
r($programTester->getPairsByListTest($programIdList[1])) && p('1,2,3') && e('项目集1,项目集2,项目集3'); // 通过字符串'1,2,3'获取项目集名称
|
||||
r($programTester->getPairsByListTest($programIdList[2])) && p('1') && e('项目集1'); // 通过数组array(1)获取项目集名称
|
||||
r($programTester->getPairsByListTest($programIdList[3])) && p('1,2,3') && e('项目集1,项目集2,项目集3'); // 通过数组array(1,2,3)获取项目集名称
|
||||
r($programTester->getPairsByListTest($programIdList[4])) && p('') && e('0'); // 通过id为空获取项目集名称
|
||||
r($programTester->getPairsByListTest($programIdList[5])) && p('') && e('0'); // 通过id=0获取项目集名称
|
||||
r($programTester->getPairsByListTest($programIdList[6])) && p('') && e('0'); // 通过id=11获取项目集名称
|
||||
|
||||
@@ -2,6 +2,25 @@
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
su('admin');
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1-10');
|
||||
$program->name->setFields(array(
|
||||
array('field' => 'name1', 'range' => '项目集{5},项目{5}'),
|
||||
array('field' => 'name2', 'range' => '1-5'),
|
||||
));
|
||||
$program->type->range('program{5},project{5}');
|
||||
$program->path->range('1-5,`1,6`,`2,7`,`3,8`,`4,9`,`5,10`')->prefix(',')->postfix(',');
|
||||
$program->grade->range('1{5},2{5}');
|
||||
$program->parent->range('0{5},1-5');
|
||||
$program->status->range('wait,doing,suspended,closed');
|
||||
$program->model->range('[]{5},scrum{2},waterfall{2},kanban');
|
||||
$program->openedBy->range('admin,test1');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->deleted->range('0{15},1{5}');
|
||||
$program->gen(10);
|
||||
|
||||
/**
|
||||
|
||||
@@ -9,22 +28,22 @@ title=测试 programModel::getParentPairs();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
获取所有父项目集的数量 >> 7
|
||||
获取所有父项目集的数量 >> 5
|
||||
获取瀑布类型父项目集的数量 >> 1
|
||||
获取ID为1的父项目集的名称 >> /项目集1
|
||||
获取父项目集的名称显示根目录 >> /
|
||||
获取父项目集的名称显示根目录 >> 0
|
||||
获取ID为1的父项目集的名称不显示根目录 >> 项目集1
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
$program1 = $tester->program->getParentPairs();
|
||||
$program2 = $tester->program->getParentPairs('waterfall');
|
||||
$program3 = $tester->program->getParentPairs('', 'noclosed', false);
|
||||
$programTester = new programTest();
|
||||
|
||||
r(count($program1)) && p() && e('7'); // 获取所有父项目集的数量
|
||||
$program1 = $programTester->getParentPairsTest();
|
||||
$program2 = $programTester->getParentPairsTest('waterfall');
|
||||
$program3 = $programTester->getParentPairsTest('', 'noclosed', false);
|
||||
|
||||
r(count($program1)) && p() && e('5'); // 获取所有父项目集的数量
|
||||
r(count($program2)) && p() && e('1'); // 获取瀑布类型父项目集的数量
|
||||
r($program1) && p('1') && e('/项目集1'); // 获取ID为1的父项目集的名称
|
||||
r($program1) && p('0') && e('/'); // 获取父项目集的名称显示根目录
|
||||
r(key($program1)) && p('0') && e('0'); // 获取父项目集的名称显示根目录
|
||||
r(array_shift($program3)) && p() && e('项目集1'); // 获取ID为1的父项目集的名称不显示根目录
|
||||
|
||||
@@ -1,8 +1,25 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
su('admin');
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1-10');
|
||||
$program->name->range('1-10')->prefix('项目集');
|
||||
$program->type->range('program');
|
||||
$program->path->range('1-5,`1,6`,`2,7`,`3,8`,`4,9`,`5,10`')->prefix(',')->postfix(',');
|
||||
$program->grade->range('1{5},2{5}');
|
||||
$program->parent->range('0{5},1-5');
|
||||
$program->status->range('wait,doing,suspended,closed');
|
||||
$program->openedBy->range('admin,test1');
|
||||
$program->pm->range('admin,test1');
|
||||
$program->acl->range('private');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->deleted->range('0{15},1{5}');
|
||||
$program->gen(10);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModel::getParentPM();
|
||||
@@ -10,17 +27,16 @@ cid=1
|
||||
pid=1
|
||||
|
||||
获取父项目集的负责人数量 >> 2
|
||||
获取父项目集的负责人account >> pm2
|
||||
获取父项目集的负责人account >> pm3
|
||||
获取父项目集的负责人account >> admin
|
||||
获取父项目集的负责人account >> test1
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
$programTester = new programTest();
|
||||
|
||||
$programIdList = array(11, 12, 13);
|
||||
$parentPM = $tester->program->getParentPM($programIdList);
|
||||
$programIdList = array(5, 6, 7);
|
||||
$parentPM = $programTester->getParentPMTest($programIdList);
|
||||
|
||||
r(count($parentPM)) && p() && e('2'); // 获取父项目集的负责人数量
|
||||
r($parentPM) && p('12:pm2') && e('pm2'); // 获取父项目集的负责人account
|
||||
r($parentPM) && p('13:pm3') && e('pm3'); // 获取父项目集的负责人account
|
||||
r($parentPM) && p('6:admin') && e('admin'); // 获取父项目集的负责人account
|
||||
r($parentPM) && p('7:test1') && e('test1'); // 获取父项目集的负责人account
|
||||
|
||||
@@ -1,6 +1,29 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
su('admin');
|
||||
|
||||
/* Create program data. */
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1');
|
||||
$program->name->range('项目集1');
|
||||
$program->type->range('program');
|
||||
$program->grade->range('1');
|
||||
$program->path->range('1')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(1);
|
||||
|
||||
/* Create product data. */
|
||||
$product = zdTable('product');
|
||||
$product->id->range('1-10');
|
||||
$product->name->range('1-10')->prefix('产品');
|
||||
$product->program->range('1');
|
||||
$product->type->range('normal');
|
||||
$product->status->range('normal,closed');
|
||||
$product->vision->range('rnd');
|
||||
$product->gen(10);
|
||||
|
||||
/**
|
||||
|
||||
@@ -8,21 +31,19 @@ title=测试 programModel::getProductPairs();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
获取项目集1下的所有产品数量 >> 6
|
||||
根据项目集ID获取关联产品名字 >> 已关闭的正常产品24
|
||||
获取项目集1下的未关闭的产品数量 >> 4
|
||||
根据项目或项目集ID获取关联产品详情 >> 已关闭的正常产品24
|
||||
获取项目集1下的所有产品数量 >> 10
|
||||
根据项目集ID获取关联产品名字 >> 产品2
|
||||
获取项目集1下的未关闭的产品数量 >> 5
|
||||
根据项目或项目集ID获取关联产品详情 >> 产品3
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
$programTester = new programTest();
|
||||
|
||||
$products1 = $tester->program->getProductPairs(1, 'assign', 'all');
|
||||
$products2 = $tester->program->getProductPairs(1, 'assign', 'noclosed');
|
||||
$products1 = $programTester->getProductPairsTest(1, 'assign', 'all');
|
||||
$products2 = $programTester->getProductPairsTest(1, 'assign', 'noclosed');
|
||||
|
||||
r(count($products1)) && p() && e('6'); //获取项目集1下的所有产品数量
|
||||
r($products1) && p('24') && e('已关闭的正常产品24'); //根据项目集ID获取关联产品名字
|
||||
|
||||
r(count($products2)) && p() && e('4'); //获取项目集1下的未关闭的产品数量
|
||||
r($products2) && p('24') && e('已关闭的正常产品24'); //根据项目或项目集ID获取关联产品详情
|
||||
r(count($products1)) && p() && e('10'); // 获取项目集1下的所有产品数量
|
||||
r($products1) && p('2') && e('产品2'); // 根据项目集ID获取关联产品名字
|
||||
r(count($products2)) && p() && e('5'); // 获取项目集1下的未关闭的产品数量
|
||||
r($products2) && p('3') && e('产品3'); // 根据项目或项目集ID获取关联产品详情
|
||||
|
||||
@@ -1,24 +1,51 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
su('admin');
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1-8');
|
||||
$program->name->setFields(array(
|
||||
array('field' => 'name1', 'range' => '项目集{2},项目{3},迭代{3}'),
|
||||
array('field' => 'name2', 'range' => '1-8')
|
||||
));
|
||||
$program->type->range('program{2},project{3},sprint{3}');
|
||||
$program->status->range('doing');
|
||||
$program->parent->range('0,0,1,1,2,3,4,5');
|
||||
$program->grade->range('1{2},2{3},1{3}');
|
||||
$program->project->range('0{5},3-5');
|
||||
$program->path->range('1,2,`1,3`,`1,4`,`2,5`,`3,6`,`4,7`,`5,8`')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20230212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(8);
|
||||
|
||||
$task = zdTable('task');
|
||||
$task->name->prefix('任务')->range('1-3');
|
||||
$task->project->range('3-5');
|
||||
$task->execution->range('6-8');
|
||||
$task->estimate->range('6-8');
|
||||
$task->consumed->range('1,3,2');
|
||||
$task->left->range('5,4,6');
|
||||
$task->status->range('doing');
|
||||
$task->assignedTo->range('admin');
|
||||
$task->gen(3);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModee::getProgressList();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
获取项目和项目集的个数 >> 120
|
||||
获取id=1的项目的进度 >> 41
|
||||
获取id=11的项目集的进度 >> 45
|
||||
获取项目和项目集的个数 >> 5
|
||||
获取id=2的项目的进度 >> 25
|
||||
获取id=4的项目集的进度 >> 43
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
$progressList = $tester->program->getProgressList();
|
||||
$programTester = new programTest();
|
||||
$progressList = $programTester->getProgressListTest();
|
||||
|
||||
r(count($progressList)) && p() && e('120'); // 获取项目和项目集的个数
|
||||
r($progressList) && p('1') && e('41'); // 获取id=1的项目的进度
|
||||
r($progressList) && p('11') && e('45'); // 获取id=11的项目集的进度
|
||||
r(count($progressList)) && p() && e('5'); // 获取项目和项目集的个数
|
||||
r($progressList) && p('2') && e('25'); // 获取id=2的项目的进度
|
||||
r($progressList) && p('4') && e('43'); // 获取id=4的项目集的进度
|
||||
|
||||
@@ -1,6 +1,33 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1-5');
|
||||
$program->name->range('项目集1,项目集2,项目1,项目2,项目3');
|
||||
$program->type->range('program{2},project{3}');
|
||||
$program->status->range('doing{3},closed,doing');
|
||||
$program->parent->range('0,0,1,1,2');
|
||||
$program->grade->range('1{2},2{3}');
|
||||
$program->path->range('1,2,`1,3`,`1,4`,`2,5`')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(5);
|
||||
|
||||
$team = zdTable('team');
|
||||
$team->id->range('1-5');
|
||||
$team->root->range('3-5');
|
||||
$team->type->range('project');
|
||||
$team->account->range('admin');
|
||||
$team->account->setFields(array(
|
||||
array('field' => 'account1', 'range' => 'admin,user{4}'),
|
||||
array('field' => 'account2', 'range' => '[],1-4'),
|
||||
));
|
||||
$team->gen(5);
|
||||
|
||||
zdTable('user')->gen(5);
|
||||
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
@@ -9,28 +36,27 @@ title=测试 programModel::getProjectList();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
获取所有项目列表数量 >> 110
|
||||
获取未完成项目列表数量 >> 88
|
||||
带项目集名称的项目列表数量 >> 88
|
||||
获取所有项目列表数量 >> 3
|
||||
获取未完成项目列表数量 >> 2
|
||||
带项目集名称的项目列表数量 >> 2
|
||||
获取我参与的项目列表数量 >> 1
|
||||
不带项目集名称的项目名称 >> 项目2
|
||||
带项目集名称的项目名称 >> 项目集2/项目2
|
||||
带项目集名称的项目名称 >> 项目集2/项目3
|
||||
我参与的项目的名称 >> 项目集1/项目1
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
$programTester = new programTest();
|
||||
|
||||
$allProjects = $tester->program->getProjectList(0);
|
||||
$undoneProjects = $tester->program->getProjectList(0, 'undone');
|
||||
$withProgramProjects = $tester->program->getProjectList(0, 'undone', 0, 'id_desc', null, 1);
|
||||
$involvedProjects = $tester->program->getProjectList(0, 'undone', 0, 'id_desc', null, 1, true);
|
||||
$allProjects = $programTester->getProjectListTest(0);
|
||||
$undoneProjects = $programTester->getProjectListTest(0, 'undone');
|
||||
$withProgramProjects = $programTester->getProjectListTest(0, 'undone', 0, 'id_desc', null, 1);
|
||||
$involvedProjects = $programTester->getProjectListTest(0, 'undone', 0, 'id_desc', null, 1, true);
|
||||
|
||||
r(count($allProjects)) && p() && e('110'); // 获取所有项目列表数量
|
||||
r(count($undoneProjects)) && p() && e('88'); // 获取未完成项目列表数量
|
||||
r(count($withProgramProjects)) && p() && e('88'); // 带项目集名称的项目列表数量
|
||||
r(count($allProjects)) && p() && e('3'); // 获取所有项目列表数量
|
||||
r(count($undoneProjects)) && p() && e('2'); // 获取未完成项目列表数量
|
||||
r(count($withProgramProjects)) && p() && e('2'); // 带项目集名称的项目列表数量
|
||||
r(count($involvedProjects)) && p() && e('1'); // 获取我参与的项目列表数量
|
||||
r($allProjects) && p('12:name') && e('项目2'); // 不带项目集名称的项目名称
|
||||
r($withProgramProjects) && p('12:name') && e('项目集2/项目2'); // 带项目集名称的项目名称
|
||||
r($involvedProjects) && p('11:name') && e('项目集1/项目1'); // 我参与的项目的名称
|
||||
r($allProjects) && p('4:name') && e('项目2'); // 不带项目集名称的项目名称
|
||||
r($withProgramProjects) && p('5:name') && e('项目集2/项目3'); // 带项目集名称的项目名称
|
||||
r($involvedProjects) && p('3:name') && e('项目集1/项目1'); // 我参与的项目的名称
|
||||
|
||||
@@ -1,27 +1,40 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
su('admin');
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1-5');
|
||||
$program->name->range('项目集1,项目集2,项目1,项目2,项目3');
|
||||
$program->type->range('program{2},project{3}');
|
||||
$program->status->range('doing{3},closed,doing');
|
||||
$program->parent->range('0,0,1,1,2');
|
||||
$program->grade->range('1{2},2{3}');
|
||||
$program->path->range('1,2,`1,3`,`1,4`,`2,5`')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(5);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModel::getProjectStats();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
查看当前项目集下所有未完成的项目的个数 >> 7
|
||||
查看当前项目集下所有未完成的项目的个数 >> 7
|
||||
查看当前项目集下所有未完成的项目按照id倒序排的第一个项目集信息 >> 91,项目81
|
||||
查看当前项目集下所有未完成的项目按照id正序排的第一个项目集信息 >> 12,项目2
|
||||
查看当前项目集下所有未完成的项目的个数 >> 1
|
||||
查看当前项目集下所有未完成的项目的个数 >> 1
|
||||
查看当前项目集下所有未完成的项目按照id倒序排的第一个项目集信息 >> 3,项目1
|
||||
查看当前项目集下所有未完成的项目按照id正序排的第一个项目集信息 >> 5,项目3
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
$stats1 = $tester->program->getProjectStats(1);
|
||||
$stats2 = $tester->program->getProjectStats(2, 'undone', 0, 'id_asc', null);
|
||||
$programTester = new programTest();
|
||||
|
||||
r(count($stats1)) && p() && e('7'); // 查看当前项目集下所有未完成的项目的个数
|
||||
r(count($stats2)) && p() && e('7'); // 查看当前项目集下所有未完成的项目的个数
|
||||
r(current($stats1)) && p('id,name') && e('91,项目81'); // 查看当前项目集下所有未完成的项目按照id倒序排的第一个项目集信息
|
||||
r(current($stats2)) && p('id,name') && e('12,项目2'); // 查看当前项目集下所有未完成的项目按照id正序排的第一个项目集信息
|
||||
$stats1 = $programTester->getProjectStatsTest(1);
|
||||
$stats2 = $programTester->getProjectStatsTest(2, 'undone', 0, 'id_asc', null);
|
||||
|
||||
r(count($stats1)) && p() && e('1'); // 查看当前项目集下所有未完成的项目的个数
|
||||
r(count($stats2)) && p() && e('1'); // 查看当前项目集下所有未完成的项目的个数
|
||||
r(current($stats1)) && p('id,name') && e('3,项目1'); // 查看当前项目集下所有未完成的项目按照id倒序排的第一个项目集信息
|
||||
r(current($stats2)) && p('id,name') && e('5,项目3'); // 查看当前项目集下所有未完成的项目按照id正序排的第一个项目集信息
|
||||
|
||||
@@ -1,27 +1,46 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
su('admin');
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1,2');
|
||||
$program->name->range('父项目集1,父项目集2');
|
||||
$program->type->range('program');
|
||||
$program->budget->range('900000,899900');
|
||||
$program->path->range('1,2')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(2);
|
||||
|
||||
zdTable('user')->gen(5);
|
||||
|
||||
$stakeholder = zdTable('stakeholder');
|
||||
$stakeholder->objectID->range('1,2');
|
||||
$stakeholder->objectType->range('program');
|
||||
$stakeholder->type->range('inside');
|
||||
$stakeholder->user->range('admin,user1,user2');
|
||||
$stakeholder->gen(3);
|
||||
|
||||
su('admin');
|
||||
/**
|
||||
|
||||
title=测试 programModel::getStakeholders();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
获取干系人数量 >> 3
|
||||
获取干系人数量 >> 3
|
||||
id倒序排,获取第一个干系人真实姓名 >> 测试17
|
||||
id正序排,获取第一个干系人真实姓名 >> 测试19
|
||||
获取干系人数量 >> 2
|
||||
获取干系人数量 >> 1
|
||||
id倒序排,获取第一个干系人真实姓名 >> 用户2
|
||||
id正序排,获取第一个干系人真实姓名 >> 用户1
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
$stakeholders1 = $tester->program->getStakeholders(2, 'id_desc');
|
||||
$stakeholders2 = $tester->program->getStakeholders(2, 'id_asc');
|
||||
$programTester = new programTest();
|
||||
$stakeholders1 = $programTester->getStakeholdersTest(1, 'id_desc');
|
||||
$stakeholders2 = $programTester->getStakeholdersTest(2, 'id_asc');
|
||||
|
||||
r(count($stakeholders1)) && p() && e('3'); // 获取干系人数量
|
||||
r(count($stakeholders2)) && p() && e('3'); // 获取干系人数量
|
||||
r($stakeholders1) && p('0:realname') && e('测试17'); // id倒序排,获取第一个干系人真实姓名
|
||||
r($stakeholders2) && p('0:realname') && e('测试19'); // id正序排,获取第一个干系人真实姓名
|
||||
r(count($stakeholders1)) && p() && e('2'); // 获取干系人数量
|
||||
r(count($stakeholders2)) && p() && e('1'); // 获取干系人数量
|
||||
r($stakeholders1) && p('0:realname') && e('用户2'); // id倒序排,获取第一个干系人真实姓名
|
||||
r($stakeholders2) && p('0:realname') && e('用户1'); // id正序排,获取第一个干系人真实姓名
|
||||
|
||||
@@ -1,6 +1,27 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1,2');
|
||||
$program->name->range('父项目集1,父项目集2');
|
||||
$program->type->range('program');
|
||||
$program->budget->range('900000,899900');
|
||||
$program->path->range('1,2')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(2);
|
||||
|
||||
zdTable('user')->gen(5);
|
||||
|
||||
$stakeholder = zdTable('stakeholder');
|
||||
$stakeholder->objectID->range('1,2');
|
||||
$stakeholder->objectType->range('program');
|
||||
$stakeholder->type->range('inside');
|
||||
$stakeholder->user->range('admin,user1,user2');
|
||||
$stakeholder->gen(3);
|
||||
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
@@ -9,25 +30,19 @@ title=测试 programModel::getStakeholdersByPrograms();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
获取项目集2的干系人名单 >> user19
|
||||
获取项目集2的干系人名单 >> user18
|
||||
获取项目集2的干系人名单 >> user17
|
||||
获取项目集2和项目集3的干系人名单 >> user19
|
||||
获取项目集2和项目集3的干系人名单 >> user18
|
||||
获取项目集2和项目集3的干系人名单 >> user17
|
||||
获取项目集2的干系人个数 >> 3
|
||||
获取项目集2、3的干系人个数 >> 6
|
||||
获取项目集1的干系人名单 >> admin
|
||||
获取项目集2的干系人名单 >> user1
|
||||
获取项目集1和项目集2的干系人名单 >> admin
|
||||
获取项目集1的干系人个数 >> 2
|
||||
获取项目集1、2的干系人个数 >> 3
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
|
||||
r($tester->program->getStakeholdersByPrograms('2')) && p('0:account') && e('user19'); // 获取项目集2的干系人名单
|
||||
r($tester->program->getStakeholdersByPrograms('2')) && p('1:account') && e('user18'); // 获取项目集2的干系人名单
|
||||
r($tester->program->getStakeholdersByPrograms('2')) && p('2:account') && e('user17'); // 获取项目集2的干系人名单
|
||||
r($tester->program->getStakeholdersByPrograms('2,3')) && p('0:account') && e('user19'); // 获取项目集2和项目集3的干系人名单
|
||||
r($tester->program->getStakeholdersByPrograms('2,3')) && p('1:account') && e('user18'); // 获取项目集2和项目集3的干系人名单
|
||||
r($tester->program->getStakeholdersByPrograms('2,3')) && p('2:account') && e('user17'); // 获取项目集2和项目集3的干系人名单
|
||||
r(count($tester->program->getStakeholdersByPrograms('2'))) && p('') && e('3'); // 获取项目集2的干系人个数
|
||||
r(count($tester->program->getStakeholdersByPrograms('2,3'))) && p('') && e('6'); // 获取项目集2、3的干系人个数
|
||||
r($tester->program->getStakeholdersByPrograms('1')) && p('0:account') && e('admin'); // 获取项目集1的干系人名单
|
||||
r($tester->program->getStakeholdersByPrograms('2')) && p('0:account') && e('user1'); // 获取项目集2的干系人名单
|
||||
r($tester->program->getStakeholdersByPrograms('1,2')) && p('0:account') && e('admin'); // 获取项目集1和项目集2的干系人名单
|
||||
r(count($tester->program->getStakeholdersByPrograms('1'))) && p('') && e('2'); // 获取项目集1的干系人个数
|
||||
r(count($tester->program->getStakeholdersByPrograms('1,2'))) && p('') && e('3'); // 获取项目集1、2的干系人个数
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1,2');
|
||||
$program->name->range('父项目集1,父项目集2');
|
||||
$program->type->range('program');
|
||||
$program->budget->range('900000,899900');
|
||||
$program->path->range('1,2')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(2);
|
||||
|
||||
su('admin');
|
||||
/**
|
||||
|
||||
title=测试 programModel::saveState();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
查看传入空项目集返回的下拉菜单 >> 所有项目集
|
||||
查看传入id=1的项目集返回的下拉菜单 >> 父项目集1
|
||||
|
||||
*/
|
||||
|
||||
$programTester = new programTest();
|
||||
$switcher1 = $programTester->getSwitcherTest(0);
|
||||
$switcher2 = $programTester->getSwitcherTest(1);
|
||||
|
||||
r(strip_tags($switcher1)) && p() && e('所有项目集'); // 查看传入空项目集返回的下拉菜单
|
||||
r(strip_tags($switcher2)) && p() && e('父项目集1'); // 查看传入id=1的项目集返回的下拉菜单
|
||||
@@ -1,6 +1,33 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1-5');
|
||||
$program->name->range('项目集1,项目集2,项目1,项目2,项目3');
|
||||
$program->type->range('program{2},project{3}');
|
||||
$program->status->range('wait');
|
||||
$program->parent->range('0,0,1,1,2');
|
||||
$program->grade->range('1{2},2{3}');
|
||||
$program->path->range('1,2,`1,3`,`1,4`,`2,5`')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(5);
|
||||
|
||||
$team = zdTable('team');
|
||||
$team->id->range('1-5');
|
||||
$team->root->range('3-5');
|
||||
$team->type->range('project');
|
||||
$team->account->range('admin');
|
||||
$team->account->setFields(array(
|
||||
array('field' => 'account1', 'range' => 'admin,user{4}'),
|
||||
array('field' => 'account2', 'range' => '[],1-4'),
|
||||
));
|
||||
$team->gen(5);
|
||||
|
||||
zdTable('user')->gen(5);
|
||||
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
@@ -9,19 +36,18 @@ title=测试 programModel::getTeamMemberPairs();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
获取项目集1下所有团队成员数量 >> 19
|
||||
获取项目集2下所有团队成员数量 >> 19
|
||||
获取项目集1下所有团队成员真实姓名 >> P:产品经理92
|
||||
获取项目集2下所有团队成员真实姓名 >> U:测试83
|
||||
获取项目集1下所有团队成员数量 >> 5
|
||||
获取项目集2下所有团队成员数量 >> 2
|
||||
获取项目集1下所有团队成员真实姓名 >> A:admin
|
||||
获取项目集2下所有团队成员真实姓名 >> U:用户2
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
$teams1 = $tester->program->getTeamMemberPairs(1);
|
||||
$teams2 = $tester->program->getTeamMemberPairs(2);
|
||||
$programTester = new programTest();
|
||||
$teams1 = $programTester->getTeamMemberPairsTest(1);
|
||||
$teams2 = $programTester->getTeamMemberPairsTest(2);
|
||||
|
||||
r(count($teams1)) && p() && e('19'); // 获取项目集1下所有团队成员数量
|
||||
r(count($teams2)) && p() && e('19'); // 获取项目集2下所有团队成员数量
|
||||
r($teams1) && p('pm92') && e('P:产品经理92'); // 获取项目集1下所有团队成员真实姓名
|
||||
r($teams2) && p('user83') && e('U:测试83'); // 获取项目集2下所有团队成员真实姓名
|
||||
r(count($teams1)) && p() && e('5'); // 获取项目集1下所有团队成员数量
|
||||
r(count($teams2)) && p() && e('2'); // 获取项目集2下所有团队成员数量
|
||||
r($teams1) && p('admin') && e('A:admin'); // 获取项目集1下所有团队成员真实姓名
|
||||
r($teams2) && p('user2') && e('U:用户2'); // 获取项目集2下所有团队成员真实姓名
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModel::getTopByPath();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
获取顶级项目集的顶级id >> 1
|
||||
获取子项目集的顶级父项目集 >> 2
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
|
||||
r($tester->program->getTopByPath(',1,')) && p() && e('1'); // 获取顶级项目集的顶级id
|
||||
r($tester->program->getTopByPath(',2,3,')) && p() && e('2'); // 获取子项目集的顶级父项目集
|
||||
@@ -1,23 +1,35 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
su('admin');
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1-5');
|
||||
$program->name->range('项目集1,项目集2');
|
||||
$program->type->range('program');
|
||||
$program->grade->range('1,1,0{3}');
|
||||
$program->status->range('wait,closed,wait{3}');
|
||||
$program->parent->range('0,0,1,1,2');
|
||||
$program->path->range('1,2,`1,3`,`1,4`,`2,5`')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(5);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModel::getTopPairs();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
获取系统中所有顶级项目集数量 >> 10
|
||||
获取系统中所有未关闭的顶级项目集数量 >> 10
|
||||
获取系统中所有顶级项目集数量 >> 10
|
||||
获取系统中所有顶级项目集数量 >> 2
|
||||
获取系统中所有未关闭的顶级项目集数量 >> 1
|
||||
获取系统中所有顶级项目集数量 >> 2
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
$programTester = new programTest();
|
||||
|
||||
r(count($tester->program->getTopPairs())) && p() && e('10'); // 获取系统中所有顶级项目集数量
|
||||
r(count($tester->program->getTopPairs('', 'noclosed'))) && p() && e('10'); // 获取系统中所有未关闭的顶级项目集数量
|
||||
r(count($tester->program->getTopPairs('', '', true))) && p() && e('10'); // 获取系统中所有顶级项目集数量
|
||||
r(count($programTester->getTopPairsTest())) && p() && e('2'); // 获取系统中所有顶级项目集数量
|
||||
r(count($programTester->getTopPairsTest('', 'noclosed'))) && p() && e('1'); // 获取系统中所有未关闭的顶级项目集数量
|
||||
r(count($programTester->getTopPairsTest('', '', true))) && p() && e('2'); // 获取系统中所有顶级项目集数量
|
||||
|
||||
@@ -1,6 +1,19 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
su('admin');
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1-5');
|
||||
$program->name->range('项目集1,项目集2');
|
||||
$program->type->range('program');
|
||||
$program->status->range('wait');
|
||||
$program->parent->range('0,0,1,1,2');
|
||||
$program->path->range('1,2,`1,3`,`1,4`,`2,5`')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(5);
|
||||
|
||||
/**
|
||||
|
||||
@@ -8,12 +21,11 @@ title=测试 programModel::getTreeMenu();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
查看返回的字符个数 >> 789
|
||||
查看返回的字符个数 >> 项目集1项目集2
|
||||
|
||||
*/
|
||||
$programTester = new programTest();
|
||||
$programs1 = $programTester->getTreeMenuTest(1);
|
||||
$programs1 = preg_replace('/\s*/', '', strip_tags($programs1));
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
$programs1 = $tester->program->getTreeMenu(1);
|
||||
|
||||
r(strlen($programs1)) && p() && e('789'); // 查看返回的字符个数
|
||||
r($programs1) && p() && e('项目集1项目集2'); // 查看返回的字符个数
|
||||
|
||||
@@ -1,23 +1,32 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
su('admin');
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1-5');
|
||||
$program->name->range('项目集1,项目集2');
|
||||
$program->type->range('program');
|
||||
$program->status->range('wait');
|
||||
$program->parent->range('0,0,1,1,2');
|
||||
$program->path->range('1,2,`1,3`,`1,4`,`2,5`')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(5);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModel::hasUnfinished();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
获取项目集1下未完成的项目和项目集数量 >> 9
|
||||
获取项目集2下未完成的项目和项目集数量 >> 7
|
||||
获取项目集1下未完成的项目和项目集数量 >> 2
|
||||
获取项目集2下未完成的项目和项目集数量 >> 1
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
$program1 = $tester->program->getById(1);
|
||||
$program2 = $tester->program->getById(2);
|
||||
$programTester = new programTest();
|
||||
|
||||
r($tester->program->hasUnfinished($program1)) && p() && e('9'); // 获取项目集1下未完成的项目和项目集数量
|
||||
r($tester->program->hasUnfinished($program2)) && p() && e('7'); // 获取项目集2下未完成的项目和项目集数量
|
||||
r($programTester->hasUnfinishedTest(1)) && p() && e('2'); // 获取项目集1下未完成的项目和项目集数量
|
||||
r($programTester->hasUnfinishedTest(2)) && p() && e('1'); // 获取项目集2下未完成的项目和项目集数量
|
||||
|
||||
@@ -2,6 +2,18 @@
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
su('admin');
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1,2');
|
||||
$program->name->range('项目集1,项目集2');
|
||||
$program->type->range('program');
|
||||
$program->status->range('wait');
|
||||
$program->parent->range('0');
|
||||
$program->path->range('1,2')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(2);
|
||||
|
||||
/**
|
||||
|
||||
@@ -18,15 +30,14 @@ pid=1
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
$programTester = new programTest();
|
||||
|
||||
$program1 = $tester->program->getById(1);
|
||||
$program2 = $tester->program->getById(2);
|
||||
$program1 = $programTester->getByIDTest(1);
|
||||
$program2 = $programTester->getByIDTest(2);
|
||||
|
||||
r($tester->program->isClickable($program1, 'close')) && p('') && e('1'); // 传入项目集1,动作为closed,判断是否可点击
|
||||
r($tester->program->isClickable($program1, 'activate')) && p('') && e('0'); // 传入项目集1,动作为activate,判断是否可点击
|
||||
r($tester->program->isClickable($program1, 'suspend')) && p('') && e('1'); // 传入项目集1,动作为suspend,判断是否可点击
|
||||
r($tester->program->isClickable($program2, 'close')) && p('') && e('1'); // 传入项目集2,动作为closed,判断是否可点击
|
||||
r($tester->program->isClickable($program2, 'activate')) && p('') && e('0'); // 传入项目集2,动作为activate,判断是否可点击
|
||||
r($tester->program->isClickable($program2, 'suspend')) && p('') && e('1'); // 传入项目集2,动作为activate,判断是否可点击
|
||||
r($programTester->isClickableTest($program1, 'close')) && p('') && e('1'); // 传入项目集1,动作为closed,判断是否可点击
|
||||
r($programTester->isClickableTest($program1, 'activate')) && p('') && e('0'); // 传入项目集1,动作为activate,判断是否可点击
|
||||
r($programTester->isClickableTest($program1, 'suspend')) && p('') && e('1'); // 传入项目集1,动作为suspend,判断是否可点击
|
||||
r($programTester->isClickableTest($program2, 'close')) && p('') && e('1'); // 传入项目集2,动作为closed,判断是否可点击
|
||||
r($programTester->isClickableTest($program2, 'activate')) && p('') && e('0'); // 传入项目集2,动作为activate,判断是否可点击
|
||||
r($programTester->isClickableTest($program2, 'suspend')) && p('') && e('1'); // 传入项目集2,动作为activate,判断是否可点击
|
||||
|
||||
@@ -1,7 +1,19 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
su('admin');
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1-5');
|
||||
$program->name->range('项目集1,项目集2,项目1,项目2,项目3');
|
||||
$program->type->range('program{2},project{3}');
|
||||
$program->status->range('doing{3},closed,doing');
|
||||
$program->parent->range('0,0,1,1,2');
|
||||
$program->grade->range('1{2},2{3}');
|
||||
$program->path->range('1,2,`1,3`,`1,4`,`2,5`')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(5);
|
||||
|
||||
/**
|
||||
|
||||
@@ -9,10 +21,11 @@ title=测试 programModel::processNode();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
>> 1
|
||||
更新项目集层级和路径 >> 1
|
||||
|
||||
*/
|
||||
|
||||
$program = new Program('admin');
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
|
||||
r($program->processNode(1, 0, 1, 1)) && p() && e('1');
|
||||
r($tester->program->processNode(1, 2, 1, 1)) && p() && e('1'); // 更新项目集层级和路径
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1,2');
|
||||
$program->name->range('父项目集1,父项目集2');
|
||||
$program->type->range('program');
|
||||
$program->budget->range('900000,899900');
|
||||
$program->path->range('1,2')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(2);
|
||||
|
||||
su('admin');
|
||||
/**
|
||||
|
||||
title=测试 programModel::saveState();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
项目集存在且正常访问 >> html
|
||||
项目集不存在 >> 0
|
||||
项目集存在,但不在可以查看的项目集列表 >> 1
|
||||
项目集存在,且在可以查看的项目集列表 >> 2
|
||||
项目集不存在,且有可以查看的项目集列表 >> 2
|
||||
|
||||
*/
|
||||
|
||||
$programTester = new programTest();
|
||||
ob_start();
|
||||
$programTester->saveStateTest(1);
|
||||
$program1 = ob_get_clean();
|
||||
$program2 = $programTester->saveStateTest(0);
|
||||
$program3 = $programTester->saveStateTest(1, array(1 => ''));
|
||||
$program4 = $programTester->saveStateTest(3, array(2 => ''));
|
||||
$program5 = $programTester->saveStateTest(0, array(2 => ''));
|
||||
|
||||
r(substr($program1, 1, 4)) && p() && e('html'); // 项目集存在且正常访问
|
||||
r($program2) && p() && e('0'); // 项目集不存在
|
||||
r($program3) && p() && e('1'); // 项目集存在,但不在可以查看的项目集列表
|
||||
r($program4) && p() && e('2'); // 项目集存在,且在可以查看的项目集列表
|
||||
r($program5) && p() && e('2'); // 项目集不存在,且有可以查看的项目集列表
|
||||
@@ -0,0 +1,32 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1,2');
|
||||
$program->name->range('项目集1,项目集2');
|
||||
$program->type->range('program');
|
||||
$program->budget->range('900000,899900');
|
||||
$program->path->range('1,2')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(2);
|
||||
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModel::setMenu();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
项目集存在的情况 >> 项目集1
|
||||
项目集不存在的情况 >> 0
|
||||
|
||||
*/
|
||||
|
||||
$programTester = new programTest();
|
||||
|
||||
r($programTester->setMenuTest(1)) && p() && e('项目集1'); // 项目集存在的情况
|
||||
r($programTester->setMenuTest(3)) && p() && e('0'); // 项目集不存在的情况
|
||||
@@ -1,26 +1,34 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
su('admin');
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1,10');
|
||||
$program->name->range('项目集1');
|
||||
$program->type->range('program');
|
||||
$program->parent->range('[],[1]');
|
||||
$program->path->range('1,10')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(2);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModel::setTreePath();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
设置之前的项目集的path >> ,2,12,
|
||||
设置之后的项目集的path >> ,2,12,
|
||||
设置之前的项目集的path >> ,10,
|
||||
设置之后的项目集的path >> ,1,10,
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('program');
|
||||
$programTester = new programTest();
|
||||
|
||||
$before = $tester->program->getById(12);
|
||||
$tester->program->setTreePath(12);
|
||||
$after = $tester->program->getById(12);
|
||||
$before = $programTester->getByIDTest(10);
|
||||
$after = $programTester->setTreePathTest(10);
|
||||
|
||||
r($before) && p('path') && e(',2,12,'); // 设置之前的项目集的path
|
||||
r($after) && p('path') && e(',2,12,'); // 设置之后的项目集的path
|
||||
$db->restoreDB();
|
||||
r($before) && p('path') && e(',10,'); // 设置之前的项目集的path
|
||||
r($after) && p('path') && e(',1,10,'); // 设置之后的项目集的path
|
||||
|
||||
@@ -2,16 +2,24 @@
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/program.class.php';
|
||||
$db->switchDB();
|
||||
su('admin');
|
||||
|
||||
$program = zdTable('project');
|
||||
$program->id->range('1');
|
||||
$program->name->range('项目集1');
|
||||
$program->type->range('program');
|
||||
$program->path->range('1')->prefix(',')->postfix(',');
|
||||
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->end->range('20220212 000000:0')->type('timestamp')->format('YY/MM/DD');
|
||||
$program->gen(1);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 programModel::update();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
正常更新项目集的情况 >> 测试更新项目集十
|
||||
正常更新项目集的情况 >> 测试更新项目集
|
||||
更新项目集名称为空时 >> 『项目集名称』不能为空。
|
||||
当计划开始为空时更新项目集信息 >> 『计划开始』不能为空。
|
||||
当计划完成为空时更新项目集信息 >> 『计划完成』不能为空。
|
||||
@@ -19,15 +27,16 @@ pid=1
|
||||
|
||||
*/
|
||||
|
||||
$program = new programTest();
|
||||
$programTester = new programTest();
|
||||
|
||||
$data = array(
|
||||
'parent' => '0',
|
||||
'name' => '测试更新项目集十',
|
||||
'name' => '测试更新项目集',
|
||||
'begin' => '2020-10-10',
|
||||
'end' => '2022-09-03',
|
||||
'end' => '2023-09-03',
|
||||
'acl' => 'private',
|
||||
'budget' => '100',
|
||||
'status' => 'wait',
|
||||
'budgetUnit' => 'CNY',
|
||||
'syncPRJUnit' => true,
|
||||
'exchangeRate' => '',
|
||||
@@ -48,9 +57,8 @@ $emptyEndProgram['end'] = '';
|
||||
$realBeganProgram = $data;
|
||||
$realBeganProgram['realBegan'] = '2020-11-10';
|
||||
|
||||
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]:0') && e('『计划完成』不能为空。'); // 当计划完成为空时更新项目集信息
|
||||
r($program->update(10, $realBeganProgram)) && p('status') && e('doing'); // 更新未开始的项目集实际开始时间
|
||||
$db->restoreDB();
|
||||
r($programTester->updateTest(1, $normalProgram)) && p('name') && e('测试更新项目集'); // 正常更新项目集的情况
|
||||
r($programTester->updateTest(1, $emptyTitleProgram)) && p('message[name]:0') && e('『项目集名称』不能为空。'); // 更新项目集名称为空时
|
||||
r($programTester->updateTest(1, $emptyBeginProgram)) && p('message[begin]:0') && e('『计划开始』不能为空。'); // 当计划开始为空时更新项目集信息
|
||||
r($programTester->updateTest(1, $emptyEndProgram)) && p('message[end]:0') && e('『计划完成』不能为空。'); // 当计划完成为空时更新项目集信息
|
||||
r($programTester->updateTest(1, $realBeganProgram)) && p('status') && e('doing'); // 更新未开始的项目集实际开始时间
|
||||
|
||||
@@ -4,17 +4,36 @@ include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/user.class.php';
|
||||
su('admin');
|
||||
|
||||
$user = zdTable('user');
|
||||
$user->id->range('1001-1005');
|
||||
$user->account->range('1-5')->prefix("account");
|
||||
$user->realname->range('1-5')->prefix("用户名");
|
||||
$user->type->range('inside{4},ountside{1}');
|
||||
$user->avatar->range('1-5')->prefix('/home/z/user/');
|
||||
$user->deleted->range('0{4}, 1{1}');
|
||||
$user->gen(5);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 userModel->getPairs();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
所有用户头像的数量 >> 999
|
||||
查找account为"user99"的用户的头像路径 >> /home/z/user/15.png
|
||||
未删除的用户头像的数量 >> 4
|
||||
所有用户头像的数量 >> 5
|
||||
在未删除用户中查找account为"account1"的用户的头像路径 >> /home/z/user/1
|
||||
在未删除用户中查找account为"account2"的用户的头像路径 >> /home/z/user/2
|
||||
在未删除用户中查找account为"account3"的用户的头像路径 >> /home/z/user/3
|
||||
在未删除用户中查找account为"account4"的用户的头像路径 >> /home/z/user/4
|
||||
在所有用户中查找account为"account5"的用户的头像路径 >> /home/z/user/5
|
||||
|
||||
*/
|
||||
$user = new userTest();
|
||||
|
||||
r(count($user->getAvatarPairsTest())) && p() && e('999'); //所有用户头像的数量
|
||||
r($user->getAvatarPairsTest()) && p('user99') && e('/home/z/user/15.png'); //查找account为"user99"的用户的头像路径
|
||||
r(count($user->getAvatarPairsTest())) && p() && e('4'); // 未删除的用户头像的数量
|
||||
r(count($user->getAvatarPairsTest('all'))) && p() && e('5'); // 所有用户头像的数量
|
||||
r($user->getAvatarPairsTest()) && p('account1') && e('/home/z/user/1'); // 在未删除用户中查找account为"account1"的用户的头像路径
|
||||
r($user->getAvatarPairsTest()) && p('account2') && e('/home/z/user/2'); // 在未删除用户中查找account为"account2"的用户的头像路径
|
||||
r($user->getAvatarPairsTest()) && p('account3') && e('/home/z/user/3'); // 在未删除用户中查找account为"account3"的用户的头像路径
|
||||
r($user->getAvatarPairsTest()) && p('account4') && e('/home/z/user/4'); // 在未删除用户中查找account为"account4"的用户的头像路径
|
||||
r($user->getAvatarPairsTest('all')) && p('account5') && e('/home/z/user/5'); // 在所有用户中查找account为"account5"的用户的头像路径
|
||||
|
||||
@@ -4,9 +4,17 @@ include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/user.class.php';
|
||||
su('admin');
|
||||
|
||||
$user = zdTable('user');
|
||||
$user->id->range('1001-1005');
|
||||
$user->account->range('1-5')->prefix("account");
|
||||
$user->realname->range('1-5')->prefix("用户名");
|
||||
$user->type->range('inside{3},outside{2}');
|
||||
$user->deleted->range('0-1');
|
||||
$user->gen(5);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 userModel->getPairs();
|
||||
title=测试 userModel->getCommiters();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
|
||||
@@ -4,6 +4,12 @@ include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/user.class.php';
|
||||
su('admin');
|
||||
|
||||
$user = zdTable('user');
|
||||
$user->gen(50);
|
||||
|
||||
$userGroup = zdTable('usergroup');
|
||||
$userGroup->gen(500);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 userModel::getGroups();
|
||||
|
||||
@@ -10,15 +10,15 @@ title=测试 userModel::getGroupsByVisions();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
获取系统中所有研发界面分组的数量 >> 14
|
||||
获取系统中所有研发界面分组的数量 >> 13
|
||||
获取系统中所有迅捷界面分组的数量 >> 3
|
||||
传空Visions,返回空数组 >> 0
|
||||
获取系统中所有用户分组的数量 >> 17
|
||||
获取系统中所有用户分组的数量 >> 16
|
||||
|
||||
*/
|
||||
$user = new userTest();
|
||||
|
||||
r(count($user->getGroupsByVisionsTest(array('rnd')))) && p() && e('14'); // 获取系统中所有研发界面分组的数量
|
||||
r(count($user->getGroupsByVisionsTest(array('rnd')))) && p() && e('13'); // 获取系统中所有研发界面分组的数量
|
||||
r(count($user->getGroupsByVisionsTest(array('lite')))) && p() && e('3'); // 获取系统中所有迅捷界面分组的数量
|
||||
r($user->getGroupsByVisionsTest(array())) && p() && e('0'); // 传空Visions,返回空数组
|
||||
r(count($user->getGroupsByVisionsTest(array('rnd','lite')))) && p() && e('17'); // 获取系统中所有用户分组的数量
|
||||
r(count($user->getGroupsByVisionsTest(array('rnd','lite')))) && p() && e('16'); // 获取系统中所有用户分组的数量
|
||||
|
||||
@@ -4,22 +4,40 @@ include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/user.class.php';
|
||||
su('admin');
|
||||
|
||||
$user = zdTable('user');
|
||||
$user->id->range('1001-1005');
|
||||
$user->account->range('1-5')->prefix("account");
|
||||
$user->realname->range('1-5')->prefix("用户名");
|
||||
$user->type->range('inside{3},outside{2}');
|
||||
$user->deleted->range('0-1');
|
||||
$user->gen(5);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 userModel->getList();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
查找系统中第二个未删除的、内部用户真实姓名,根据account正序排 >> 开发1
|
||||
查找系统中未删除的、根据account正序排的最后一个用户的姓名 >> 测试99
|
||||
查找系统中所有未删除的、内部用户的数量 >> 999
|
||||
查找系统中不存在的用户,输出错误提示 >> Error: Cannot get index 1000
|
||||
查找系统中第一个未删除的、内部用户真实姓名,根据account正序排 >> 用户名1
|
||||
查找系统中第二个未删除的、内部用户真实姓名,根据account正序排 >> 用户名3
|
||||
查找系统中所有未删除的、内部用户的数量 >> 2
|
||||
查找系统中第一个用户的真实姓名 >> 用户名1
|
||||
查找系统中第二个用户的真实姓名 >> 用户名2
|
||||
查找系统中第三个用户的真实姓名 >> 用户名3
|
||||
查找系统中第四个用户的真实姓名 >> 用户名4
|
||||
查找系统中第五个用户的真实姓名 >> 用户名5
|
||||
查找系统中所有用户数量 >> 5
|
||||
|
||||
*/
|
||||
|
||||
$user = new userTest();
|
||||
|
||||
r($user->getListTest()) && p('1:realname') && e('开发1'); //查找系统中第二个未删除的、内部用户真实姓名,根据account正序排
|
||||
r($user->getListTest()) && p('998:realname') && e('测试99'); //查找系统中未删除的、根据account正序排的最后一个用户的姓名
|
||||
r($user->getListTest(true)) && p() && e('999'); //查找系统中所有未删除的、内部用户的数量
|
||||
r($user->getListTest()) && p('1000:realname') && e('Error: Cannot get index 1000'); //查找系统中不存在的用户,输出错误提示
|
||||
r($user->getListTest()) && p('0:realname') && e('用户名1'); // 查找系统中第一个未删除的、内部用户真实姓名,根据account正序排
|
||||
r($user->getListTest()) && p('1:realname') && e('用户名3'); // 查找系统中第二个未删除的、内部用户真实姓名,根据account正序排
|
||||
r($user->getListTest('nodeleted', true)) && p() && e('2'); // 查找系统中所有未删除的、内部用户的数量
|
||||
r($user->getListTest('all')) && p('0:realname') && e('用户名1'); // 查找系统中第一个用户的真实姓名
|
||||
r($user->getListTest('all')) && p('1:realname') && e('用户名2'); // 查找系统中第二个用户的真实姓名
|
||||
r($user->getListTest('all')) && p('2:realname') && e('用户名3'); // 查找系统中第三个用户的真实姓名
|
||||
r($user->getListTest('all')) && p('3:realname') && e('用户名4'); // 查找系统中第四个用户的真实姓名
|
||||
r($user->getListTest('all')) && p('4:realname') && e('用户名5'); // 查找系统中第五个用户的真实姓名
|
||||
r($user->getListTest('all', true)) && p() && e('5'); // 查找系统中所有用户数量
|
||||
|
||||
@@ -4,21 +4,40 @@ include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/user.class.php';
|
||||
su('admin');
|
||||
|
||||
$user = zdTable('user');
|
||||
$user->id->range('1001-1005');
|
||||
$user->account->range('1-5')->prefix("account");
|
||||
$user->realname->range('1-5')->prefix("用户名");
|
||||
$user->role->range('po,pd,qa,qd,pm');
|
||||
$user->type->range('inside{3},outside{2}');
|
||||
$user->deleted->range('0-1');
|
||||
$user->gen(5);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 userModel->getListByAccounts();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
按照给定的用户名列表查询用户信息,获取用户ID为1的用户真实姓名和角色 >> admin,qa
|
||||
按照给定的用户名列表查询用户信息,获取查询出的用户列表数量 >> 3
|
||||
按照给定的用户名列表查询用户信息,获取用户ID为0的用户信息 >> Error: Cannot get index 0.
|
||||
按照给定的用户名列表查询用户信息,获取用户ID为1001的用户真实姓名和角色 >> 用户名1,po
|
||||
按照给定的用户名列表查询用户信息,获取用户ID为1002的用户真实姓名和角色 >> 用户名2,pd
|
||||
按照给定的用户名列表查询用户信息,获取用户ID为1003的用户真实姓名和角色 >> 用户名3,qa
|
||||
按照给定的用户名列表查询用户信息,获取用户ID为1004的用户真实姓名和角色 >> 用户名4,qd
|
||||
按照给定的用户名列表查询用户信息,获取查询出的用户列表数量 >> 5
|
||||
删除account4后,按照给定的用户名列表查询用户信息,获取用户account为account2的用户真实姓名和角色 >> 用户名2,pd
|
||||
删除account4后,按照给定的用户名列表查询用户信息,获取查询出的用户列表数量 >> 4
|
||||
|
||||
*/
|
||||
$accounts = array('admin', 'program1whitelist', 'user10', 'ccsdqq@!');
|
||||
$accounts = array('account1', 'account2', 'account3', 'account4', 'account5');
|
||||
$keyFiled = array('id', 'account');
|
||||
$count = array(0 => false, 1 => true);
|
||||
|
||||
$user = new userTest();
|
||||
r($user->getListByAccountsTest($accounts, $count[0])) && p('1:realname,role') && e('admin,qa'); //按照给定的用户名列表查询用户信息,获取用户ID为1的用户真实姓名和角色
|
||||
r($user->getListByAccountsTest($accounts, $count[1])) && p() && e('3'); //按照给定的用户名列表查询用户信息,获取查询出的用户列表数量
|
||||
r($user->getListByAccountsTest($accounts, $count[0])) && p('0:realname') && e('Error: Cannot get index 0.'); //按照给定的用户名列表查询用户信息,获取用户ID为0的用户信息
|
||||
r($user->getListByAccountsTest($accounts, $keyFiled[0], $count[0])) && p('1001:realname,role') && e('用户名1,po'); // 按照给定的用户名列表查询用户信息,获取用户ID为1001的用户真实姓名和角色
|
||||
r($user->getListByAccountsTest($accounts, $keyFiled[0], $count[0])) && p('1002:realname,role') && e('用户名2,pd'); // 按照给定的用户名列表查询用户信息,获取用户ID为1002的用户真实姓名和角色
|
||||
r($user->getListByAccountsTest($accounts, $keyFiled[0], $count[0])) && p('1003:realname,role') && e('用户名3,qa'); // 按照给定的用户名列表查询用户信息,获取用户ID为1003的用户真实姓名和角色
|
||||
r($user->getListByAccountsTest($accounts, $keyFiled[0], $count[0])) && p('1004:realname,role') && e('用户名4,qd'); // 按照给定的用户名列表查询用户信息,获取用户ID为1004的用户真实姓名和角色
|
||||
r($user->getListByAccountsTest($accounts, $keyFiled[0], $count[1])) && p() && e('5'); // 按照给定的用户名列表查询用户信息,获取查询出的用户列表数量
|
||||
unset($accounts[3]);
|
||||
r($user->getListByAccountsTest($accounts, $keyFiled[1], $count[0])) && p('account2:realname,role') && e('用户名2,pd'); // 删除account4后,按照给定的用户名列表查询用户信息,获取用户account为account2的用户真实姓名和角色
|
||||
r($user->getListByAccountsTest($accounts, $keyFiled[1], $count[1])) && p() && e('4'); // 删除account4后,按照给定的用户名列表查询用户信息,获取查询出的用户列表数量
|
||||
|
||||
@@ -4,6 +4,16 @@ include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/user.class.php';
|
||||
su('admin');
|
||||
|
||||
$user = zdTable('user');
|
||||
$user->id->range('1001-1006');
|
||||
$user->account->range('1-6')->prefix("account");
|
||||
$user->realname->range('1-6')->prefix("用户名");
|
||||
$user->type->range('inside{3},outside{3}');
|
||||
$user->role->range('po,pd,qa,qd,pm,dev');
|
||||
$user->deleted->range('0{4}, 1{2}');
|
||||
$user->visions->range('rnd');
|
||||
$user->gen(5);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 userModel->getPairs();
|
||||
@@ -11,37 +21,37 @@ cid=1
|
||||
pid=1
|
||||
|
||||
查找带有Closed用户的外部用户键值对 >> Closed
|
||||
查找带有首字母的外部用户键值对 >> O:用户1
|
||||
查找不带首字母的外部用户键值对 >> 用户1
|
||||
查找带有首字母的外部用户键值对 >> A:用户名4
|
||||
查找不带首字母的外部用户键值对 >> 用户名4
|
||||
按照给定的用户名查找用户键值对,返回值中不带有Closed用户 >> 1
|
||||
按照给定的用户名查找用户键值对,返回值中带有Closed用户 >> 2
|
||||
使用limit参数来限制最多获取2个用户键值对 >> 2
|
||||
使用limit参数来限制最多获取50个用户键值对 >> 50
|
||||
使用pofirst参数来将系统中的产品经理用户放到返回值前列 >> P:测试主管58
|
||||
使用pmfirst参数来将系统中的项目经理用户放到返回值前列 >> O:其他100
|
||||
使用limit参数来限制最多获取50个用户键值对 >> 3
|
||||
使用pofirst参数来将系统中的产品经理用户放到返回值前列 >> A:用户名1
|
||||
使用pmfirst参数来将系统中的项目经理内部和外部用户放到返回值前列 >> A:用户名3
|
||||
|
||||
*/
|
||||
$usersToAppended = array('account5', 'account1');
|
||||
|
||||
$user = new userTest();
|
||||
$accounts = array('tesrasd1asd#@!#$', 'ASD123中文', 'user10', 'ccsdqq@!');
|
||||
$outsideUsersWithClosed = $user->getPairsTest('outside');
|
||||
$outsideUsersWithLetter = $user->getPairsTest('outside|noclosed');
|
||||
$outsideUsersNoLetter = $user->getPairsTest('outside|noclosed|noletter');
|
||||
$usersInAccountsNoclosed = $user->getPairsTest('noempty|noclosed', '', 0, $accounts);
|
||||
$usersInAccountsWithclosed = $user->getPairsTest('noempty', '', 0, $accounts);
|
||||
$usersInAccountsNoclosed = $user->getPairsTest('noempty|noclosed', '', 0, $usersToAppended);
|
||||
$usersInAccountsWithclosed = $user->getPairsTest('noempty', '', 0, $usersToAppended);
|
||||
$limit2Users = $user->getPairsTest('noempty|noclosed', '', 2);
|
||||
$limit50Users = $user->getPairsTest('noempty|noclosed', '', 50);
|
||||
$POFirstUsers = $user->getPairsTest('noempty|noclosed|pofirst');
|
||||
$PMFirstUsers = $user->getPairsTest('noempty|noclosed|pmfirst');
|
||||
$PMFirstUsers = $user->getPairsTest('noempty|noclosed|all|devfirst');
|
||||
$firstPO = array_slice($POFirstUsers, 0, 1);
|
||||
$firstPM = array_slice($PMFirstUsers, 0, 1);
|
||||
|
||||
r($outsideUsersWithClosed) && p('closed') && e('Closed'); //查找带有Closed用户的外部用户键值对
|
||||
r($outsideUsersWithLetter) && p('outside1') && e('O:用户1'); //查找带有首字母的外部用户键值对
|
||||
r($outsideUsersNoLetter) && p('outside1') && e('用户1'); //查找不带首字母的外部用户键值对
|
||||
r($outsideUsersWithLetter) && p('account4') && e('A:用户名4'); //查找带有首字母的外部用户键值对
|
||||
r($outsideUsersNoLetter) && p('account4') && e('用户名4'); //查找不带首字母的外部用户键值对
|
||||
r(count($usersInAccountsNoclosed)) && p() && e('1'); //按照给定的用户名查找用户键值对,返回值中不带有Closed用户
|
||||
r(count($usersInAccountsWithclosed)) && p() && e('2'); //按照给定的用户名查找用户键值对,返回值中带有Closed用户
|
||||
r(count($limit2Users)) && p() && e('2'); //使用limit参数来限制最多获取2个用户键值对
|
||||
r(count($limit50Users)) && p() && e('50'); //使用limit参数来限制最多获取50个用户键值对
|
||||
r($firstPO) && p('pd58') && e('P:测试主管58'); //使用pofirst参数来将系统中的产品经理用户放到返回值前列
|
||||
r($firstPM) && p('outside100') && e('O:其他100'); //使用pmfirst参数来将系统中的项目经理用户放到返回值前列
|
||||
r(count($limit50Users)) && p() && e('3'); //使用limit参数来限制最多获取50个用户键值对
|
||||
r($firstPO) && p('account1') && e('A:用户名1'); //使用pofirst参数来将系统中的产品经理用户放到返回值前列
|
||||
r($firstPM) && p('account3') && e('A:用户名3'); //使用pmfirst参数来将系统中的项目经理内部和外部用户放到返回值前列
|
||||
|
||||
@@ -4,20 +4,36 @@ include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/user.class.php';
|
||||
su('admin');
|
||||
|
||||
$user = zdTable('user');
|
||||
$user->id->range('1001-1005');
|
||||
$user->account->range('1-5')->prefix("account");
|
||||
$user->realname->range('1-5')->prefix("用户名");
|
||||
$user->email->range('account1@qq.com,account2@qq.com,account3@qq.com,account4@qq.com,account5@qq.com');
|
||||
$user->deleted->range('0{5}');
|
||||
$user->gen(5);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 userModel->getPairs();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
获取admin的邮箱 >> 833482@qq.com
|
||||
从accounts中获取到的用户邮箱数量 >> 2
|
||||
获取account1的邮箱和真实姓名 >> account1@qq.com,用户名1
|
||||
获取account2的邮箱和真实姓名 >> account2@qq.com,用户名2
|
||||
获取account3的邮箱和真实姓名 >> account3@qq.com,用户名3
|
||||
获取account4的邮箱和真实姓名 >> account4@qq.com,用户名4
|
||||
获取account5的邮箱和真实姓名 >> account5@qq.com,用户名5
|
||||
从accounts中获取到的用户邮箱数量 >> 5
|
||||
|
||||
*/
|
||||
|
||||
$accounts = array('tesrasd1asd#@!#$', 'ASD123中文', 'user10', 'ccsdqq@!', 'admin');
|
||||
$accounts = array('account1', 'account2', 'account3', 'account4', 'account5');
|
||||
$user = new userTest();
|
||||
$emails = $user->getRealNameAndEmailsTest($accounts);
|
||||
|
||||
r($emails['admin']) && p('email') && e('833482@qq.com'); //获取admin的邮箱
|
||||
r(count($emails)) && p() && e('2'); //从accounts中获取到的用户邮箱数量
|
||||
r($emails['account1']) && p('email,realname') && e('account1@qq.com,用户名1'); //获取account1的邮箱和真实姓名
|
||||
r($emails['account2']) && p('email,realname') && e('account2@qq.com,用户名2'); //获取account2的邮箱和真实姓名
|
||||
r($emails['account3']) && p('email,realname') && e('account3@qq.com,用户名3'); //获取account3的邮箱和真实姓名
|
||||
r($emails['account4']) && p('email,realname') && e('account4@qq.com,用户名4'); //获取account4的邮箱和真实姓名
|
||||
r($emails['account5']) && p('email,realname') && e('account5@qq.com,用户名5'); //获取account5的邮箱和真实姓名
|
||||
r(count($emails)) && p() && e('5'); //从accounts中获取到的用户邮箱数量
|
||||
|
||||
@@ -4,13 +4,20 @@ include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/user.class.php';
|
||||
su('admin');
|
||||
|
||||
$user = zdTable('user');
|
||||
$user->id->range('1-100');
|
||||
$user->account->range('1-100')->prefix('dev');
|
||||
$user->password->range('f8e41d6c31824c01e5d67c61a8ae49e9,e10adc3949ba59abbe56e057f20f883e');
|
||||
$user->realname->range('1-100')->prefix("开发");
|
||||
$user->gen(50);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 userModel->identify();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
用户名密码皆正确,返回验证登录的用户 >> admin
|
||||
用户名密码皆正确,返回验证登录的用户真实姓名 >> 开发1
|
||||
验证一个不存在的用户,返回空 >> 0
|
||||
验证一个不传用户名和密码的用户,返回空 >> 0
|
||||
|
||||
@@ -18,6 +25,6 @@ pid=1
|
||||
|
||||
$user = new userTest();
|
||||
|
||||
r($user->identifyTest('admin', '78302615c8b79cac8df6d2607f8a83ee')) && p('realname') && e('admin'); //用户名密码皆正确,返回验证登录的用户
|
||||
r($user->identifyTest('dev1', 'f8e41d6c31824c01e5d67c61a8ae49e9')) && p('realname') && e('开发1'); //用户名密码皆正确,返回验证登录的用户真实姓名
|
||||
r($user->identifyTest('asdjaf12', '78302615c8b79cac8df6d2607f8a83ee')) && p() && e('0'); //验证一个不存在的用户,返回空
|
||||
r($user->identifyTest('', '')) && p() && e('0'); //验证一个不传用户名和密码的用户,返回空
|
||||
@@ -4,6 +4,9 @@ include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/user.class.php';
|
||||
su('admin');
|
||||
|
||||
$user = zdTable('user');
|
||||
$user->gen(50);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 userModel->login();
|
||||
@@ -11,7 +14,7 @@ cid=1
|
||||
pid=1
|
||||
|
||||
使用admin登录,返回此用户为超级管理员 >> 1
|
||||
使用Admin登录,返回权限列表的数量 >> 3
|
||||
使用user3登录,返回权限列表的数量 >> 6
|
||||
使用空账号登录,返回权限列表数量为0 >> 0
|
||||
|
||||
*/
|
||||
@@ -23,11 +26,16 @@ $admin->id = 1;
|
||||
$admin->account = 'admin';
|
||||
$admin = $userClass->loginTest($admin);
|
||||
|
||||
$normalAccount = new stdclass();
|
||||
$normalAccount->id = 4;
|
||||
$normalAccount->account = 'user3';
|
||||
$normalAccount = $userClass->loginTest($normalAccount);
|
||||
|
||||
$emptyAccount = new stdclass();
|
||||
$emptyAccount->id = 0;
|
||||
$emptyAccount->account = '';
|
||||
$emptyAccount = $userClass->loginTest($emptyAccount);
|
||||
|
||||
r($admin) && p('admin') && e('1'); //使用admin登录,返回此用户为超级管理员
|
||||
r(count($admin->rights)) && p() && e('3'); //使用Admin登录,返回权限列表的数量
|
||||
r(count($normalAccount->rights)) && p() && e('6'); //使用admin登录,返回权限列表的数量
|
||||
r(count($emptyAccount->group)) && p() && e('0'); //使用空账号登录,返回权限列表数量为0
|
||||
Executable
+34
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
include dirname(dirname(dirname(__FILE__))) . '/class/user.class.php';
|
||||
su('admin');
|
||||
|
||||
$user = zdTable('user');
|
||||
$user->id->range('1001-1005');
|
||||
$user->account->range('1-5')->prefix("account");
|
||||
$user->realname->range('1-5')->prefix("用户名");
|
||||
$user->deleted->range('0-1');
|
||||
$user->gen(5);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 userModel::setUserList();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
测试获取account1的是否在列表中 >> 1
|
||||
测试获取account2的是否在列表中 >> 1
|
||||
测试获取account3的是否在列表中 >> 1
|
||||
测试获取account4的是否在列表中 >> 1
|
||||
测试获取account5的是否在列表中 >> 0
|
||||
|
||||
*/
|
||||
$users = array('account1' => '用户名1', 'account2' => '用户名2', 'account3' => '用户名3', 'account4' => '用户名4');
|
||||
|
||||
$user = new userTest();
|
||||
r($user->setUserListTest($users, 'account1')) && p() && e('1'); // 测试获取account1的是否在列表中
|
||||
r($user->setUserListTest($users, 'account2')) && p() && e('1'); // 测试获取account2的是否在列表中
|
||||
r($user->setUserListTest($users, 'account3')) && p() && e('1'); // 测试获取account3的是否在列表中
|
||||
r($user->setUserListTest($users, 'account4')) && p() && e('1'); // 测试获取account4的是否在列表中
|
||||
r($user->setUserListTest($users, 'account5')) && p() && e('0'); // 测试获取account5的是否在列表中
|
||||
Reference in New Issue
Block a user