+ testcaseModel: add method to get scene list include sub scenes and cases.

This commit is contained in:
liugang
2023-08-10 16:28:37 +08:00
parent d67065f93f
commit 5ac3ab72e6
+82
View File
@@ -3594,6 +3594,88 @@ class testcaseModel extends model
return substr($scenePath,34);
}
/**
* Get scene list include sub scenes and cases.
*
* @param int $productID
* @param int $branch
* @param int $moduleID
* @param string $orderBy
* @param object $pager
* @access public
* @return array
*/
public function getSceneGroups($productID, $branch = 0, $moduleID = 0, $orderBy = 'id_desc', $pager = null)
{
$scenes = $this->dao->select('*')->from(TABLE_SCENE)
->where('product')->eq($productID)
->beginIF($branch)->andWhere('branch')->eq($branch)->fi()
->beginIF($moduleID)->andWhere('module')->eq($moduleID)->fi()
->orderBy('grade_desc, id_asc')
->fetchAll('id');
if(!$scenes) return array();
$cases = array();
if($scenes && !$this->cookie->onlyScene)
{
$caseList = $this->dao->select('*')->from(TABLE_CASE)
->where('deleted')->eq('0')
->andWhere('scene')->ne(0)
->andWhere('product')->eq($productID)
->beginIF($branch)->andWhere('branch')->eq($branch)->fi()
->beginIF($moduleID)->andWhere('module')->eq($moduleID)->fi()
->orderBy($orderBy)
->fetchAll('id');
$caseList = $this->appendData($caseList);
foreach($caseList as $case) $cases[$case->scene][$case->id] = $case;
}
$this->dao->setTable(TABLE_CASE);
$fieldTypes = $this->dao->getFieldsType();
foreach($scenes as $id => $scene)
{
/* Set default value for the fields exist in TABLE_CASE but not in TABLE_SCENE. */
foreach($fieldTypes as $field => $type)
{
if(isset($scene->$field)) continue;
$scene->$field = $type['rule'] == 'int' ? '0' : '';
}
$scene->bugs = 0;
$scene->results = 0;
$scene->caseFails = 0;
$scene->stepNumber = 0;
$scene->isCase = 2;
if(isset($cases[$id]))
{
foreach($cases[$id] as $case)
{
$case->id = $id . '_' . $case->id;
$case->parent = $id;
$case->grade = $scene->grade + 1;
$case->path = $scene->path . $case->id . ',';
$case->isCase = 1;
$scene->cases[$case->id] = $case;
}
}
if(!isset($scenes[$scene->parent])) continue;
$parent = $scenes[$scene->parent];
$parent->children[$id] = $scene;
unset($scenes[$id]);
}
$pager->recTotal = count($scenes);
$pager->pageTotal = ceil($pager->recTotal / $pager->recPerPage);
return array_slice($scenes, $pager->recPerPage * ($pager->pageID - 1), $pager->recPerPage);
}
/**
* Get scene menu.
*