This commit is contained in:
孙华伟
2022-04-01 10:50:52 +08:00
38 changed files with 947 additions and 21 deletions
+1 -1
View File
@@ -66,7 +66,7 @@ class storiesEntry extends entry
$control = $this->loadController('story', 'create');
$this->requireFields('title,spec,pri,category');
$control->create($productID);
$control->create($productID, $this->param('branch', 0), $this->param('moduleID', 0), $this->param('storyID', 0), $this->param('objectID', 0));
$data = $this->getData();
if(isset($data->status) and $data->status == 'fail') return $this->sendError(zget($data, 'code', 400), $data->message);
+1 -1
View File
@@ -22,7 +22,7 @@ class storyAssignToEntry extends Entry
{
$story = $this->loadModel('story')->getByID($storyID);
$fields = 'assignedTo';
$fields = 'assignedTo,comment';
$this->batchSetPost($fields);
$control = $this->loadController('story', 'assignTo');
+5 -3
View File
@@ -917,6 +917,8 @@ class actionModel extends model
->beginIF($docs and !$this->app->user->admin)->andWhere("IF(objectType != 'doc' || (objectType = 'doc' && (action = 'approved' || action = 'removed')), '1=1', objectID " . helper::dbIN($docs) . ")")->fi()
->beginIF($libs and !$this->app->user->admin)->andWhere("IF(objectType != 'doclib', '1=1', objectID " . helper::dbIN(array_keys($libs)) . ') ')->fi()
->beginIF($actionCondition)->andWhere("($actionCondition)")->fi()
/* Filter out client login/logout actions. */
->andWhere('action')->notin('disconnectxuanxuan,loginxuanxuan')
->orderBy($orderBy)
->page($pager)
->fetchAll();
@@ -1008,13 +1010,13 @@ class actionModel extends model
$actionQuery = str_replace("`product` = '$productID'", "`product` LIKE '%,$productID,%'", $actionQuery);
if($date) $actionQuery = "($actionQuery) AND " . ('date' . ($direction == 'next' ? '<' : '>') . "'{$date}'");
/* If this vision is lite, delete product actions. */
if($this->config->vision == 'lite') $actionQuery .= " AND objectType != 'product'";
$actionQuery .= " AND vision = '" . $this->config->vision . "'";
$actions = $this->getBySQL($actionQuery, $orderBy, $pager);
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'action');
if(!$actions) return array();
return $this->transformActions($actions);
+1 -1
View File
@@ -40,7 +40,7 @@
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->branch->noData;?></span>
<?php if($canCreate) echo html::a($this->createLink('branch', 'create', "productID=$productID", '', true), "<i class='icon icon-plus'></i> " . $lang->branch->create, '', "class='btn btn-info iframe'");?>
<?php if($canCreate and $browseType != 'closed') echo html::a($this->createLink('branch', 'create', "productID=$productID", '', true), "<i class='icon icon-plus'></i> " . $lang->branch->create, '', "class='btn btn-info iframe'");?>
</p>
</div>
<?php else:?>
+1 -1
View File
@@ -413,7 +413,7 @@ class commonModel extends model
{
if(!commonModel::isTutorialMode())
{
echo '<li>' . html::a(helper::createLink('tutorial', 'start'), "<i class='icon icon-guide'></i> " . $lang->tutorialAB, '', "class='iframe' data-class-name='modal-inverse' data-width='800' data-headerless='true' data-backdrop='true' data-keyboard='true'") . '</li>';
echo '<li class="user-tutorial">' . html::a(helper::createLink('tutorial', 'start'), "<i class='icon icon-guide'></i> " . $lang->tutorialAB, '', "class='iframe' data-class-name='modal-inverse' data-width='800' data-headerless='true' data-backdrop='true' data-keyboard='true'") . '</li>';
}
echo '<li>' . html::a(helper::createLink('my', 'preference', '', '', true), "<i class='icon icon-controls'></i> " . $lang->preference, '', "class='iframe' data-width='700'") . '</li>';
+4
View File
@@ -48,6 +48,10 @@ include 'chosen.html.php';
<?php endif;?>
<script>
adjustMenuWidth();
if(window.navigator.userAgent.indexOf('xuanxuan') > 0)
{
$('li.user-tutorial').addClass('hide');
}
</script>
<main id='main' <?php if(!empty($config->sso->redirect)) echo "class='ranzhiFixedTfootAction'";?> >
<div class='container'>
+2
View File
@@ -77,6 +77,8 @@ if($this->config->vision == 'lite')
$extHookFiles = glob($extHookRule);
if($extHookFiles) foreach($extHookFiles as $extHookFile) include $extHookFile;
}
$xuanExtFile = $extensionRoot . 'xuan/common/ext/view/header.xuanxuan.html.hook.php';
if(file_exists($xuanExtFile)) include $xuanExtFile;
?>
</head>
<?php $singleClass = $this->app->getViewType() == 'xhtml' ? 'allow-self-open' : '';?>
+1 -1
View File
@@ -1829,7 +1829,7 @@ class executionModel extends model
foreach($plans as $plan) $planPairs += $plan;
}
$this->config->product->search['params']['plan']['values'] = $planPairs;
$this->config->product->search['params']['module']['values'] = $modules;
$this->config->product->search['params']['module']['values'] = array('' => '') + $modules;
if($productType == 'normal')
{
unset($this->config->product->search['fields']['branch']);
+1 -1
View File
@@ -1291,7 +1291,7 @@ class product extends control
$this->view->position[] = $this->lang->product->line;
$this->view->programs = array('') + $this->loadModel('program')->getTopPairs();
$this->view->lines = $this->dao->select('*')->from(TABLE_MODULE)->where('type')->eq('line')->andWhere('deleted')->eq(0)->orderBy('`order`')->fetchAll();
$this->view->lines = $this->product->getLines();
$this->display();
}
+13 -3
View File
@@ -970,7 +970,7 @@ class productModel extends model
else
{
$moduleList = array();
$modules = array('' => '/');
$modules = array('/');
$branchGroup = $this->loadModel('execution')->getBranchByProduct(array_keys($products), $this->session->project, '');
foreach($products as $productID => $productName)
{
@@ -996,7 +996,7 @@ class productModel extends model
{
$modules = $this->tree->getOptionMenu($productID, 'story', 0, $branch);
}
$this->config->product->search['params']['module']['values'] = $modules;
$this->config->product->search['params']['module']['values'] = array('' => '') + $modules;
$productInfo = $this->getById($productID);
if(!$productID or $productInfo->type == 'normal' or $this->app->tab == 'assetlib')
@@ -1786,7 +1786,7 @@ class productModel extends model
*
* @param int $programID
* @access public
* @return void
* @return array
*/
public function getLinePairs($programID = 0)
{
@@ -1797,6 +1797,16 @@ class productModel extends model
->fetchPairs();
}
/*
* Get all lines.
* @access public
* @return array
*/
public function getLines()
{
return $this->dao->select('*')->from(TABLE_MODULE)->where('type')->eq('line')->andWhere('deleted')->eq(0)->orderBy('`order`')->fetchAll();
}
/**
* Get the summary of product's stories.
*
+8
View File
@@ -4,6 +4,14 @@ $(function()
{
$('#reviewer').attr('disabled', $(this).is(':checked') ? 'disabled' : null).trigger('chosen:updated');
getStatus('change', "storyID=" + storyID + ",changed=" + changed + ",needNotReview=" + ($(this).prop('checked') ? 1 : 0));
if($(this).is(':checked'))
{
$('.input-group-addon').removeClass('required');
}
else
{
$('.input-group-addon').addClass('required');
}
});
$('#needNotReview').change();
+6 -4
View File
@@ -670,7 +670,7 @@ class storyModel extends model
->add('lastEditedDate', $now)
->setIF($specChanged, 'version', $oldStory->version + 1)
->setIF($specChanged and $oldStory->status == 'active' and $this->post->needNotReview == false, 'status', 'changed')
->setIF($specChanged and $oldStory->status == 'draft' and $this->post->needNotReview, 'status', 'active')
->setIF($oldStory->status == 'draft' and $this->post->needNotReview, 'status', 'active')
->setIF($specChanged, 'reviewedBy', '')
->setIF($specChanged, 'closedBy', '')
->setIF($specChanged, 'closedReason', '')
@@ -679,7 +679,7 @@ class storyModel extends model
->stripTags($this->config->story->editor->change['id'], $this->config->allowedTags)
->remove('files,labels,reviewer,comment,needNotReview,uid')
->get();
if($specChanged and $story->status == 'active' and $this->checkForceReview()) $story->status = 'changed';
if($specChanged and isset($story->status) && $story->status == 'active' and $this->checkForceReview()) $story->status = 'changed';
$story = $this->loadModel('file')->processImgURL($story, $this->config->story->editor->change['id'], $this->post->uid);
$this->dao->update(TABLE_STORY)->data($story, 'spec,verify')
->autoCheck()
@@ -735,7 +735,7 @@ class storyModel extends model
$this->file->updateObjectID($this->post->uid, $storyID, 'story');
$oldStory->reviewers = implode(',', array_keys($oldStroyReviewers));
$oldStory->reviewers = implode(',', array_keys($oldStoryReviewers));
$story->reviewers = implode(',', $_POST['reviewer']);
return common::createChanges($oldStory, $story);
}
@@ -1315,11 +1315,11 @@ class storyModel extends model
->setDefault('lastEditedBy', $this->app->user->account)
->setDefault('lastEditedDate', $now)
->setDefault('status', $oldStory->status)
->setDefault('reviewedDate', $date)
->setIF($this->post->result == 'revert', 'version', $this->post->preVersion)
->removeIF($this->post->result != 'reject', 'closedReason, duplicateStory, childStories')
->removeIF($this->post->result == 'reject' and $this->post->closedReason != 'duplicate', 'duplicateStory')
->removeIF($this->post->result == 'reject' and $this->post->closedReason != 'subdivided', 'childStories')
->add('reviewedDate', $date)
->add('reviewedBy', $oldStory->reviewedBy . ',' . $this->app->user->account)
->remove('result,preVersion,comment')
->get();
@@ -2663,6 +2663,8 @@ class storyModel extends model
{
$storyQuery .= " AND `status` NOT IN ('draft', 'closed')";
}
if($this->app->rawModule == 'build' and $this->app->rawMethod == 'linkstory') $storyQuery .= " AND `parent` != '-1'";
}
elseif(strpos($storyQuery, $allBranch) !== false)
{
+1 -1
View File
@@ -413,7 +413,7 @@
<?php endif;?>
<tr>
<th><?php echo $lang->story->reviewedDate;?></th>
<td><?php if($story->reviewedBy) echo $story->reviewedDate;?></td>
<td><?php if($story->reviewedBy) echo date('Y-m-d', strtotime($story->reviewedDate))?></td>
</tr>
<tr>
<th><?php echo $lang->story->closedBy;?></th>
+6 -3
View File
@@ -5257,8 +5257,9 @@ class upgradeModel extends model
$products = $this->dao->select('*')->from(TABLE_PRODUCT)->where('acl')->eq('custom')->fetchAll();
foreach($products as $product)
{
$groups = explode(',', $product->whitelist);
$accounts = $this->dao->select('account')->from(TABLE_USERGROUP)->where('`group`')->in($groups)->fetchPairs('account');
$groups = explode(',', $product->whitelist);
$accounts = $this->dao->select('account')->from(TABLE_USERGROUP)->where('`group`')->in($groups)->fetchPairs('account');
$whiteList = '';
foreach($accounts as $account)
{
$acl = new stdclass();
@@ -5269,9 +5270,11 @@ class upgradeModel extends model
$acl->source = 'upgrade';
$this->dao->insert(TABLE_ACL)->data($acl)->exec();
$whiteList .= ',' . $account;
}
$this->dao->update(TABLE_PRODUCT)->set('acl')->eq('private')->where('id')->eq($product->id)->exec();
$this->dao->update(TABLE_PRODUCT)->set('acl')->eq('private')->set('whitelist')->eq($whiteList)->where('id')->eq($product->id)->exec();
}
return true;
+134
View File
@@ -0,0 +1,134 @@
<?php
class caselibTest
{
public function __construct()
{
global $tester;
$this->objectModel = $tester->loadModel('caselib');
}
public function setLibMenuTest($libraries, $libID)
{
$objects = $this->objectModel->setLibMenu($libraries, $libID);
if(dao::isError()) return dao::getError();
return $objects;
}
public function saveLibStateTest($libID = 0, $libraries = array())
{
$objects = $this->objectModel->saveLibState($libID, $libraries);
if(dao::isError()) return dao::getError();
return $objects;
}
public function getByIdTest($libID, $setImgSize = false)
{
$objects = $this->objectModel->getById($libID, $setImgSize);
if(dao::isError()) return dao::getError();
return $objects;
}
public function updateTest($libID)
{
$objects = $this->objectModel->update($libID);
if(dao::isError()) return dao::getError();
$objects = $this->objectModel->getById($libID);
return $objects;
}
public function deleteTest($libID, $table = '')
{
$objects = $this->objectModel->delete($libID, $table);
if(dao::isError()) return dao::getError();
$objects = $this->objectModel->getById($libID);
return $objects;
}
public function getLibrariesTest()
{
$objects = $this->objectModel->getLibraries();
if(dao::isError()) return dao::getError();
return $objects;
}
public function getListTest($orderBy = 'id_desc', $pager = null)
{
$objects = $this->objectModel->getList($orderBy, $pager);
if(dao::isError()) return dao::getError();
return $objects;
}
public function createTest($param)
{
foreach($param as $k => $v) $_POST[$k] = $v;
$libID = $this->objectModel->create();
unset($_POST);
if(dao::isError()) return dao::getError();
$objects = $this->objectModel->getById($libID);
return $objects;
}
public function getLibCasesTest($libID, $browseType, $queryID = 0, $moduleID = 0, $sort = 'id_desc', $pager = null)
{
$objects = $this->objectModel->getLibCases($libID, $browseType, $queryID, $moduleID, $sort, $pager);
if(dao::isError()) return dao::getError();
return $objects;
}
public function buildSearchFormTest($libID, $libraries, $queryID, $actionURL)
{
$objects = $this->objectModel->buildSearchForm($libID, $libraries, $queryID, $actionURL);
if(dao::isError()) return dao::getError();
return $objects;
}
public function getLibLinkTest($module, $method, $extra)
{
$objects = $this->objectModel->getLibLink($module, $method, $extra);
if(dao::isError()) return dao::getError();
return $objects;
}
public function createFromImportTest($libID)
{
$objects = $this->objectModel->createFromImport($libID);
if(dao::isError()) return dao::getError();
return $objects;
}
public function batchCreateCaseTest($libID)
{
$objects = $this->objectModel->batchCreateCase($libID);
if(dao::isError()) return dao::getError();
return $objects;
}
}
+195
View File
@@ -0,0 +1,195 @@
<?php
class projectreleaseTest
{
public function __construct()
{
global $tester;
$this->objectModel = $tester->loadModel('projectrelease');
}
/**
* Test get release by id.
*
* @param int $releaseID
* @access public
* @return object
*/
public function getByIDTest($releaseID)
{
$objects = $this->objectModel->getByID($releaseID);
if(dao::isError())
{
$error = dao::getError();
return $error[0];
}
return $objects;
}
/**
* Test get list of releases.
*
* @param int $projectID
* @param string $type
* @access public
* @return array
*/
public function getListTest($projectID, $type = 'all')
{
$objects = $this->objectModel->getList($projectID, $type);
if(dao::isError())
{
$error = dao::getError();
return $error[0];
}
return $objects;
}
/**
* Test get last release.
*
* @param int $projectID
* @access public
* @return object
*/
public function getLastTest($projectID)
{
$objects = $this->objectModel->getLast($projectID);
if(dao::isError())
{
$error = dao::getError();
return $error[0];
}
return $objects;
}
/**
* Test get released builds from project.
*
* @param int $projectID
* @access public
* @return array
*/
public function getReleasedBuildsTest($projectID)
{
$objects = $this->objectModel->getReleasedBuilds($projectID);
if(dao::isError())
{
$error = dao::getError();
return $error[0];
}
if(count($objects) == 1)
{
return count($objects);
}
else
{
return $objects;
}
}
/**
* Test update a release.
*
* @param int $releaseID
* @param string $name
* @param string $date
* @access public
* @return array
*/
public function updateTest($releaseID, $name = '', $date = '')
{
global $app;
$app->loadConfig('release');
$updateFields['name'] = $name;
$updateFields['build'] = 1;
$updateFields['date'] = $date;
$updateFields['status'] = 'normal';
$updateFields['desc'] = '';
$updateFields['labels'] = array();
$updateFields['files'] = array();
$updateFields['uid'] = '62450877d0a27';
$updateFields['product'] = 1;
foreach($updateFields as $field => $defaultValue) $_POST[$field] = $defaultValue;
$objects = $this->objectModel->update($releaseID);
if($objects == array()) $objects = '没有数据更新';
unset($_POST);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test link stories
*
* @param int $releaseID
* @access public
* @return array
*/
public function linkStoryTest($releaseID)
{
$_POST['stories'] = array(1, 2);
$this->objectModel->linkStory($releaseID);
global $tester;
$objects = $tester->dao->select('stories')->from(TABLE_RELEASE)->where('id')->eq((int)$releaseID)->fetch();
unset($_POST);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test unlink stories
*
* @param int $releaseID
* @param int $storyID
* @access public
* @return array
*/
public function unlinkStoryTest($releaseID, $storyID)
{
$this->linkStoryTest($releaseID);
$this->objectModel->unlinkStory($releaseID, $storyID);
global $tester;
$objects = $tester->dao->select('stories')->from(TABLE_RELEASE)->where('id')->eq((int)$releaseID)->fetch();
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test link bugs.
*
* @param int $releaseID
* @param string $type
* @access public
* @return array
*/
public function linkBugTest($releaseID, $type = 'bug')
{
$_POST['bugs'] = array(1, 2);
$this->objectModel->linkBug($releaseID, $type);
global $tester;
$field = $type == 'bug' ? 'bugs' : 'leftBugs';
$objects = $tester->dao->select($field)->from(TABLE_RELEASE)->where('id')->eq((int)$releaseID)->fetch();
unset($_POST);
if(dao::isError()) return dao::getError();
return $objects;
}
}
+35
View File
@@ -0,0 +1,35 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/caselib.class.php';
su('admin');
/**
title=测试 caselibModel->batchCreateCase();
cid=1
pid=1
*/
$caselib = new caselibTest();
$_POST = array(
'module' => array(0 => 0, 1 => 0),
'title' => array(0 => '测试导入添加1', 1 => '测试导入添加2'),
'color' => array(0 => '', 1 => ''),
'type' => array(0 => 'performance', 1 => 'unit'),
'pri' => array(0 => 2, 1 => 4),
'precondition' => array(0 => '', 1 => ''),
'keywords' => array(0 => '', 1 => ''),
'stage' => array(0 => array(), 1 => array()),
);
$caselib->batchCreateCaseTest(201);
unset($_POST);
$total = $tester->dao->select('count(*) total')->from(TABLE_CASE)->where('lib')->eq(201)->fetch('total');
$cases = $tester->dao->select('*')->from(TABLE_CASE)->where('lib')->eq(201)->fetchAll('id');
r($total) && p() && e('12'); // 添加两条数据之后查询数据条数是否正确
r($cases) && p('411:title,type') && e('测试导入添加1,performance'); // 添加数据之后查询新加用例的名称,用例类型
r($cases) && p('412:title,type') && e('测试导入添加2,unit'); // 添加数据之后查询新加用例的名称,用例类型
system('./ztest init');
+25
View File
@@ -0,0 +1,25 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/caselib.class.php';
su('admin');
/**
title=测试 caselibModel->buildSearchForm();
cid=1
pid=1
*/
$caselib = new caselibTest();
$libID = 201;
$queryID = 10;
$actionURL = helper::createLink('caselib', 'browse', "libID=$libID&browseType=bySearch&queryID=myQueryID");
$libs = $tester->loadModel('caselib')->getLibraries();
$caselib->buildSearchFormTest($libID, $libs, $queryID, $actionURL);
$search = $tester->config->testcase->search;
r($search) && p('actionURL') && e('model/caselib/buildsearchform.php?m=caselib&f=browse&t=&libID=201&browseType=bySearch&queryID=myQueryID'); //测试设置的url参数
r($search) && p('queryID') && e('10'); //测试设置的queryID值是否正确
+35
View File
@@ -0,0 +1,35 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/caselib.class.php';
su('admin');
/**
title=测试 caselibModel->create();
cid=1
pid=1
*/
$caselib = new caselibTest();
$lib = new stdClass();
$lib->name = "";
$result1 = $caselib->createTest($lib);
$lib = new stdClass();
$lib->name = '测试用例库名称';
$lib->desc = '测试用例库描述';
$result2 = $caselib->createTest($lib);
$lib = new stdClass();
$lib->name = '测试用例库名称';
$result3 = $caselib->createTest($lib);
r($result1) && p('name:0') && e('『名称』不能为空。'); //测试名称是空时候添加
r($result2) && p('name') && e('测试用例库名称'); //测试添加的名称信息
r($result2) && p('desc') && e('测试用例库描述'); //测试添加的描述信息
r($result3) && p('name:0') && e('『名称』已经有『测试用例库名称』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。'); //测试名称是空时候添加
system('./ztest init');
+38
View File
@@ -0,0 +1,38 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/caselib.class.php';
su('admin');
/**
title=测试 caselibModel->createFromImport();
cid=1
pid=1
*/
$caselib = new caselibTest();
$_POST = array(
'lib' => array(2 => 201, 3 => 201),
'title' => array(2 => '测试导入添加1', 3 => '测试导入添加2'),
'module' => array(2 => 0, 3 => 0),
'pri' => array(2 => 2, 3 => 4),
'type' => array(2 => 'performance', 3 => 'unit'),
'stage' => array(2 => array(), 3 => array()),
'keywords' => array(2 => 'keywords1', 3 => 'keywords2'),
'precondition' => array(2 => '', 3 => ''),
'isEndPage' => 1,
'pagerID' => 1
);
$caselib->createFromImportTest(201);
unset($_POST);
$total = $tester->dao->select('count(*) total')->from(TABLE_CASE)->where('lib')->eq(201)->fetch('total');
$cases = $tester->dao->select('*')->from(TABLE_CASE)->where('lib')->eq(201)->fetchAll('id');
r($total) && p() && e('12'); //添加两条数据之后查询数据条数是否正确
r($cases) && p('411:title,keywords') && e('测试导入添加1,keywords1'); //添加数据之后查询新加用例的名称,关键字
r($cases) && p('412:title,keywords') && e('测试导入添加2,keywords2'); //添加数据之后查询新加用例的名称,关键字
system('./ztest init');
+20
View File
@@ -0,0 +1,20 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/caselib.class.php';
su('admin');
/**
title=测试 caselibModel->delete();
cid=1
pid=1
*/
$caselib = new caselibTest();
$lib = $caselib->deleteTest(201);
r($lib) && p('deleted') && e('1'); //测试删除之后deleted值是否为1
system('./ztest init');
+20
View File
@@ -0,0 +1,20 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/caselib.class.php';
su('admin');
/**
title=测试 caselibModel->getById();
cid=1
pid=1
*/
$caselib = new caselibTest();
$data = $caselib->getByIdTest(201);
r($data) && p('name') && e('这是测试套件名称201'); //测试获取数据的名称信息
r($data) && p('desc') && e('这是测试套件的描述201'); //测试获取数据的描述信息
r($data) && p('type') && e('library'); //测试获取数据的type类型
+26
View File
@@ -0,0 +1,26 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/caselib.class.php';
su('admin');
/**
title=测试 caselibModel->getLibCases();
cid=1
pid=1
*/
global $tester;
$tester->app->loadClass('pager', $static = true);
$pager = new pager(0, 5, 1);
$caselib = new caselibTest();
$list1 = $caselib->getLibCasesTest(201, 'all');
$list2 = $caselib->getLibCasesTest(201, 'bysearch');
$list3 = $caselib->getLibCasesTest(201, 'all', '0', '0', 'id_desc', $pager);
r(count($list1)) && p() && e('10'); //所有状态下,用例库下用例数量
r(count($list2)) && p() && e('10'); //搜索状态下,用例库下用例数量
r(count($list3)) && p() && e('5'); //分页状态下,用例库下用例数量
+24
View File
@@ -0,0 +1,24 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/caselib.class.php';
su('admin');
/**
title=测试 caselibModel->getLibLink();
cid=1
pid=1
*/
$caselib = new caselibTest();
$link1 = $caselib->getLibLinkTest('caselib', 'create', '');
$link2 = $caselib->getLibLinkTest('caselib', 'test', '');
$link3 = $caselib->getLibLinkTest('tree', '', '');
$link4 = $caselib->getLibLinkTest('', '', '');
r($link1) && p() && e('model/caselib/getliblink.php?m=caselib&f=browse&t=&libID=%s'); // 测试参数情况1返回值
r($link2) && p() && e('model/caselib/getliblink.php?m=caselib&f=test&t=&libID=%s'); // 测试参数情况2返回值
r($link3) && p() && e('model/caselib/getliblink.php?m=tree&f=&t=&libID=%s&type=caselib&currentModuleID=0'); // 测试参数情况3返回值
r($link4) && p() && e('model/caselib/getliblink.php?m=caselib&f=browse&t=&libID=%s'); // 测试参数情况4返回值
+18
View File
@@ -0,0 +1,18 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/caselib.class.php';
su('admin');
/**
title=测试 caselibModel->getLibraries();
cid=1
pid=1
*/
$caselib = new caselibTest();
$list = $caselib->getLibrariesTest();
r($list) && p('201') && e('这是测试套件名称201'); //测试获取用例库的键值对
+19
View File
@@ -0,0 +1,19 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/caselib.class.php';
su('admin');
/**
title=测试 caselibModel->getList();
cid=1
pid=1
*/
$caselib = new caselibTest();
$list = $caselib->getListTest();
r(count($list)) && p() && e('1'); //测试获取列表的个数,目前只有一个
r($list) && p('201:name') && e('这是测试套件名称201');//测试获取列表某个用例库的名称信息
+19
View File
@@ -0,0 +1,19 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/caselib.class.php';
su('admin');
/**
title=测试 caselibModel->saveLibState();
cid=1
pid=1
*/
$caselib = new caselibTest();
$libs = $tester->loadModel('caselib')->getLibraries();
$id = $caselib->saveLibStateTest(201, $libs);
r($id) && p() && e('201'); //保存用例库状态之后返回值
+22
View File
@@ -0,0 +1,22 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/caselib.class.php';
su('admin');
/**
title=测试 caselibModel->setLibMenu();
cid=1
pid=1
*/
$caselib = new caselibTest();
$libs = $tester->loadModel('caselib')->getLibraries();
$info = $caselib->setLibMenuTest($libs, 201);
$menuStr = <<<EOT
<div class='btn-group header-btn' id='swapper'><button data-toggle='dropdown' type='button' class='btn' id='currentItem' title='这是测试套件名称201'><span class='text'>这是测试套件名称201</span> <span class='caret' style='margin-top: 3px'></span></button><div id='dropMenu' class='dropdown-menu search-list' data-ride='searchList' data-url='model/caselib/setlibmenu.php?m=caselib&f=ajaxGetDropMenu&t=&objectID=201&module=caselib&method=browse'><div class="input-control search-box has-icon-left has-icon-right search-example"><input type="search" class="form-control search-input" /><label class="input-control-icon-left search-icon"><i class="icon icon-search"></i></label><a class="input-control-icon-right search-clear-btn"><i class="icon icon-close icon-sm"></i></a></div></div></div>
EOT;
r($tester->lang->switcherMenu) && p() && e($menuStr); //修改下拉菜单之后返回值
+29
View File
@@ -0,0 +1,29 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/caselib.class.php';
su('admin');
/**
title=测试 caselibModel->update();
cid=1
pid=1
*/
$caselib = new caselibTest();
$_POST['name'] = '';
$lib1 = $caselib->updateTest(201);
$_POST['name'] = '测试修改名称';
$_POST['desc'] = '测试修改描述';
$lib2 = $caselib->updateTest(201);
unset($_POST);
r($lib1) && p('name:0') && e('『name』不能为空。'); //测试更新名称为空时候返回
r($lib2) && p('name') && e('测试修改名称'); //测试更新之后名称信息
r($lib2) && p('desc') && e('测试修改描述'); //测试更新之后描述信息
system('./ztest init');
+23
View File
@@ -0,0 +1,23 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/projectrelease.class.php';
su('admin');
/**
title=测试 projectreleaseModel->getByID();
cid=1
pid=1
根据releaseID查找发布详情,能查询到结果 >> 产品正常的正常的发布1
根据releaseID查找发布详情,不能查询到结果 >> 0
*/
$releaseID = array(1, 100);
$projectrelease = new projectreleaseTest();
r($projectrelease->getByIDTest($releaseID[0])) && p('name') && e('产品正常的正常的发布1'); //根据releaseID查找发布详情,能查询到结果
r($projectrelease->getByIDTest($releaseID[1])) && p('name') && e('0'); //根据releaseID查找发布详情,不能查询到结果
+25
View File
@@ -0,0 +1,25 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/projectrelease.class.php';
su('admin');
/**
title=测试 projectreleaseModel->getLast();
cid=1
pid=1
执行projectID正常存在 >> 产品发布9
执行projectID不存在 >> 0
执行projectID为空 >> 8
*/
$projectID = array(11, 1000, '');
$projectrelease = new projectreleaseTest();
r($projectrelease->getLastTest($projectID[0])) && p('name') && e('产品发布9'); //执行projectID正常存在
r($projectrelease->getLastTest($projectID[1])) && p() && e('0'); //执行projectID不存在
r($projectrelease->getLastTest($projectID[2])) && p('id') && e('8'); //执行projectID为空
+34
View File
@@ -0,0 +1,34 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/projectrelease.class.php';
su('admin');
/**
title=测试 projectreleaseModel->getList();
cid=1
pid=1
查询projectID正常存在,type为all的发布 >> 产品发布9,normal
查询projectID正常存在,type为normal的发布 >> 产品发布9,normal
查询projectID正常存在,type为terminate的发布 >> 0
查询projectID正常存在,type为''的发布 >> 0
查询projectID正常存在的发布 >> 产品发布9,normal
查询projectID不存在,type为all的发布 >> 0
查询projectID为空,type为all的发布 >> 8
*/
$projectID = array(11, 1000, '');
$type = array('all', 'normal', 'terminate', '');
$projectrelease = new projectreleaseTest();
r($projectrelease->getListTest($projectID[0], $type[0])) && p('0:name,status') && e('产品发布9,normal'); //查询projectID正常存在,type为all的发布
r($projectrelease->getListTest($projectID[0], $type[1])) && p('0:name,status') && e('产品发布9,normal'); //查询projectID正常存在,type为normal的发布
r($projectrelease->getListTest($projectID[0], $type[2])) && p() && e('0'); //查询projectID正常存在,type为terminate的发布
r($projectrelease->getListTest($projectID[0], $type[3])) && p() && e('0'); //查询projectID正常存在,type为''的发布
r($projectrelease->getListTest($projectID[0])) && p('0:name,status') && e('产品发布9,normal'); //查询projectID正常存在的发布
r($projectrelease->getListTest($projectID[1], $type[0])) && p() && e('0'); //查询projectID不存在,type为all的发布
r($projectrelease->getListTest($projectID[2], $type[0])) && p('0:id') && e('8'); //查询projectID为空,type为all的发布
+25
View File
@@ -0,0 +1,25 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/projectrelease.class.php';
su('admin');
/**
title=测试 projectreleaseModel->getReleasedBuilds();
cid=1
pid=1
执行projectID正常存在 >> 2
执行projectID不存在 >> 0
执行projectID为空 >> 1
*/
$projectID = array(131, 1000, '');
$projectrelease = new projectreleaseTest();
r($projectrelease->getReleasedBuildsTest($projectID[0])) && p('1') && e('2'); //执行projectID正常存在
r($projectrelease->getReleasedBuildsTest($projectID[1])) && p() && e('0'); //执行projectID不存在
r($projectrelease->getReleasedBuildsTest($projectID[2])) && p() && e('1'); //执行projectID为空
+32
View File
@@ -0,0 +1,32 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/projectrelease.class.php';
su('admin');
/**
title=测试 projectreleaseModel->linkBug();
cid=1
pid=1
测试normal状态的发布,releaseID正常存在,type为bug >> ,1,2
测试normal状态的发布,releaseID正常存在,type为leftBug >> ,1,2
测试normal状态的发布,releaseID正常存在,type为空 >> ,1,2,
测试terminate状态的发布,releaseID正常存在,type为bug >> ,1,2
测试terminate状态的发布,releaseID正常存在,type为leftBug >> ,1,2
测试terminate状态的发布,releaseID正常存在,type为空 >> ,1,2,
*/
$releaseID = array(1, 10);
$type = array('bug', 'leftBug', '');
$projectrelease = new projectreleaseTest();
r($projectrelease->linkBugTest($releaseID[0],$type[0])) && p('bugs') && e(',1,2'); //测试normal状态的发布,releaseID正常存在,type为bug
r($projectrelease->linkBugTest($releaseID[0],$type[1])) && p('leftBugs') && e(',1,2'); //测试normal状态的发布,releaseID正常存在,type为leftBug
r($projectrelease->linkBugTest($releaseID[0],$type[2])) && p('leftBugs') && e(',1,2,'); //测试normal状态的发布,releaseID正常存在,type为空
r($projectrelease->linkBugTest($releaseID[1],$type[0])) && p('bugs') && e(',1,2'); //测试terminate状态的发布,releaseID正常存在,type为bug
r($projectrelease->linkBugTest($releaseID[1],$type[1])) && p('leftBugs') && e(',1,2'); //测试terminate状态的发布,releaseID正常存在,type为leftBug
r($projectrelease->linkBugTest($releaseID[1],$type[2])) && p('leftBugs') && e(',1,2,'); //测试terminate状态的发布,releaseID正常存在,type为空
system("./ztest init");
+23
View File
@@ -0,0 +1,23 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/projectrelease.class.php';
su('admin');
/**
title=测试 projectreleaseModel->linkStory();
cid=1
pid=1
测试normal状态的发布,releaseID正常存在 >> ,1,2
测试terminate状态的发布,releaseID正常存在 >> ,1,2
*/
$releaseID = array(1, 10);
$projectrelease = new projectreleaseTest();
r($projectrelease->linkStoryTest($releaseID[0])) && p('stories') && e(',1,2'); //测试normal状态的发布,releaseID正常存在
r($projectrelease->linkStoryTest($releaseID[1])) && p('stories') && e(',1,2'); //测试terminate状态的发布,releaseID正常存在
system("./ztest init");
+32
View File
@@ -0,0 +1,32 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/projectrelease.class.php';
su('admin');
/**
title=测试 projectreleaseModel->unlinkStory();
cid=1
pid=1
测试normal状态的发布,正常存在的storyID值为2,可移除 >> 1
测试normal状态的发布,不存在的storyID值为100,不可移除 >> 1,2
测试normal状态的发布,不存在的storyID值为空,不可移除 >> 1,2
测试terminate状态的发布,正常存在的storyID值为2,可移除 >> 1
测试terminate状态的发布,不存在的storyID值为100,不可移除 >> 1,2
测试terminate状态的发布,不存在的storyID值为空,不可移除 >> 1,2
*/
$releaseID = array(1, 10);
$storyID = array(2, 100, '');
$projectrelease = new projectreleaseTest();
r($projectrelease->unlinkStoryTest($releaseID[0], $storyID[0])) && p('stories') && e('1'); //测试normal状态的发布,正常存在的storyID值为2,可移除
r($projectrelease->unlinkStoryTest($releaseID[0], $storyID[1])) && p('stories') && e('1,2'); //测试normal状态的发布,不存在的storyID值为100,不可移除
r($projectrelease->unlinkStoryTest($releaseID[0], $storyID[2])) && p('stories') && e('1,2'); //测试normal状态的发布,不存在的storyID值为空,不可移除
r($projectrelease->unlinkStoryTest($releaseID[1], $storyID[0])) && p('stories') && e('1'); //测试terminate状态的发布,正常存在的storyID值为2,可移除
r($projectrelease->unlinkStoryTest($releaseID[1], $storyID[1])) && p('stories') && e('1,2'); //测试terminate状态的发布,不存在的storyID值为100,不可移除
r($projectrelease->unlinkStoryTest($releaseID[1], $storyID[2])) && p('stories') && e('1,2'); //测试terminate状态的发布,不存在的storyID值为空,不可移除
system("./ztest init");
+42
View File
@@ -0,0 +1,42 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/projectrelease.class.php';
su('admin');
/**
title=测试 projectreleaseModel->update();
cid=1
pid=1
测试releaseID不存在,name在发布中不存在,date正常存在,不可修改 >> 没有数据更新
测试releaseID为空,name在发布中不存在,date正常存在,不可修改 >> 没有数据更新
测试releaseID正常存在,name在当前发布存在,date正常存在,可修改 >> date,2022-03-03,2022-03-31
测试releaseID正常存在,name在当前发布存在,date为空,不可修改 >> 『date』不能为空。
测试releaseID正常存在,name在发布中不存在,date正常存在,可修改 >> name,产品正常的正常的发布2
测试releaseID正常存在,name在发布中不存在,date为空,不可修改 >> 『date』不能为空。
测试releaseID正常存在,name为空,date正常存在,不可修改 >> 『name』不能为空。
测试releaseID正常存在,name为空,date为空,不可修改 >> 『name』不能为空。;『date』不能为空。
测试releaseID正常存在,name在其他发布存在,date正常,不可修改 >> 『name』已经有『产品发布9』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。
*/
$releaseID = array(1, 100, '');
$name = array('产品正常的正常的发布1', '产品发布9', '产品正常的正常的发布2', '');
$date = array('2022-03-31', '');
$projectrelease = new projectreleaseTest();
r($projectrelease->updateTest($releaseID[1], $name[2], $date[0])) && p() && e('没有数据更新'); //测试releaseID不存在,name在发布中不存在,date正常存在,不可修改
r($projectrelease->updateTest($releaseID[2], $name[2], $date[0])) && p() && e('没有数据更新'); //测试releaseID为空,name在发布中不存在,date正常存在,不可修改
r($projectrelease->updateTest($releaseID[0], $name[0], $date[0])) && p('0:field,old,new') && e('date,2022-03-03,2022-03-31'); //测试releaseID正常存在,name在当前发布存在,date正常存在,可修改
r($projectrelease->updateTest($releaseID[0], $name[0], $date[1])) && p('date:0') && e('『date』不能为空。'); //测试releaseID正常存在,name在当前发布存在,date为空,不可修改
r($projectrelease->updateTest($releaseID[0], $name[2], $date[0])) && p('0:field,new') && e('name,产品正常的正常的发布2'); //测试releaseID正常存在,name在发布中不存在,date正常存在,可修改
r($projectrelease->updateTest($releaseID[0], $name[2], $date[1])) && p('date:0') && e('『date』不能为空。'); //测试releaseID正常存在,name在发布中不存在,date为空,不可修改
r($projectrelease->updateTest($releaseID[0], $name[3], $date[0])) && p('name:0') && e('『name』不能为空。'); //测试releaseID正常存在,name为空,date正常存在,不可修改
r($projectrelease->updateTest($releaseID[0], $name[3], $date[1])) && p('name:0;date:0') && e('『name』不能为空。;『date』不能为空。'); //测试releaseID正常存在,name为空,date为空,不可修改
r($projectrelease->updateTest($releaseID[0], $name[1], $date[0])) && p('name:0') && e('『name』已经有『产品发布9』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。'); //测试releaseID正常存在,name在其他发布存在,date正常,不可修改
system("./ztest init");
@@ -136,7 +136,7 @@
<?php echo html::a(helper::createLink('setting', 'xuanxuan'), $lang->goback, '', 'class="btn" style="min-width: 120px"');?>
<?php else:?>
<?php $disabled = $config->xuanxuan->turnon ? '' : 'disabled';?>
<?php echo html::a(helper::createLink('setting', 'downloadXXD', 'type=package'), $lang->im->downloadXXD, 'hiddenwin', "class='btn btn-primary download download-package $disabled'");?>
<?php if(common::hasPriv('im', 'downloadXxdPackage')) echo html::a(helper::createLink('setting', 'downloadXXD', 'type=package'), $lang->im->downloadXXD, 'hiddenwin', "class='btn btn-primary download download-package $disabled'");?>
<?php echo html::a(helper::createLink('setting', 'downloadXXD', 'type=config'), $lang->im->downloadConfig, 'hiddenwin', "class='btn btn-primary download $disabled'");?>
<?php echo html::a(helper::createLink('setting', 'xuanxuan', 'type=edit'), $lang->im->changeSetting, '', "class='btn'");?>
<?php if($debug and common::hasPriv('im', 'debug')) echo html::a(helper::createLink('im', 'debug', 'source=setting'), $lang->im->viewDebug, '', "class='btn viewDebug iframe' data-height=220");?>