Merge branch 'master' of https://gitlab.zcorp.cc/easycorp/zentaopms
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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:?>
|
||||
|
||||
@@ -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>';
|
||||
|
||||
@@ -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'>
|
||||
|
||||
@@ -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' : '';?>
|
||||
|
||||
@@ -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']);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
Executable
+35
@@ -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');
|
||||
Executable
+25
@@ -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值是否正确
|
||||
Executable
+35
@@ -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');
|
||||
Executable
+38
@@ -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');
|
||||
Executable
+20
@@ -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');
|
||||
Executable
+20
@@ -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类型
|
||||
Executable
+26
@@ -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'); //分页状态下,用例库下用例数量
|
||||
Executable
+24
@@ -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¤tModuleID=0'); // 测试参数情况3返回值
|
||||
r($link4) && p() && e('model/caselib/getliblink.php?m=caselib&f=browse&t=&libID=%s'); // 测试参数情况4返回值
|
||||
Executable
+18
@@ -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'); //测试获取用例库的键值对
|
||||
Executable
+19
@@ -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');//测试获取列表某个用例库的名称信息
|
||||
Executable
+19
@@ -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'); //保存用例库状态之后返回值
|
||||
Executable
+22
@@ -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); //修改下拉菜单之后返回值
|
||||
Executable
+29
@@ -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');
|
||||
Executable
+23
@@ -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查找发布详情,不能查询到结果
|
||||
Executable
+25
@@ -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为空
|
||||
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/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
@@ -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为空
|
||||
Executable
+32
@@ -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");
|
||||
Executable
+23
@@ -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");
|
||||
Executable
+32
@@ -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");
|
||||
Executable
+42
@@ -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");?>
|
||||
|
||||
Reference in New Issue
Block a user