* rewrite the comment of testcase module.

This commit is contained in:
wangchunsheng
2010-11-18 02:23:01 +00:00
parent 928538685f
commit 98e923c438
2 changed files with 130 additions and 42 deletions
+75 -22
View File
@@ -13,7 +13,12 @@ class testcase extends control
{
private $products = array();
/* 构造函数,加载story, release, tree等模块。*/
/**
* Construct function, load product, tree, user auto.
*
* @access public
* @return void
*/
public function __construct()
{
parent::__construct();
@@ -23,35 +28,53 @@ class testcase extends control
$this->view->products = $this->products = $this->product->getPairs();
}
/* case首页。*/
/**
* Index page.
*
* @access public
* @return void
*/
public function index()
{
$this->locate($this->createLink('testcase', 'browse'));
}
/* 浏览一个产品下面的case。*/
/**
* Browse cases.
*
* @param int $productID
* @param string $browseType
* @param int $param
* @param string $orderBy
* @param int $recTotal
* @param int $recPerPage
* @param int $pageID
* @access public
* @return void
*/
public function browse($productID = 0, $browseType = 'byModule', $param = 0, $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
{
/* 设置浏览模式,产品ID和模块ID。 */
/* Set browseType, productID, moduleID and queryID. */
$browseType = strtolower($browseType);
$productID = $this->product->saveState($productID, key($this->products));
$moduleID = ($browseType == 'bymodule') ? (int)$param : 0;
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
/* 设置菜单,登记session。*/
/* Set menu, save session. */
$this->testcase->setMenu($this->products, $productID);
$this->session->set('caseList', $this->app->getURI(true));
/* 加载分页类。*/
/* Load pager. */
$this->app->loadClass('pager', $static = true);
$pager = pager::init($recTotal, $recPerPage, $pageID);
/* 如果是按照模块查找,或者列出所有。*/
/* By module or all cases. */
if($browseType == 'bymodule' or $browseType == 'all')
{
$childModuleIds = $this->tree->getAllChildId($moduleID);
$this->view->cases = $this->testcase->getModuleCases($productID, $childModuleIds, $orderBy, $pager);
}
/* Cases need confirmed. */
elseif($browseType == 'needconfirm')
{
$this->view->cases = $this->dao->select('t1.*, t2.title AS storyTitle')->from(TABLE_CASE)->alias('t1')->leftJoin(TABLE_STORY)->alias('t2')->on('t1.story = t2.id')
@@ -61,6 +84,7 @@ class testcase extends control
->orderBy($orderBy)
->fetchAll();
}
/* By search. */
elseif($browseType == 'bysearch')
{
if($queryID)
@@ -81,21 +105,21 @@ class testcase extends control
if($this->session->testcaseQuery == false) $this->session->set('testcaseQuery', ' 1 = 1');
}
$caseQuery = str_replace("`product` = 'all'", '1', $this->session->testcaseQuery); // 如果指定了搜索所有的产品,去掉这个查询条件。
$caseQuery = str_replace("`product` = 'all'", '1', $this->session->testcaseQuery); // If product is all, change it to 1=1.
$this->view->cases = $this->dao->select('*')->from(TABLE_CASE)->where($caseQuery)
->andWhere('product')->eq($productID)
->andWhere('deleted')->eq(0)
->orderBy($orderBy)->page($pager)->fetchAll();
}
/* 构造搜索表单。*/
/* Build the search form. */
$this->config->testcase->search['params']['product']['values']= array($productID => $this->products[$productID], 'all' => $this->lang->testcase->allProduct);
$this->config->testcase->search['params']['module']['values'] = $this->loadModel('tree')->getOptionMenu($productID, $viewType = 'case');
$this->config->testcase->search['actionURL'] = $this->createLink('testcase', 'browse', "productID=$productID&browseType=bySearch&queryID=myQueryID");
$this->config->testcase->search['queryID'] = $queryID;
$this->view->searchForm = $this->fetch('search', 'buildForm', $this->config->testcase->search);
/* 赋值。*/
/* Assign. */
$this->view->header->title = $this->products[$productID] . $this->lang->colon . $this->lang->testcase->common;
$this->view->position[] = html::a($this->createLink('testcase', 'browse', "productID=$productID"), $this->products[$productID]);
$this->view->position[] = $this->lang->testcase->common;
@@ -112,7 +136,14 @@ class testcase extends control
$this->display();
}
/* 创建case。*/
/**
* Create a test case.
*
* @param int $productID
* @param int $moduleID
* @access public
* @return void
*/
public function create($productID, $moduleID = 0)
{
$this->loadModel('story');
@@ -126,10 +157,11 @@ class testcase extends control
}
if(empty($this->products)) $this->locate($this->createLink('product', 'create'));
/* Set productID and currentModuleID. */
$productID = $this->product->saveState($productID, key($this->products));
$currentModuleID = (int)$moduleID;
/* 设置菜单。*/
/* Set menu. */
$this->testcase->setMenu($this->products, $productID);
$header['title'] = $this->products[$productID] . $this->lang->colon . $this->lang->testcase->create;
@@ -149,22 +181,26 @@ class testcase extends control
$this->display();
}
/* 查看一个case。*/
/**
* View a test case.
*
* @param int $caseID
* @param int $version
* @access public
* @return void
*/
public function view($caseID, $version = 0)
{
/* 获取case和产品信息,并设置菜单。*/
$case = $this->testcase->getById($caseID, $version);
if(!$case) die(js::error($this->lang->notFound) . js::locate('back'));
$productID = $case->product;
$this->testcase->setMenu($this->products, $productID);
/* 导航信息。*/
$this->view->header['title'] = $this->products[$productID] . $this->lang->colon . $this->lang->testcase->view;
$this->view->position[] = html::a($this->createLink('testcase', 'browse', "productID=$productID"), $this->products[$productID]);
$this->view->position[] = $this->lang->testcase->view;
/* 赋值。*/
$this->view->case = $case;
$this->view->productName = $this->products[$productID];
$this->view->modulePath = $this->tree->getParents($case->module);
@@ -174,12 +210,17 @@ class testcase extends control
$this->display();
}
/* 编辑一个case。*/
/**
* Edit a case.
*
* @param int $caseID
* @access public
* @return void
*/
public function edit($caseID)
{
$this->loadModel('story');
/* 更新case信息。*/
if(!empty($_POST))
{
$changes = $this->testcase->update($caseID);
@@ -197,7 +238,6 @@ class testcase extends control
die(js::locate($this->createLink('testcase', 'view', "caseID=$caseID"), 'parent'));
}
/* 生成表单。*/
$case = $this->testcase->getById($caseID);
if(empty($case->steps))
{
@@ -211,7 +251,7 @@ class testcase extends control
$position[] = html::a($this->createLink('testcase', 'browse', "productID=$productID"), $this->products[$productID]);
$position[] = $this->lang->testcase->edit;
/* 设置菜单。*/
/* Set menu. */
$this->testcase->setMenu($this->products, $productID);
$users = $this->user->getPairs();
@@ -232,7 +272,14 @@ class testcase extends control
$this->display();
}
/* 删除用例。*/
/**
* Delete a test case
*
* @param int $caseID
* @param string $confirm yes|noe
* @access public
* @return void
*/
public function delete($caseID, $confirm = 'no')
{
if($confirm == 'no')
@@ -246,7 +293,13 @@ class testcase extends control
}
}
/* 确认需求变动。*/
/**
* Confirm story changes.
*
* @param int $caseID
* @access public
* @return void
*/
public function confirmStoryChange($caseID)
{
$case = $this->testcase->getById($caseID);
+55 -20
View File
@@ -13,24 +13,30 @@
<?php
class testcaseModel extends model
{
/* 设置菜单。*/
/**
* Set menu.
*
* @param array $products
* @param int $productID
* @access public
* @return void
*/
public function setMenu($products, $productID)
{
$selectHtml = html::select('productID', $products, $productID, "onchange=\"switchProduct(this.value, 'testcase', 'browse');\"");
foreach($this->lang->testcase->menu as $key => $menu)
{
if($key == 'product')
{
common::setMenuVars($this->lang->testcase->menu, 'product', $selectHtml . $this->lang->arrow);
}
else
{
common::setMenuVars($this->lang->testcase->menu, $key, $productID);
}
$replace = ($key == 'product') ? $selectHtml : $productID;
common::setMenuVars($this->lang->testcase->menu, $key, $replace);
}
}
/* 创建一个Case。*/
/**
* Create a case.
*
* @access public
* @return void
*/
function create()
{
$now = helper::now();
@@ -63,7 +69,16 @@ class testcaseModel extends model
}
}
/* 获得某一个产品,某一个模块下面的所有case。*/
/**
* Get cases of a module.
*
* @param int $productID
* @param int $moduleIds
* @param string $orderBy
* @param object $pager
* @access public
* @return array
*/
public function getModuleCases($productID, $moduleIds = 0, $orderBy = 'id_desc', $pager = null)
{
return $this->dao->select('*')->from(TABLE_CASE)
@@ -73,7 +88,14 @@ class testcaseModel extends model
->orderBy($orderBy)->page($pager)->fetchAll();
}
/* 获取一个case的详细信息。*/
/**
* Get case info by ID.
*
* @param int $caseID
* @param int $version
* @access public
* @return object|bool
*/
public function getById($caseID, $version = 0)
{
$case = $this->dao->findById($caseID)->from(TABLE_CASE)->fetch();
@@ -93,7 +115,13 @@ class testcaseModel extends model
return $case;
}
/* 更新case信息。*/
/**
* Update a case.
*
* @param int $caseID
* @access public
* @return void
*/
public function update($caseID)
{
$oldCase = $this->getById($caseID);
@@ -101,22 +129,23 @@ class testcaseModel extends model
$stepChanged = false;
$steps = array();
//---------------- 判断步骤是否发生了变化。-------------------- */
/* 先去除post变量中空的步骤。 */
//---------------- Judge steps changed or not.-------------------- */
/* Remove the empty setps in post. */
foreach($this->post->steps as $key => $desc)
{
$desc = trim($desc);
if(!empty($desc)) $steps[] = array('desc' => $desc, 'expect' => trim($this->post->expects[$key]));
}
/* 如果步骤的数量不同,发生了变化。*/
/* If step count changed, case changed. */
if(count($oldCase->steps) != count($steps))
{
$stepChanged = true;
}
else
{
/* 比较每一个步骤是否有不同。*/
/* Compare every step. */
foreach($oldCase->steps as $key => $oldStep)
{
if(trim($oldStep->desc) != trim($steps[$key]['desc']) or trim($oldStep->expect) != $steps[$key]['expect'])
@@ -128,7 +157,7 @@ class testcaseModel extends model
}
$version = $stepChanged ? $oldCase->version + 1 : $oldCase->version;
$case = fixer::input('post')
$case = fixer::input('post')
->add('lastEditedBy', $this->app->user->account)
->add('lastEditedDate', $now)
->add('version', $version)
@@ -154,7 +183,7 @@ class testcaseModel extends model
}
}
/* 将步骤合并为字符串,以计算diff。*/
/* Join the steps to diff. */
if($stepChanged)
{
$oldCase->steps = $this->joinStep($oldCase->steps);
@@ -168,7 +197,13 @@ class testcaseModel extends model
}
}
/* 合并步骤。*/
/**
* Join steps to a string, thus can diff them.
*
* @param array $steps
* @access private
* @return string
*/
private function joinStep($steps)
{
$retrun = '';