* Finish task #36446.
This commit is contained in:
@@ -149,6 +149,7 @@ define('TABLE_TASKSPEC', '`' . $config->db->prefix . 'taskspec`');
|
||||
define('TABLE_TEAM', '`' . $config->db->prefix . 'team`');
|
||||
define('TABLE_PROJECTPRODUCT','`' . $config->db->prefix . 'projectproduct`');
|
||||
define('TABLE_PROJECTSTORY', '`' . $config->db->prefix . 'projectstory`');
|
||||
define('TABLE_PROJECTCASE', '`' . $config->db->prefix . 'projectcase`');
|
||||
define('TABLE_TASKESTIMATE', '`' . $config->db->prefix . 'taskestimate`');
|
||||
define('TABLE_EFFORT', '`' . $config->db->prefix . 'effort`');
|
||||
define('TABLE_BURN', '`' . $config->db->prefix . 'burn`');
|
||||
|
||||
@@ -115,6 +115,16 @@ CREATE TABLE IF NOT EXISTS `zt_projectspec` (
|
||||
UNIQUE KEY `project` (`project`,`version`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
-- DROP TABLE IF EXISTS `zt_projectcase`;
|
||||
CREATE TABLE `zt_projectcase` (
|
||||
`project` mediumint(8) unsigned NOT NULL DEFAULT '0',
|
||||
`product` mediumint(8) unsigned NOT NULL DEFAULT '0',
|
||||
`case` mediumint(8) unsigned NOT NULL DEFAULT '0',
|
||||
`version` smallint(6) NOT NULL DEFAULT '1',
|
||||
`order` smallint(6) unsigned NOT NULL,
|
||||
UNIQUE KEY `project` (`project`,`case`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
ALTER TABLE `zt_task` ADD `design` mediumint(8) unsigned NOT NULL AFTER `module`;
|
||||
ALTER TABLE `zt_task` ADD `version` smallint(6) NOT NULL AFTER `desc`;
|
||||
ALTER TABLE `zt_task` ADD `activatedDate` date NOT NULL AFTER `lastEditedDate`;
|
||||
|
||||
@@ -701,6 +701,15 @@ CREATE TABLE IF NOT EXISTS `zt_projectstory` (
|
||||
`order` smallint(6) unsigned NOT NULL,
|
||||
UNIQUE KEY `project` (`project`,`story`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_projectcase`;
|
||||
CREATE TABLE `zt_projectcase` (
|
||||
`project` mediumint(8) unsigned NOT NULL DEFAULT '0',
|
||||
`product` mediumint(8) unsigned NOT NULL DEFAULT '0',
|
||||
`case` mediumint(8) unsigned NOT NULL DEFAULT '0',
|
||||
`version` smallint(6) NOT NULL DEFAULT '1',
|
||||
`order` smallint(6) unsigned NOT NULL,
|
||||
UNIQUE KEY `project` (`project`,`case`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_release`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_release` (
|
||||
`id` mediumint(8) unsigned NOT NULL auto_increment,
|
||||
|
||||
@@ -87,7 +87,7 @@ class testcaseModel extends model
|
||||
$result = $this->loadModel('common')->removeDuplicate('case', $case, $param);
|
||||
if($result['stop']) return array('status' => 'exists', 'id' => $result['duplicate']);
|
||||
|
||||
/* value of story may be showmore. */
|
||||
/* Value of story may be showmore. */
|
||||
$case->story = (int)$case->story;
|
||||
$this->dao->insert(TABLE_CASE)->data($case)->autoCheck()->batchCheck($this->config->testcase->create->requiredFields, 'notempty')->exec();
|
||||
if(!$this->dao->isError())
|
||||
@@ -111,6 +111,27 @@ class testcaseModel extends model
|
||||
if($step->type == 'group') $parentStepID = $this->dao->lastInsertID();
|
||||
if($step->type == 'step') $parentStepID = 0;
|
||||
}
|
||||
|
||||
/* If the story is linked project, make the case link the project. */
|
||||
if(!empty($case->story))
|
||||
{
|
||||
$projects = $this->dao->select('project')->from(TABLE_PROJECTSTORY)->Where('story')->eq($case->story)->fetchAll('project');
|
||||
if(!empty($projects))
|
||||
{
|
||||
foreach($projects as $projectID => $project)
|
||||
{
|
||||
$lastOrder = (int)$this->dao->select('*')->from(TABLE_PROJECTCASE)->where('project')->eq($projectID)->orderBy('order_desc')->limit(1)->fetch('order');
|
||||
$data = new stdclass();
|
||||
$data->project = $projectID;
|
||||
$data->product = $case->product;
|
||||
$data->case = $caseID;
|
||||
$data->version = 1;
|
||||
$data->order = ++ $lastOrder;
|
||||
$this->dao->insert(TABLE_PROJECTCASE)->data($data)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return array('status' => 'created', 'id' => $caseID);
|
||||
}
|
||||
}
|
||||
@@ -249,7 +270,39 @@ class testcaseModel extends model
|
||||
->beginIF($auto == 'unit')->andWhere('t1.auto')->eq('unit')->fi()
|
||||
->beginIF($auto != 'unit')->andWhere('t1.auto')->ne('unit')->fi()
|
||||
->andWhere('t1.deleted')->eq('0')
|
||||
->orderBy($orderBy)->page($pager)->fetchAll('id');
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll('id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get project cases of a module.
|
||||
*
|
||||
* @param int $productID
|
||||
* @param int $moduleIdList
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @param string $auto no|unit
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getModuleProjectCases($productID, $branch = 0, $moduleIdList = 0, $orderBy = 'id_desc', $pager = null, $browseType = '', $auto = 'no')
|
||||
{
|
||||
return $this->dao->select('distinct t1.*, t2.*, t4.title as storyTitle')->from(TABLE_PROJECTCASE)->alias('t1')
|
||||
->leftJoin(TABLE_CASE)->alias('t2')->on('t1.case=t2.id')
|
||||
->leftJoin(TABLE_PROJECTSTORY)->alias('t3')->on('t3.story=t2.story')
|
||||
->leftJoin(TABLE_STORY)->alias('t4')->on('t3.story=t4.id')
|
||||
->where('t2.product')->eq((int)$productID)
|
||||
->beginIF($this->lang->navGroup->testcase != 'qa')->andWhere('t1.project')->eq($this->session->PRJ)->fi()
|
||||
->beginIF($branch)->andWhere('t2.branch')->eq($branch)->fi()
|
||||
->beginIF($moduleIdList)->andWhere('t2.module')->in($moduleIdList)->fi()
|
||||
->beginIF($browseType == 'wait')->andWhere('t2.status')->eq($browseType)->fi()
|
||||
->beginIF($auto == 'unit')->andWhere('t2.auto')->eq('unit')->fi()
|
||||
->beginIF($auto != 'unit')->andWhere('t2.auto')->ne('unit')->fi()
|
||||
->andWhere('t2.deleted')->eq('0')
|
||||
->orderBy($orderBy)
|
||||
->page($pager, 't1.case')
|
||||
->fetchAll('id');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -349,12 +402,20 @@ class testcaseModel extends model
|
||||
/* Set modules and browse type. */
|
||||
$modules = $moduleID ? $this->loadModel('tree')->getAllChildId($moduleID) : '0';
|
||||
$browseType = ($browseType == 'bymodule' and $this->session->caseBrowseType and $this->session->caseBrowseType != 'bysearch') ? $this->session->caseBrowseType : $browseType;
|
||||
$group = $this->lang->navGroup->testcase;
|
||||
|
||||
/* By module or all cases. */
|
||||
$cases = array();
|
||||
if($browseType == 'bymodule' or $browseType == 'all' or $browseType == 'wait')
|
||||
{
|
||||
$cases = $this->getModuleCases($productID, $branch, $modules, $sort, $pager, $browseType, $auto);
|
||||
if($group == 'project')
|
||||
{
|
||||
$cases = $this->getModuleProjectCases($productID, $branch, $modules, $sort, $pager, $browseType, $auto);
|
||||
}
|
||||
else
|
||||
{
|
||||
$cases = $this->getModuleCases($productID, $branch, $modules, $sort, $pager, $browseType, $auto);
|
||||
}
|
||||
}
|
||||
/* Cases need confirmed. */
|
||||
elseif($browseType == 'needconfirm')
|
||||
|
||||
@@ -455,7 +455,6 @@ class testtaskModel extends model
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_CASE)->where($query)
|
||||
->andWhere('id')->notIN($linkedCases)
|
||||
->beginIF($this->config->systemMode == 'new' and $this->lang->navGroup->testtask != 'qa')->andWhere('project')->eq($this->session->PRJ)->fi()
|
||||
->andWhere('status')->ne('wait')
|
||||
->andWhere('type')->ne('unit')
|
||||
->beginIF($task->branch)->andWhere('branch')->in("0,$task->branch")->fi()
|
||||
@@ -965,8 +964,20 @@ class testtaskModel extends model
|
||||
$row->assignedTo = '';
|
||||
$row->status = 'wait';
|
||||
if($type == 'bybuild') $row->assignedTo = zget($assignedToPairs, $caseID, '');
|
||||
|
||||
$this->dao->replace(TABLE_TESTRUN)->data($row)->exec();
|
||||
|
||||
/* When the cases linked the testtask, the cases link to the project. */
|
||||
if($this->lang->navGroup->testtask != 'qa')
|
||||
{
|
||||
$lastOrder = (int)$this->dao->select('*')->from(TABLE_PROJECTCASE)->where('project')->eq($projectID)->orderBy('order_desc')->limit(1)->fetch('order');
|
||||
$data = new stdclass();
|
||||
$data->project = $this->session->PRJ;
|
||||
$data->product = $this->session->product;
|
||||
$data->case = $caseID;
|
||||
$data->version = 1;
|
||||
$data->order = ++ $lastOrder;
|
||||
$this->dao->replace(TABLE_PROJECTCASE)->data($data)->exec();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user