diff --git a/trunk/db/update0.6.sql b/trunk/db/update0.6.sql index bd2802f048..4db719fa93 100644 --- a/trunk/db/update0.6.sql +++ b/trunk/db/update0.6.sql @@ -7,8 +7,9 @@ ADD `scriptedBy` VARCHAR( 30 ) NOT NULL AFTER `executeType` , ADD `scriptedDate` DATE NOT NULL AFTER `scriptedBy` , ADD `scriptStatus` VARCHAR( 30 ) NOT NULL AFTER `scriptedDate` , ADD `scriptLocation` VARCHAR( 255 ) NOT NULL AFTER `scriptStatus` , -ADD `linkCase` MEDIUMINT UNSIGNED NOT NULL AFTER `scriptLocation` ; -ALTER TABLE `zt_case` ADD `scope` VARCHAR( 30 ) NOT NULL ; +ADD `linkCase` VARCHAR( 255 ) NOT NULL AFTER `scriptLocation` ; + +ALTER TABLE `zt_case` ADD `stage` VARCHAR( 255 ) NOT NULL ; -- 2010-03-23 userQuery表。 CREATE TABLE `zentao`.`zt_userQuery` ( diff --git a/trunk/module/testcase/config.php b/trunk/module/testcase/config.php index 28097ae00a..a91b3ae1bd 100644 --- a/trunk/module/testcase/config.php +++ b/trunk/module/testcase/config.php @@ -3,20 +3,24 @@ global $lang; $config->testcase->search['module'] = 'testcase'; $config->testcase->search['fields']['id'] = $lang->testcase->id; $config->testcase->search['fields']['title'] = $lang->testcase->title; +$config->testcase->search['fields']['keywords'] = $lang->testcase->keywords; $config->testcase->search['fields']['openedBy'] = $lang->testcase->openedBy; $config->testcase->search['fields']['lastEditedBy'] = $lang->testcase->lastEditedBy; $config->testcase->search['fields']['status'] = $lang->testcase->status; $config->testcase->search['fields']['pri'] = $lang->testcase->pri; $config->testcase->search['fields']['type'] = $lang->testcase->type; +$config->testcase->search['fields']['stage'] = $lang->testcase->stage; $config->testcase->search['fields']['openedDate'] = $lang->testcase->openedDate; $config->testcase->search['fields']['lastEditedDate'] = $lang->testcase->lastEditedDate; $config->testcase->search['params']['title'] = array('operator' => 'include', 'control' => 'input', 'values' => ''); +$config->testcase->search['params']['keywords'] = array('operator' => 'include', 'control' => 'input', 'values' => ''); $config->testcase->search['params']['openedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users'); $config->testcase->search['params']['lastEditedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users'); $config->testcase->search['params']['status'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->testcase->statusList); $config->testcase->search['params']['pri'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->testcase->priList); $config->testcase->search['params']['type'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->testcase->typeList); +$config->testcase->search['params']['stage'] = array('operator' => 'include', 'control' => 'select', 'values' => $lang->testcase->stageList); -$config->testcase->create->requiredFields = 'title'; -$config->testcase->edit->requiredFields = 'title'; +$config->testcase->create->requiredFields = 'title,type'; +$config->testcase->edit->requiredFields = 'title,type'; diff --git a/trunk/module/testcase/lang/zh-cn.php b/trunk/module/testcase/lang/zh-cn.php index e885145d8f..9796152227 100644 --- a/trunk/module/testcase/lang/zh-cn.php +++ b/trunk/module/testcase/lang/zh-cn.php @@ -40,6 +40,14 @@ $lang->testcase->lastEditedDate = '最后修改日期'; $lang->testcase->version = '用例版本'; $lang->testcase->result = '测试结果'; $lang->testcase->real = '实际情况'; +$lang->testcase->keywords = '关键词'; +$lang->testcase->executeType = '执行方式'; +$lang->testcase->scriptedBy = '由谁编写'; +$lang->testcase->scriptedDate = '编写日期'; +$lang->testcase->scriptedStatus = '脚本状态'; +$lang->testcase->scriptedLocation = '脚本位置'; +$lang->testcase->linkCase = '相关用例'; +$lang->testcase->stage = '适用阶段'; $lang->case = $lang->testcase; // 用于DAO检查时使用。因为case是系统关键字,所以无法定义该模块为case,只能使用testcase,但表还是使用的case。 $lang->testcase->stepID = '编号'; @@ -102,6 +110,14 @@ $lang->testcase->typeList['install'] = '安装部署'; $lang->testcase->typeList['security'] = '安全相关'; $lang->testcase->typeList['other'] = '其他'; +$lang->testcase->stageList[''] = ''; +$lang->testcase->stageList['unittest'] = '单元测试阶段'; +$lang->testcase->stageList['feature'] = '功能测试阶段'; +$lang->testcase->stageList['intergrate'] = '集成测试阶段'; +$lang->testcase->stageList['system'] = '系统测试阶段'; +$lang->testcase->stageList['smoke'] = '冒烟测试阶段'; +$lang->testcase->stageList['bvt'] = '版本验证阶段'; + $lang->testcase->statusList[''] = ''; $lang->testcase->statusList['normal'] = '正常'; $lang->testcase->statusList['blocked'] = '被阻塞'; diff --git a/trunk/module/testcase/model.php b/trunk/module/testcase/model.php index d81076c3b1..ef560197bc 100644 --- a/trunk/module/testcase/model.php +++ b/trunk/module/testcase/model.php @@ -47,8 +47,8 @@ class testcaseModel extends model ->setIF($this->post->story != false, 'storyVersion', $this->loadModel('story')->getVersion($this->post->story)) ->remove('steps,expects') ->setDefault('story', 0) - ->stripTags('title') - ->specialChars('steps') + ->specialChars('title') + ->join('stage', ',') ->get(); $this->dao->insert(TABLE_CASE)->data($case)->autoCheck()->batchCheck($this->config->testcase->create->requiredFields, 'notempty')->exec(); if(!$this->dao->isError()) @@ -80,7 +80,8 @@ class testcaseModel extends model { $case = $this->dao->findById($caseID)->from(TABLE_CASE)->fetch(); foreach($case as $key => $value) if(strpos($key, 'Date') !== false and !(int)substr($value, 0, 4)) $case->$key = ''; - if($case->story) $case->storyTitle = $this->dao->findById($case->story)->from(TABLE_STORY)->fetch('title'); + if($case->story) $case->storyTitle = $this->dao->findById($case->story)->from(TABLE_STORY)->fetch('title'); + if($case->linkCase) $case->linkCaseTitles = $this->dao->select('id,title')->from(TABLE_CASE)->where('id')->in($case->linkCase)->fetchPairs(); if($version == 0) $version = $case->version; $case->steps = $this->dao->select('*')->from(TABLE_CASESTEP)->where('`case`')->eq($caseID)->andWhere('version')->eq($version)->fetchAll(); $case->files = $this->loadModel('file')->getByObject('case', $caseID); @@ -128,7 +129,8 @@ class testcaseModel extends model ->add('version', $version) ->setIF($this->post->story != false and $this->post->story != $oldCase->story, 'storyVersion', $this->loadModel('story')->getVersion($this->post->story)) ->setDefault('story', 0) - ->stripTags('title') + ->specialChars('title') + ->join('stage', ',') ->remove('comment,steps,expects') ->get(); $this->dao->update(TABLE_CASE)->data($case)->autoCheck()->batchCheck($this->config->testcase->edit->requiredFields, 'notempty')->where('id')->eq((int)$caseID)->exec(); diff --git a/trunk/module/testcase/view/create.html.php b/trunk/module/testcase/view/create.html.php index e059830e22..8ab267c90a 100644 --- a/trunk/module/testcase/view/create.html.php +++ b/trunk/module/testcase/view/create.html.php @@ -29,22 +29,34 @@ testcase->create;?> testcase->lblProductAndModule;?> - - + + + + testcase->type;?> + testcase->typeList, 'feature', 'class=select-3');?> + + + testcase->stage;?> + testcase->stageList, '', "class='select-3' multiple='multiple'");?> + + + testcase->pri;?> + testcase->priList, '', 'class=select-3');?> + testcase->lblStory;?> - + testcase->title;?> - + testcase->steps;?> - + @@ -71,12 +83,10 @@ - - + + + diff --git a/trunk/module/testcase/view/edit.html.php b/trunk/module/testcase/view/edit.html.php index 239082c897..7738e5bc07 100644 --- a/trunk/module/testcase/view/edit.html.php +++ b/trunk/module/testcase/view/edit.html.php @@ -101,10 +101,18 @@ + + + + + + + + - - + + + + + +
testcase->stepID;?>
testcase->lblTypeAndPri;?> - testcase->typeList, '', 'class=select-2');?> - testcase->priList, '', 'class=select-2');?> - testcase->keywords;?>
testcase->module;?>
testcase->story;?>story, 'class=select-1');?>
testcase->type;?> testcase->typeList, $case->type, 'class=select-1');?>
testcase->stage;?>testcase->stageList, $case->stage, "class='select-1' multiple='multiple'");?>
testcase->pri;?> testcase->priList, $case->pri, 'class=select-1');?> @@ -114,8 +122,12 @@ testcase->statusList, $case->status, 'class=select-1');?>
testcase->story;?>story, 'class=select-1');?>testcase->keywords;?>keywords, 'class=text-1');?>
testcase->linkCase;?>linkCase, 'class=text-1');?>
diff --git a/trunk/module/testcase/view/view.html.php b/trunk/module/testcase/view/view.html.php index 056b844911..acdb70fc15 100644 --- a/trunk/module/testcase/view/view.html.php +++ b/trunk/module/testcase/view/view.html.php @@ -30,8 +30,9 @@ CASE #id . $lang->colon . $case->title;?>
session->caseList != false ? $app->session->caseList : $this->createLink('testcase', 'browse', "productID=$case->product"); common::printLink('testcase', 'edit', "caseID=$case->id", $lang->testcase->buttonEdit); - common::printLink('testcase', 'browse', "productID=$case->product", $lang->testcase->buttonToList); + echo html::a($browseLink, $lang->goback); ?>
@@ -68,15 +69,12 @@ --> -
- testcase->legendAction;?> -
- id", $lang->testcase->buttonEdit); - common::printLink('testcase', 'browse', "productID=$case->product", $lang->testcase->buttonToList); - ?> -
-
+
+ id", $lang->testcase->buttonEdit); + echo html::a($browseLink, $lang->goback); + ?> +
@@ -99,10 +97,34 @@ ?> + + testcase->story;?> + + storyTitle)) echo html::a($this->createLink('story', 'view', "storyID=$case->story"), "#$case->story:$case->storyTitle"); + ?> + + testcase->type;?> testcase->typeList[$case->type];?> + + testcase->stage;?> + + stage) + { + $stags = explode(',', $case->stage); + foreach($stags as $stage) + { + isset($lang->testcase->stageList[$stage]) ? print($lang->testcase->stageList[$stage]) : print($stage); + echo "
"; + } + } + ?> + + testcase->pri;?> pri;?> @@ -112,10 +134,20 @@ testcase->statusList[$case->status];?> - testcase->story;?> - + testcase->keywords;?> + keywords;?> + + + testcase->linkCase;?> + storyTitle)) echo html::a($this->createLink('story', 'view', "storyID=$case->story"), "#$case->story:$case->storyTitle"); + if(isset($case->linkCaseTitles)) + { + foreach($case->linkCaseTitles as $linkCaseID => $linkCaseTitle) + { + echo html::a($this->createLink('case', 'view', "caseID=$linkCaseID"), "#$linkCaseID $linkCaseTitle", '_blank') . '
'; + } + } ?> diff --git a/trunk/module/testtask/control.php b/trunk/module/testtask/control.php index c09a977e40..f96faaa799 100644 --- a/trunk/module/testtask/control.php +++ b/trunk/module/testtask/control.php @@ -91,6 +91,8 @@ class testtask extends control /* 查看一个task。*/ public function view($taskID) { + $this->app->loadLang('testcase'); + /* 获取task和产品信息,并设置菜单。*/ $task = $this->testtask->getById($taskID); $productID = $task->product; @@ -164,11 +166,14 @@ class testtask extends control $this->locate(inlink('view', "taskID=$taskID")); } + $this->session->set('caseList', $this->app->getURI(true)); + /* 获得task信息。*/ $task = $this->testtask->getById($taskID); $productID = common::saveProductState($task->product, key($this->products)); /* 构造搜索表单。*/ + $this->loadModel('testcase'); $this->config->testcase->search['params']['module']['values'] = $this->loadModel('tree')->getOptionMenu($productID, $viewType = 'case'); $this->config->testcase->search['actionURL'] = inlink('linkcase', "taskID=$taskID"); $this->view->searchForm = $this->fetch('search', 'buildForm', $this->config->testcase->search); diff --git a/trunk/module/testtask/view/view.html.php b/trunk/module/testtask/view/view.html.php index ba828fe94c..ef3e29a991 100644 --- a/trunk/module/testtask/view/view.html.php +++ b/trunk/module/testtask/view/view.html.php @@ -85,7 +85,7 @@ function checkall(checker) testcase->id;?> testcase->pri;?> - testcase->title;?> + testcase->title;?> testcase->type;?> testtask->assignedTo;?> testtask->lastRun;?>