Files
EasySoft-ZenTaoPMS/test/class/testcase.class.php
2022-04-11 10:48:52 +08:00

736 lines
23 KiB
PHP

<?php
class testcaseTest
{
public function __construct()
{
global $tester;
$this->objectModel = $tester->loadModel('testcase');
}
/**
* Test create a case.
*
* @param array $param
* @access public
* @return array
*/
public function createTest($param)
{
$bugID = 0;
$_POST['product'] = '1';
$_POST['module'] = '1821';
$_POST['type'] = 'feature';
$_POST['stage'] = array('', 'unittest');
$_POST['story'] = '4';
$_POST['color'] = '';
$_POST['pri'] = '3';
$_POST['precondition'] = '前置条件';
$_POST['steps'] = array('1' => '1','1.1' => '1.1', '1.2' => '1.2', '2' => '2', '3' => '3', '4' => '');
$_POST['stepType'] = array('1' => 'group','1.1' => 'item', '1.2' => 'item', '2' => 'step', '3' => 'item', '4' => 'step');
$_POST['expects'] = array('1' => '','1.1' => '', '1.2' => '', '2' => '', '3' => '', '4' => '');
$_POST['keywords'] = '关键词1,关键词2';
$_POST['status'] = 'normal';
$_POST['labels'] = array('');
$_POST['files'] = array('');
foreach($param as $field => $value) $_POST[$field] = $value;
$objects = $this->objectModel->create($bugID);
unset($_POST);
if(dao::isError()) return isset($param['type']) ? dao::getError()['type'][0] : dao::getError()['title'][0];
return $objects;
}
/**
* Test batch create cases.
*
* @param array $param
* @access public
* @return int
*/
function batchCreateTest($param)
{
$productID = 1;
$branch = 0;
$storyID = 0;
$module = array(0, 0, 0);
$story = array(0, 0, 0);
$title = array('测试批量创建1', '测试批量创建2', '测试批量创建3');
$color = array('#3da7f5', '', '#ffaf38');
$type = array('performance', 'config', 'install');
$pri = array('1', '2', '3');
$precondition = array('测试批量创建前置1', '测试批量创建前置2', '测试批量创建前置3');
$keywords = array('测试批量创建关键词1', '测试批量创建关键词2', '测试批量创建关键词3');
$stage = array(array('smoke'), array('bvt'), array('intergrate'));
$needReview = array(0, 0, 0);
$_POST['module'] = $module;
$_POST['story'] = $story;
$_POST['title'] = $title;
$_POST['color'] = $color;
$_POST['type'] = $type;
$_POST['pri'] = $pri;
$_POST['precondition'] = $precondition;
$_POST['keywords'] = $keywords;
$_POST['stage'] = $stage;
$_POST['needReview'] = $needReview;
foreach($param as $field => $value) $_POST[$field] = $value;
$objects = $this->objectModel->batchCreate($productID, $branch, $storyID);
unset($_POST);
if(dao::isError()) return dao::getError();
return count($objects);
}
/**
* Test get cases of a module.
*
* @param int $productID
* @param int $branch
* @param int $moduleIdList
* @param string $orderBy
* @param object $pager
* @param string $browseType
* @param string $auto
* @access public
* @return array
*/
public function getModuleCasesTest($productID, $branch = 0, $moduleIdList = 0, $orderBy = 'id_desc', $pager = null, $browseType = '', $auto = 'no')
{
$objects = $this->objectModel->getModuleCases($productID, $branch, $moduleIdList, $orderBy, $pager, $browseType, $auto);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test get project cases of a module.
*
* @param int $productID
* @param int $branch
* @param int $moduleIdList
* @param string $orderBy
* @param object $pager
* @param string $browseType
* @param string $auto
* @access public
* @return array
*/
public function getModuleProjectCasesTest($productID, $branch = 0, $moduleIdList = 0, $orderBy = 'id_desc', $pager = null, $browseType = '', $auto = 'no')
{
$objects = $this->objectModel->getModuleProjectCases($productID, $branch, $moduleIdList, $orderBy, $pager, $browseType, $auto);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test get execution cases.
*
* @param int $executionID
* @param string $orderBy
* @param object $pager
* @param string $browseType
* @access public
* @return string
*/
public function getExecutionCasesTest($executionID, $orderBy = 'id_desc', $pager = null, $browseType = '')
{
$objects = $this->objectModel->getExecutionCases($executionID, $orderBy, $pager, $browseType);
if(dao::isError()) return dao::getError();
return $browseType == 'all' ? $objects : count($objects);
}
/**
* Test get cases by suite.
*
* @param int $productID
* @param int $branch
* @param int $suiteID
* @param int $moduleIdList
* @param string $orderBy
* @param object $pager
* @param string $auto
* @access public
* @return array
*/
public function getBySuiteTest($productID, $branch = 0, $suiteID = 0, $moduleIdList = 0, $orderBy = 'id_desc', $pager = null, $auto = 'no')
{
$objects = $this->objectModel->getBySuite($productID, $branch, $suiteID, $moduleIdList, $orderBy, $pager, $auto);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test get case info by ID.
*
* @param int $caseID
* @param int $version
* @access public
* @return object
*/
public function getByIdTest($caseID, $version = 0)
{
$object = $this->objectModel->getById($caseID, $version = 0);
if(dao::isError()) return dao::getError();
return $object;
}
/**
* Test get case list.
*
* @param string $caseIDList
* @access public
* @return array
*/
public function getByListTest($caseIDList = 0)
{
$objects = $this->objectModel->getByList($caseIDList = 0);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test get test cases.
*
* @param int $productID
* @param string $browseType
* @param int $queryID
* @param string $auto
* @access public
* @return array
*/
public function getTestCasesTest($productID, $browseType, $queryID, $auto = 'no')
{
$objects = $this->objectModel->getTestCases($productID, 0, $browseType, $queryID, $moduleID, 'id_desc', null, $auto);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test get cases by assignedTo.
*
* @param string $account
* @param string $orderBy
* @param object $pager
* @param string $auto
* @access public
* @return string
*/
public function getByAssignedToTest($account, $orderBy = 'id_desc', $pager = null, $auto = 'no')
{
$objects = $this->objectModel->getByAssignedTo($account, $orderBy = 'id_desc', $pager = null, $auto = 'no');
if(dao::isError()) return dao::getError();
$ids = implode(array_keys($objects), ',');
return $ids;
}
/**
* Test get cases by openedBy
*
* @param string $account
* @param string $orderBy
* @param object $pager
* @param string $auto
* @access public
* @return array
*/
public function getByOpenedByTest($account, $orderBy = 'id_desc', $pager = null, $auto = 'no')
{
$objects = $this->objectModel->getByOpenedBy($account, $orderBy = 'id_desc', $pager = null, $auto = 'no');
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test get cases by type.
*
* @param int $productID
* @param int $branch
* @param string $type
* @param string $status
* @param int $moduleID
* @param string $orderBy
* @param object $pager
* @param string $auto
* @access public
* @return int
*/
public function getByStatusTest($productID = 0, $branch = 0, $type = 'all', $status = 'all', $moduleID = 0, $orderBy = 'id_desc', $pager = null, $auto = 'no')
{
$objects = $this->objectModel->getByStatus($productID, $branch, $type, $status, $moduleID, $orderBy, $pager, $auto);
if(dao::isError()) return dao::getError();
return count($objects);
}
/**
* Test get stories' cases.
*
* @param int $storyID
* @access public
* @return array
*/
public function getStoryCasesTest($storyID)
{
$objects = $this->objectModel->getStoryCases($storyID);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test get counts of some stories' cases.
*
* @param array $stories
* @access public
* @return void
*/
public function getStoryCaseCountsTest($stories)
{
$counts = $this->objectModel->getStoryCaseCounts($stories);
if(dao::isError()) return dao::getError();
return $counts;
}
/**
* Test update a case.
*
* @param array $param
* @access public
* @return int
*/
public function updateTest($param = array())
{
$caseId = 1;
$case = $this->objectModel->getById($caseId);
$_POST['title'] = $case->title;
$_POST['color'] = $case->color;
$_POST['precondition'] = $case->precondition;
$_POST['steps'] = array('用例步骤描述1');
$_POST['stepType'] = array('step');
$_POST['expects'] = array('这是用例预期结果1');
$_POST['comment'] = '';
$_POST['labels'] = '';
$_POST['lastEditedDate'] = $case->lastEditedDate;
$_POST['product'] = $case->product;
$_POST['module'] = $case->module;
$_POST['story'] = $case->story;
$_POST['type'] = $case->type;
$_POST['stage'] = $case->stage;
$_POST['pri'] = $case->pri;
$_POST['status'] = $case->status;
$_POST['keywords'] = $case->keywords;
foreach($param as $field => $value) $_POST[$field] = $value;
$change = $this->objectModel->update('1');
if($change == array()) $change = '没有数据更新';
unset($_POST);
if(dao::isError()) return dao::getError();
return $change;
}
/**
* Test review case.
*
* @param int $caseID
* @param object $case
* @access public
* @return array
*/
public function reviewTest($caseID, $case)
{
foreach($case as $field => $value) $_POST[$field] = $value;
$objects = $this->objectModel->review($caseID);
unset($_POST);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test batch review cases.
*
* @param array $caseIdList
* @param string $result
* @access public
* @return array
*/
public function batchReviewTest($caseIdList, $result)
{
$objects = $this->objectModel->batchReview($caseIdList, $result);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test batch update cases.
*
* @param array $param
* @access public
* @return array
*/
public function batchUpdateTest($index, $param = array())
{
$batchUpdateField['caseIDList'] = array('1' => 1, '2' => 2, '3' => 3, '4' => 4);
$batchUpdateField['pris'] = array('1' => 1, '2' => 2, '3' => 3, '4' => 4);
$batchUpdateField['statuses'] = array('1' => 'wait', '2' => 'normal', '3' => 'blocked', '4' => 'investigate');
$batchUpdateField['modules'] = array('1' => 0, '2' => 0, '3' => 0, '4' => 0);
$batchUpdateField['branches'] = array('1' => 0, '2' => 0, '3' => 0, '4' => 0);
$batchUpdateField['story'] = array('1' => 2, '2' => 2, '3' => 2, '4' => 2);
$batchUpdateField['product'] = array('1' => 1, '2' => 1, '3' => 1, '4' => 1);
$batchUpdateField['title'] = array('1' => '这个是测试用例1', '2' => '这个是测试用例2', '3' => '这个是测试用例3', '4' => '这个是测试用例4');
$batchUpdateField['color'] = array('1' => '#3da7f5', '2' => '#75c941', '3' => '#2dbdb2', '4' => '#797ec9');
$batchUpdateField['types'] = array('1' => 'feature', '2' => 'performance', '3' => 'config', '4' => 'install');
$batchUpdateField['precondition'] = array('1' => '这是前置条件1', '2' => '这是前置条件2', '3' => '这是前置条件3', '4' => '这是前置条件4');
$batchUpdateField['keywords'] = array('1' => '这是关键词1', '2' => '这是关键词2', '3' => '这是关键词3', '4' => '这是关键词4');
$batchUpdateField['stages'] = array('1' => array('unittest'), '2' => array('feature'), '3' => array('intergrate'), '4' => array('system'));
foreach($batchUpdateField as $field => $defaultValue) $_POST[$field] = $defaultValue;
foreach($param as $key => $value) $_POST[$key] = $value;
$objects = $this->objectModel->batchUpdate();
unset($_POST);
if(dao::isError()) return dao::getError();
return $objects[$index][0];
}
/**
* Test batch change branch.
*
* @param array $caseIDList
* @param int $branchID
* @access public
* @return array
*/
public function batchChangeBranchTest($caseIDList, $branchID)
{
$this->objectModel->batchChangeBranch($caseIDList, $branchID);
if(dao::isError()) return dao::getError();
$objects = $this->objectModel->getByList($caseIDList);
return $objects;
}
/**
* Test batch change module.
*
* @param array $caseIDList
* @param int $moduleID
* @access public
* @return array
*/
public function batchChangeModuleTest($caseIDList, $moduleID)
{
$this->objectModel->batchChangeModule($caseIDList, $moduleID);
if(dao::isError()) return dao::getError();
$objects = $this->objectModel->getByList($caseIDList);
return $objects;
}
/**
* Test batch case type change.
*
* @param array $caseIdList
* @param string $result
* @access public
* @return array
*/
public function batchCaseTypeChangeTest($caseIdList, $result)
{
$this->objectModel->batchCaseTypeChange($caseIdList, $result);
if(dao::isError()) return dao::getError();
$objects = $this->objectModel->getByList($caseIdList);
return $objects;
}
/**
* Test join steps to a string, thus can diff them.
*
* @param array $stepIDList
* @access public
* @return string
*/
public function joinStepTest($stepIDList)
{
global $tester;
$steps = $tester->dao->select('*')->from(TABLE_CASESTEP)->where('id')->in($stepIDList)->fetchAll();
$string = $this->objectModel->joinStep($steps);
if(dao::isError()) return dao::getError();
$string = str_replace("\n", ' ', $string);
return $string;
}
/**
* Test create from import.
*
* @param int $productID
* @param array $param
* @access public
* @return string
*/
public function createFromImportTest($productID, $param = array())
{
global $tester;
$_POST['product'] = array('1' => '1', '2' => '1');
$_POST['keywords'] = array('1' => '这是关键词1', '2' => '这是关键词2');
$_POST['title'] = array('1' => '导入测试用例1', '2' => '导入测试用例2');
$_POST['module'] = array('1' => '0', '2' => '0');
$_POST['story'] = array('1' => '2', '2' => '2');
$_POST['pri'] = array('1' => '1', '2' => '2');
$_POST['type'] = array('1' => 'performance', '2' => 'feature');
$_POST['stage'] = array('1' => array('0' => 'feature'), '2' => array('0' => 'unittest'));
$_POST['precondition'] = array('1' => '这是前置条件1', '2' => '这是前置条件2');
$_POST['stepType'] = array('1' => array('1' => 'step'), '2' => array('1' => 'step'));
$_POST['desc'] = array('1' => array('1' => '用例步骤描述1'), '2' => array('1' => '用例步骤描述2'));
$_POST['expect'] = array('1' => array('1' => '这是用例预期结果1'), '2' => array('1' => '这是用例预期结果2'));
$_POST['isEndPage'] = '1';
$_POST['pagerID'] = '1';
foreach($param as $field => $value) $_POST[$field] = $value;
$fileName = __DIR__ . DS . 'a.txt';
fopen($fileName, 'a');
$tester->session->fileImport = $fileName;
$this->objectModel->createFromImport($productID, 0);
unset($_POST);
if(dao::isError()) return dao::getError();
$objects = $tester->dao->select('*')->from(TABLE_CASE)->where('product')->eq(1)->andWhere('lib')->eq(0)->markLeft()->andWhere('id')->gt(560)->orWhere('id')->in('1,2')->markRight()->fetchAll('title');
$titles = implode(',', array_keys($objects));
return $titles;
}
/**
* Test get fields for import.
*
* @param int $productID
* @access public
* @return array
*/
public function getImportFieldsTest($productID = 0)
{
$object = $this->objectModel->getImportFields($productID);
if(dao::isError()) return dao::getError();
return $object;
}
/**
* Test import case from Lib.
*
* @param int $productID
* @param array $caseIdList
* @access public
* @return array
*/
public function importFromLibTest($productID, $caseIdList = array())
{
$_POST['module'] = array('410' => 0, '409' => 'ditto', '408' => 'ditto', '407' => 'ditto', '406' => 'ditto', '405' => 'ditto', '404' => 'ditto', '403' => 'ditto', '402' => 'ditto', '401' => 'ditto');
$_POST['caseIdList'] = $caseIdList;
$this->objectModel->importFromLib($productID);
unset($_POST);
if(dao::isError()) return dao::getError();
global $tester;
$objects = $tester->dao->select('*')->from(TABLE_CASE)->where('fromCaseID')->in($caseIdList)->orderBy('id_asc')->fetchAll();
return $objects;
}
/**
* Test append bugs and results.
*
* @param array $cases
* @param string $type
* @access public
* @return array
*/
public function appendDataTest($cases, $type = 'case')
{
$objects = $this->objectModel->appendData($cases, $type = 'case');
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test check whether force not review.
*
* @access public
* @return int
*/
public function forceNotReviewTest()
{
$object = $this->objectModel->forceNotReview();
if(dao::isError()) return dao::getError();
return $object ? 1 : 2;
}
/**
* Test sync case to project.
*
* @param int $caseID
* @access public
* @return int
*/
public function syncCase2ProjectTest($caseID)
{
global $tester;
$tester->dao->delete()->from(TABLE_PROJECTCASE)->where('`case`')->eq($caseID)->exec();
$case = $this->objectModel->getByID($caseID);
$this->objectModel->syncCase2Project($case, $caseID);
if(dao::isError()) return dao::getError();
$objects = $tester->dao->select('*')->from(TABLE_PROJECTCASE)->where('`case`')->eq($caseID)->fetchAll();
return count($objects);
}
/**
* Test deal with the relationship between the case and project when edit the case.
*
* @param int $caseID
* @param string $objectType
* @param int $objectID
* @access public
* @return array
*/
public function updateCase2ProjectTest($caseID, $objectType, $objectID)
{
$oldCase = $this->objectModel->getByID($caseID);
$case = new stdclass();
$case->title = $oldCase->title;
$case->color = $oldCase->color;
$case->precondition = $oldCase->precondition;
$case->lastEditedDate = $oldCase->lastEditedDate;
$case->product = $objectType == 'product' ? $objectID : $oldCase->product;
$case->module = $oldCase->module;
$case->story = $objectType == 'story' ? $objectID : $oldCase->story;
$case->type = $oldCase->type;
$case->stage = $oldCase->stage;
$case->pri = $oldCase->pri;
$case->status = $oldCase->status;
$case->keywords = $oldCase->keywords;
$case->version = $oldCase->version + 1;
$case->linkCase = $oldCase->linkCase;
$case->lastEditedBy = $oldCase->lastEditedBy;
$case->branch = $oldCase->branch;
$this->objectModel->updateCase2Project($oldCase, $case, $caseID);
if(dao::isError()) return dao::getError();
global $tester;
$objects = $tester->dao->select('*')->from(TABLE_PROJECTCASE)->where('`case`')->eq($caseID)->fetchAll();
return $objects;
}
/**
* Test get status for different method.
*
* @param string $methodName
* @param object $case
* @param array $param
* @access public
* @return array
*/
public function getStatusTest($methodName, $case = null, $param = array())
{
if($methodName == 'update')
{
$case = $this->objectModel->getByID(1);
$_POST['title'] = $case->title;
$_POST['color'] = $case->color;
$_POST['precondition'] = $case->precondition;
$_POST['steps'] = array('用例步骤描述1');
$_POST['stepType'] = array('step');
$_POST['expects'] = array('这是用例预期结果1');
$_POST['comment'] = '';
$_POST['labels'] = '';
$_POST['lastEditedDate'] = $case->lastEditedDate;
$_POST['product'] = $case->product;
$_POST['module'] = $case->module;
$_POST['story'] = $case->story;
$_POST['type'] = $case->type;
$_POST['stage'] = $case->stage;
$_POST['pri'] = $case->pri;
$_POST['status'] = $case->status;
$_POST['keywords'] = $case->keywords;
foreach($param as $field => $value) $_POST[$field] = $value;
}
$objects = $this->objectModel->getStatus($methodName, $case);
unset($_POST);
if(dao::isError()) return dao::getError()[0];
return $objects;
}
}