diff --git a/module/testcase/model.php b/module/testcase/model.php index 0fea861510..f5c10aab36 100644 --- a/module/testcase/model.php +++ b/module/testcase/model.php @@ -1247,9 +1247,9 @@ class testcaseModel extends model else { /* Compare every step. */ - foreach($oldStep as $id => $oldStep) + foreach($oldStep as $id => $step) { - if(trim($oldStep->desc) != trim($steps[$id]->desc) or trim($oldStep->expect) != $steps[$id]->expect) + if(trim($step->desc) != trim($steps[$id]->desc) or trim($step->expect) != $steps[$id]->expect) { $stepChanged = true; break; @@ -1388,10 +1388,14 @@ class testcaseModel extends model if($module != 'ditto') $prevModule = $module; if($module == 'ditto') $data->module[$i] = $prevModule; } - foreach($data->branch as $i => $branch) + + if(isset($data->branch)) { - if($branch != 'ditto') $prevBranch = $branch; - if($branch == 'ditto') $data->branch[$i] = $prevBranch; + foreach($data->branch as $i => $branch) + { + if($branch != 'ditto') $prevBranch = $branch; + if($branch == 'ditto') $data->branch[$i] = $prevBranch; + } } $libCases = $this->dao->select('*')->from(TABLE_CASE)->where('deleted')->eq(0)->andWhere('id')->in($data->caseIdList)->fetchAll('id'); @@ -1889,7 +1893,7 @@ class testcaseModel extends model if($methodName == 'review') { - $status = zget($case, 'status', $status); + $status = zget($case, 'status', ''); if($this->post->result == 'pass') return 'normal'; diff --git a/test/class/testcase.class.php b/test/class/testcase.class.php index 37d196839d..b1761793be 100644 --- a/test/class/testcase.class.php +++ b/test/class/testcase.class.php @@ -51,15 +51,6 @@ class testcaseTest return $objects; } - public function getProjectCasesTest($projectID, $orderBy = 'id_desc', $pager = null, $browseType = '') - { - $objects = $this->objectModel->getProjectCases($projectID, $orderBy = 'id_desc', $pager = null, $browseType = ''); - - if(dao::isError()) return dao::getError(); - - return $objects; - } - /** * Test get execution cases. * @@ -134,9 +125,19 @@ class testcaseTest return $objects; } - public function getTestCasesTest($productID, $branch, $browseType, $queryID, $moduleID, $sort, $pager, $auto = 'no') + /** + * 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, $branch, $browseType, $queryID, $moduleID, $sort, $pager, $auto = 'no'); + $objects = $this->objectModel->getTestCases($productID, 0, $browseType, $queryID, $moduleID, 'id_desc', null, $auto); if(dao::isError()) return dao::getError(); @@ -182,6 +183,20 @@ class testcaseTest 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); @@ -191,6 +206,13 @@ class testcaseTest return count($objects); } + /** + * Test get stories' cases. + * + * @param int $storyID + * @access public + * @return array + */ public function getStoryCasesTest($storyID) { $objects = $this->objectModel->getStoryCases($storyID); @@ -216,19 +238,64 @@ class testcaseTest return $counts; } - public function updateTest($caseID) + /** + * Test update a case. + * + * @param array $param + * @access public + * @return int + */ + public function updateTest($param = array()) { - $objects = $this->objectModel->update($caseID); + $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 $objects; + return $change; } - public function reviewTest($caseID) + /** + * 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; @@ -251,15 +318,13 @@ class testcaseTest return $objects; } - public function getCases2LinkTest($caseID, $browseType = 'bySearch', $queryID = 0) - { - $objects = $this->objectModel->getCases2Link($caseID, $browseType = 'bySearch', $queryID = 0); - - if(dao::isError()) return dao::getError(); - - return $objects; - } - + /** + * Test batch update cases. + * + * @param array $param + * @access public + * @return array + */ public function batchUpdateTest($param = array()) { $batchUpdateField['caseIDList'] = array('1' => 1, '2' => 2, '3' => 3, '4' => 4); @@ -343,22 +408,69 @@ class testcaseTest return $objects; } - public function joinStepTest($steps) + /** + * Test join steps to a string, thus can diff them. + * + * @param array $stepIDList + * @access public + * @return string + */ + public function joinStepTest($stepIDList) { - $objects = $this->objectModel->joinStep($steps); + 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(); - return $objects; + $string = str_replace("\n", ' ', $string); + return $string; } - public function createFromImportTest($productID, $branch = 0) + /** + * Test create from import. + * + * @param int $productID + * @param array $param + * @access public + * @return string + */ + public function createFromImportTest($productID, $param = array()) { - $objects = $this->objectModel->createFromImport($productID, $branch = 0); + 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(); - return $objects; + $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; } /** @@ -377,21 +489,27 @@ class testcaseTest return $object; } - public function importFromLibTest($productID) + /** + * Test import case from Lib. + * + * @param int $productID + * @param array $caseIdList + * @access public + * @return array + */ + public function importFromLibTest($productID, $caseIdList = array()) { - $objects = $this->objectModel->importFromLib($productID); + $_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; - if(dao::isError()) return dao::getError(); + $this->objectModel->importFromLib($productID); - return $objects; - } - - public function buildSearchFormTest($productID, $products, $queryID, $actionURL, $projectID = 0) - { - $objects = $this->objectModel->buildSearchForm($productID, $products, $queryID, $actionURL, $projectID = 0); + 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; } @@ -427,29 +545,106 @@ class testcaseTest return $object ? 1 : 2; } - public function syncCase2ProjectTest($case, $caseID) + /** + * Test sync case to project. + * + * @param int $caseID + * @access public + * @return int + */ + public function syncCase2ProjectTest($caseID) { - $objects = $this->objectModel->syncCase2Project($case, $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; } - public function updateCase2ProjectTest($oldCase, $case, $caseID) + /** + * 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()) { - $objects = $this->objectModel->updateCase2Project($oldCase, $case, $caseID); + 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; - if(dao::isError()) return dao::getError(); + foreach($param as $field => $value) $_POST[$field] = $value; + } - return $objects; - } + $objects = $this->objectModel->getStatus($methodName, $case); - public function getStatusTest($methodName, $case = null) - { - $objects = $this->objectModel->getStatus($methodName, $case = null); + unset($_POST); - if(dao::isError()) return dao::getError(); + if(dao::isError()) return dao::getError()[0]; return $objects; } diff --git a/test/model/action/getlist.php b/test/model/action/getlist.php index b5d7b47d0f..ee81c8740e 100755 --- a/test/model/action/getlist.php +++ b/test/model/action/getlist.php @@ -17,42 +17,42 @@ $objectId = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23, $action = new actionTest(); -r($action->getListTest($objectType[0], $objectId[0])) && p('id,actor,extra') && e("1,admin,1"); // 测试获取objectType product objectId 1的动态信息 -r($action->getListTest($objectType[1], $objectId[1])) && p('id,actor,extra') && e("2,dev17,1"); // 测试获取objectType story objectId 2的动态信息 -r($action->getListTest($objectType[2], $objectId[2])) && p('id,actor,extra') && e("3,test18,1"); // 测试获取objectType productplan objectId 3的动态信息 -r($action->getListTest($objectType[3], $objectId[3])) && p('id,actor,extra') && e("4,admin,1"); // 测试获取objectType release objectId 4的动态信息 -r($action->getListTest($objectType[4], $objectId[4])) && p('id,actor,extra') && e("5,dev17,11"); // 测试获取objectType project objectId 5的动态信息 -r($action->getListTest($objectType[5], $objectId[5])) && p('id,actor,extra') && e("6,test18,1"); // 测试获取objectType task objectId 6的动态信息 -r($action->getListTest($objectType[6], $objectId[6])) && p('id,actor,extra') && e("7,admin,1"); // 测试获取objectType build objectId 7的动态信息 -r($action->getListTest($objectType[7], $objectId[7])) && p('id,actor,extra') && e("8,dev17,1"); // 测试获取objectType bug objectId 8的动态信息 -r($action->getListTest($objectType[8], $objectId[8])) && p('id,actor,extra') && e("9,test18,2"); // 测试获取objectType testcase objectId 9的动态信息 -r($action->getListTest($objectType[9], $objectId[9])) && p('id,actor,extra') && e("10,admin,1"); // 测试获取objectType case objectId 10的动态信息 -r($action->getListTest($objectType[10], $objectId[10])) && p('id,actor,extra') && e("11,dev17,1"); // 测试获取objectType testtask objectId 11的动态信息 -r($action->getListTest($objectType[11], $objectId[11])) && p('id,actor,extra') && e("12,test18,1"); // 测试获取objectType user objectId 12的动态信息 -r($action->getListTest($objectType[12], $objectId[12])) && p('id,actor,extra') && e("13,admin,1"); // 测试获取objectType doc objectId 13的动态信息 -r($action->getListTest($objectType[13], $objectId[13])) && p('id,actor,extra') && e("14,dev17,1"); // 测试获取objectType doclib objectId 14的动态信息 -r($action->getListTest($objectType[14], $objectId[14])) && p('id,actor,extra') && e("15,test18,1"); // 测试获取objectType todo objectId 15的动态信息 -r($action->getListTest($objectType[15], $objectId[15])) && p('id,actor,extra') && e("16,admin,1"); // 测试获取objectType branch objectId 16的动态信息 -r($action->getListTest($objectType[16], $objectId[16])) && p('id,actor,extra') && e("17,dev17,1"); // 测试获取objectType module objectId 17的动态信息 +r($action->getListTest($objectType[0], $objectId[0])) && p('id,actor,extra') && e("1,admin,1"); // 测试获取objectType product objectId 1的动态信息 +r($action->getListTest($objectType[1], $objectId[1])) && p('id,actor,extra') && e("2,dev17,1"); // 测试获取objectType story objectId 2的动态信息 +r($action->getListTest($objectType[2], $objectId[2])) && p('id,actor,extra') && e("3,test18,1"); // 测试获取objectType productplan objectId 3的动态信息 +r($action->getListTest($objectType[3], $objectId[3])) && p('id,actor,extra') && e("4,admin,1"); // 测试获取objectType release objectId 4的动态信息 +r($action->getListTest($objectType[4], $objectId[4])) && p('id,actor,extra') && e("5,dev17,11"); // 测试获取objectType project objectId 5的动态信息 +r($action->getListTest($objectType[5], $objectId[5])) && p('id,actor,extra') && e("6,test18,1"); // 测试获取objectType task objectId 6的动态信息 +r($action->getListTest($objectType[6], $objectId[6])) && p('id,actor,extra') && e("7,admin,1"); // 测试获取objectType build objectId 7的动态信息 +r($action->getListTest($objectType[7], $objectId[7])) && p('id,actor,extra') && e("8,dev17,1"); // 测试获取objectType bug objectId 8的动态信息 +r($action->getListTest($objectType[8], $objectId[8])) && p('id,actor,extra') && e("9,test18,2"); // 测试获取objectType testcase objectId 9的动态信息 +r($action->getListTest($objectType[9], $objectId[9])) && p('id,actor,extra') && e("10,admin,1"); // 测试获取objectType case objectId 10的动态信息 +r($action->getListTest($objectType[10], $objectId[10])) && p('id,actor,extra') && e("11,dev17,1"); // 测试获取objectType testtask objectId 11的动态信息 +r($action->getListTest($objectType[11], $objectId[11])) && p('id,actor,extra') && e("12,test18,1"); // 测试获取objectType user objectId 12的动态信息 +r($action->getListTest($objectType[12], $objectId[12])) && p('id,actor,extra') && e("13,admin,1"); // 测试获取objectType doc objectId 13的动态信息 +r($action->getListTest($objectType[13], $objectId[13])) && p('id,actor,extra') && e("14,dev17,1"); // 测试获取objectType doclib objectId 14的动态信息 +r($action->getListTest($objectType[14], $objectId[14])) && p('id,actor,extra') && e("15,test18,1"); // 测试获取objectType todo objectId 15的动态信息 +r($action->getListTest($objectType[15], $objectId[15])) && p('id,actor,extra') && e("16,admin,1"); // 测试获取objectType branch objectId 16的动态信息 +r($action->getListTest($objectType[16], $objectId[16])) && p('id,actor,extra') && e("17,dev17,1"); // 测试获取objectType module objectId 17的动态信息 r($action->getListTest($objectType[17], $objectId[17])) && p('id,actor,extra') && e("18,test18,#1 项目集1"); // 测试获取objectType testsuite objectId 18的动态信息 -r($action->getListTest($objectType[18], $objectId[18])) && p('id,actor,extra') && e("19,admin,1"); // 测试获取objectType caselib objectId 19的动态信息 -r($action->getListTest($objectType[19], $objectId[19])) && p('id,actor,extra') && e("20,dev17,1"); // 测试获取objectType testreport objectId 20的动态信息 -r($action->getListTest($objectType[20], $objectId[20])) && p('id,actor,extra') && e("21,test18,1"); // 测试获取objectType entry objectId 21的动态信息 +r($action->getListTest($objectType[18], $objectId[18])) && p('id,actor,extra') && e("19,admin,1"); // 测试获取objectType caselib objectId 19的动态信息 +r($action->getListTest($objectType[19], $objectId[19])) && p('id,actor,extra') && e("20,dev17,1"); // 测试获取objectType testreport objectId 20的动态信息 +r($action->getListTest($objectType[20], $objectId[20])) && p('id,actor,extra') && e("21,test18,1"); // 测试获取objectType entry objectId 21的动态信息 r($action->getListTest($objectType[21], $objectId[21])) && p('id,actor,extra') && e("22,admin,1"); // 测试获取objectType webhook objectId 22的动态信息 -r($action->getListTest($objectType[22], $objectId[22])) && p('id,actor,extra') && e("23,dev17,1"); // 测试获取objectType review objectId 23的动态信息 -r($action->getListTest($objectType[0], $objectId[23])) && p('id,actor,extra') && e("24,test18,1"); // 测试获取objectType product objectId 24的动态信息 -r($action->getListTest($objectType[1], $objectId[24])) && p('id,actor,extra') && e("25,admin,1"); // 测试获取objectType story objectId 25的动态信息 -r($action->getListTest($objectType[2], $objectId[25])) && p('id,actor,extra') && e("26,dev17,1"); // 测试获取objectType productplan objectId 26的动态信息 -r($action->getListTest($objectType[3], $objectId[26])) && p('id,actor,extra') && e("27,test18,1"); // 测试获取objectType release objectId 27的动态信息 -r($action->getListTest($objectType[4], $objectId[27])) && p('id,actor,extra') && e("28,admin,33"); // 测试获取objectType project objectId 28的动态信息 -r($action->getListTest($objectType[5], $objectId[28])) && p('id,actor,extra') && e("29,dev17,1"); // 测试获取objectType task objectId 29的动态信息 -r($action->getListTest($objectType[6], $objectId[29])) && p('id,actor,extra') && e("30,test18,1"); // 测试获取objectType build objectId 30的动态信息 -r($action->getListTest($objectType[7], $objectId[30])) && p('id,actor,extra') && e("31,admin,1"); // 测试获取objectType bug objectId 31的动态信息 -r($action->getListTest($objectType[8], $objectId[31])) && p('id,actor,extra') && e("32,项目经理17,1"); // 测试获取objectType testcase objectId 32的动态信息 -r($action->getListTest($objectType[9], $objectId[32])) && p('id,actor,extra') && e("33,test18,1"); // 测试获取objectType case objectId 33的动态信息 -r($action->getListTest($objectType[10], $objectId[33])) && p('id,actor,extra') && e("34,admin,1"); // 测试获取objectType testtask objectId 34的动态信息 -r($action->getListTest($objectType[11], $objectId[34])) && p('id,actor,extra') && e("35,dev17,1"); // 测试获取objectType user objectId 35的动态信息 -r($action->getListTest($objectType[12], $objectId[35])) && p('id,actor,extra') && e("36,test18,1"); // 测试获取objectType doc objectId 36的动态信息 -r($action->getListTest($objectType[13], $objectId[36])) && p('id,actor,extra') && e("37,admin,1"); // 测试获取objectType doclib objectId 37的动态信息 -r($action->getListTest($objectType[14], $objectId[37])) && p('id,actor,extra') && e("38,dev17,1"); // 测试获取objectType todo objectId 38的动态信息 +r($action->getListTest($objectType[22], $objectId[22])) && p('id,actor,extra') && e("23,dev17,1"); // 测试获取objectType review objectId 23的动态信息 +r($action->getListTest($objectType[0], $objectId[23])) && p('id,actor,extra') && e("24,test18,1"); // 测试获取objectType product objectId 24的动态信息 +r($action->getListTest($objectType[1], $objectId[24])) && p('id,actor,extra') && e("25,admin,1"); // 测试获取objectType story objectId 25的动态信息 +r($action->getListTest($objectType[2], $objectId[25])) && p('id,actor,extra') && e("26,dev17,1"); // 测试获取objectType productplan objectId 26的动态信息 +r($action->getListTest($objectType[3], $objectId[26])) && p('id,actor,extra') && e("27,test18,1"); // 测试获取objectType release objectId 27的动态信息 +r($action->getListTest($objectType[4], $objectId[27])) && p('id,actor,extra') && e("28,admin,33"); // 测试获取objectType project objectId 28的动态信息 +r($action->getListTest($objectType[5], $objectId[28])) && p('id,actor,extra') && e("29,dev17,1"); // 测试获取objectType task objectId 29的动态信息 +r($action->getListTest($objectType[6], $objectId[29])) && p('id,actor,extra') && e("30,test18,1"); // 测试获取objectType build objectId 30的动态信息 +r($action->getListTest($objectType[7], $objectId[30])) && p('id,actor,extra') && e("31,admin,1"); // 测试获取objectType bug objectId 31的动态信息 +r($action->getListTest($objectType[8], $objectId[31])) && p('id,actor,extra') && e("32,项目经理17,1"); // 测试获取objectType testcase objectId 32的动态信息 +r($action->getListTest($objectType[9], $objectId[32])) && p('id,actor,extra') && e("33,test18,1"); // 测试获取objectType case objectId 33的动态信息 +r($action->getListTest($objectType[10], $objectId[33])) && p('id,actor,extra') && e("34,admin,1"); // 测试获取objectType testtask objectId 34的动态信息 +r($action->getListTest($objectType[11], $objectId[34])) && p('id,actor,extra') && e("35,dev17,1"); // 测试获取objectType user objectId 35的动态信息 +r($action->getListTest($objectType[12], $objectId[35])) && p('id,actor,extra') && e("36,test18,1"); // 测试获取objectType doc objectId 36的动态信息 +r($action->getListTest($objectType[13], $objectId[36])) && p('id,actor,extra') && e("37,admin,1"); // 测试获取objectType doclib objectId 37的动态信息 +r($action->getListTest($objectType[14], $objectId[37])) && p('id,actor,extra') && e("38,dev17,1"); // 测试获取objectType todo objectId 38的动态信息 r($action->getListTest($objectType[15], $objectId[38])) && p('id,actor,extra') && e("39,test18,项目版本版本1"); // 测试获取objectType branch objectId 39的动态信息 diff --git a/test/model/testcase/createfromimport.php b/test/model/testcase/createfromimport.php new file mode 100755 index 0000000000..0f47224321 --- /dev/null +++ b/test/model/testcase/createfromimport.php @@ -0,0 +1,25 @@ +#!/usr/bin/env php +createFromImport(); +cid=1 +pid=1 + +*/ + +$productID = 1; + +$param1 = array('id' => array('1' => 1, '2' => 2), 'title' => array('1' => '导入覆盖的用例1', '2' => '导入覆盖的用例2'), 'insert' => '0'); +$param2 = array('id' => array('1' => 1, '2' => 2), 'title' => array('1' => '导入插入的用例1', '2' => '导入插入的用例2'), 'insert' => '1'); + +$testcase = new testcaseTest(); + +r($testcase->createFromImportTest($productID)) && p() && e('这个是测试用例1,这个是测试用例2,导入测试用例1,导入测试用例2'); // 测试直接导入数据 +r($testcase->createFromImportTest($productID, $param1)) && p() && e('导入覆盖的用例1,导入覆盖的用例2,导入测试用例1,导入测试用例2'); // 测试导入数据覆盖原有数据 +r($testcase->createFromImportTest($productID, $param2)) && p() && e('导入覆盖的用例1,导入覆盖的用例2,导入测试用例1,导入测试用例2,导入插入的用例1,导入插入的用例2'); // 测试导入数据不覆盖原有数据 +system("./ztest init"); diff --git a/test/model/testcase/getstatus.php b/test/model/testcase/getstatus.php new file mode 100755 index 0000000000..63721cd77c --- /dev/null +++ b/test/model/testcase/getstatus.php @@ -0,0 +1,32 @@ +#!/usr/bin/env php +getStatus(); +cid=1 +pid=1 + +*/ + +$typeList = array('create', 'review', 'update'); + +$case1 = new stdclass(); +$case1->status = 'pass'; + +$case2 = new stdclass(); +$case2->status = 'clarify'; + +$case = null; +$param1 = array('lastEditedDate' => '2022-03-04 00:00:00'); + +$testcase = new testcaseTest(); + +r($testcase->getStatusTest($typeList[0])) && p() && e('normal'); // 测试获取create的状态 +r($testcase->getStatusTest($typeList[1], $case1)) && p() && e('pass'); // 测试获取review pass 的状态 +r($testcase->getStatusTest($typeList[1], $case2)) && p() && e('clarify'); // 测试获取review clarify 的状态 +r($testcase->getStatusTest($typeList[2], $case)) && p('1') && e('wait'); // 测试获取update的状态 +r($testcase->getStatusTest($typeList[2], $case, $param1)) && p() && e('该记录可能已经被改动。请刷新页面重新编辑!'); // 测试获取update 别人变更 的状态 diff --git a/test/model/testcase/gettestcases.php b/test/model/testcase/gettestcases.php new file mode 100755 index 0000000000..aaf5649a36 --- /dev/null +++ b/test/model/testcase/gettestcases.php @@ -0,0 +1,45 @@ +#!/usr/bin/env php +getTestCases(); +cid=1 +pid=1 + +*/ + +$productID = array('1', '2', '3', '4', '5'); +$browseType = array('all', 'wait', 'bymodule', 'needconfirm', 'bysuite'); +$suiteID = array('1', '3', '5', '7', '9'); + +$testcase = new testcaseTest(); + +r($testcase->getTestCasesTest($productID[0], $browseType[0], $suiteID[0])) && p('1:title;2:title;3:title;4:title') && e('这个是测试用例1;这个是测试用例2;这个是测试用例3;这个是测试用例4'); // 测试查询产品1 suiteID 1 browseType all 的测试用例 +r($testcase->getTestCasesTest($productID[0], $browseType[1], $suiteID[0])) && p('1:title') && e('这个是测试用例1'); // 测试查询产品1 suiteID 1 browseType wait 的测试用例 +r($testcase->getTestCasesTest($productID[0], $browseType[2], $suiteID[0])) && p('1:title;2:title;3:title;4:title') && e('这个是测试用例1;这个是测试用例2;这个是测试用例3;这个是测试用例4'); // 测试查询产品1 suiteID 1 browseType bymodule 的测试用例 +r($testcase->getTestCasesTest($productID[0], $browseType[3], $suiteID[0])) && p('0:title;1:title;2:title;3:title') && e('这个是测试用例4;这个是测试用例3;这个是测试用例2;这个是测试用例1'); // 测试查询产品1 suiteID 1 browseType needconfirm 的测试用例 +r($testcase->getTestCasesTest($productID[0], $browseType[4], $suiteID[0])) && p('1:title;2:title') && e('这个是测试用例1;这个是测试用例2'); // 测试查询产品1 suiteID 1 browseType bysuite 的测试用例 +r($testcase->getTestCasesTest($productID[1], $browseType[0], $suiteID[1])) && p('5:title;6:title;7:title;8:title') && e('这个是测试用例5;这个是测试用例6;这个是测试用例7;这个是测试用例8'); // 测试查询产品2 suiteID 3 browseType all 的测试用例 +r($testcase->getTestCasesTest($productID[1], $browseType[1], $suiteID[1])) && p('5:title') && e('这个是测试用例5'); // 测试查询产品2 suiteID 3 browseType wait 的测试用例 +r($testcase->getTestCasesTest($productID[1], $browseType[2], $suiteID[1])) && p('5:title;6:title;7:title;8:title') && e('这个是测试用例5;这个是测试用例6;这个是测试用例7;这个是测试用例8'); // 测试查询产品2 suiteID 3 browseType bymodule 的测试用例 +r($testcase->getTestCasesTest($productID[1], $browseType[3], $suiteID[1])) && p('0:title;1:title;2:title;3:title') && e('这个是测试用例8;这个是测试用例7;这个是测试用例6;这个是测试用例5'); // 测试查询产品2 suiteID 3 browseType needconfirm 的测试用例 +r($testcase->getTestCasesTest($productID[1], $browseType[4], $suiteID[1])) && p('5:title;6:title') && e('这个是测试用例5;这个是测试用例6'); // 测试查询产品2 suiteID 3 browseType bysuite 的测试用例 +r($testcase->getTestCasesTest($productID[2], $browseType[0], $suiteID[2])) && p('9:title;10:title;11:title;12:title') && e('这个是测试用例9;这个是测试用例10;这个是测试用例11;这个是测试用例12'); // 测试查询产品3 suiteID 5 browseType all 的测试用例 +r($testcase->getTestCasesTest($productID[2], $browseType[1], $suiteID[2])) && p('9:title') && e('这个是测试用例9'); // 测试查询产品3 suiteID 5 browseType wait 的测试用例 +r($testcase->getTestCasesTest($productID[2], $browseType[2], $suiteID[2])) && p('9:title;10:title;11:title;12:title') && e('这个是测试用例9;这个是测试用例10;这个是测试用例11;这个是测试用例12'); // 测试查询产品3 suiteID 5 browseType bymodule 的测试用例 +r($testcase->getTestCasesTest($productID[2], $browseType[3], $suiteID[2])) && p('0:title;1:title;2:title;3:title') && e('这个是测试用例12;这个是测试用例11;这个是测试用例10;这个是测试用例9'); // 测试查询产品3 suiteID 5 browseType needconfirm 的测试用例 +r($testcase->getTestCasesTest($productID[2], $browseType[4], $suiteID[2])) && p('9:title;10:title') && e('这个是测试用例9;这个是测试用例10'); // 测试查询产品3 suiteID 5 browseType bysuite 的测试用例 +r($testcase->getTestCasesTest($productID[3], $browseType[0], $suiteID[3])) && p('13:title;14:title;15:title;16:title') && e('这个是测试用例13;这个是测试用例14;这个是测试用例15;这个是测试用例16'); // 测试查询产品4 suiteID 7 browseType all 的测试用例 +r($testcase->getTestCasesTest($productID[3], $browseType[1], $suiteID[3])) && p('13:title') && e('这个是测试用例13'); // 测试查询产品4 suiteID 7 browseType wait 的测试用例 +r($testcase->getTestCasesTest($productID[3], $browseType[2], $suiteID[3])) && p('13:title;14:title;15:title;16:title') && e('这个是测试用例13;这个是测试用例14;这个是测试用例15;这个是测试用例16'); // 测试查询产品4 suiteID 7 browseType bymodule 的测试用例 +r($testcase->getTestCasesTest($productID[3], $browseType[3], $suiteID[3])) && p('0:title;1:title;2:title;3:title') && e('这个是测试用例16;这个是测试用例15;这个是测试用例14;这个是测试用例13'); // 测试查询产品4 suiteID 7 browseType needconfirm 的测试用例 +r($testcase->getTestCasesTest($productID[3], $browseType[4], $suiteID[3])) && p('13:title;14:title') && e('这个是测试用例13;这个是测试用例14'); // 测试查询产品4 suiteID 7 browseType bysuite 的测试用例 +r($testcase->getTestCasesTest($productID[4], $browseType[0], $suiteID[4])) && p('17:title;18:title;19:title;20:title') && e('这个是测试用例17;这个是测试用例18;这个是测试用例19;这个是测试用例20'); // 测试查询产品5 suiteID 9 browseType all 的测试用例 +r($testcase->getTestCasesTest($productID[4], $browseType[1], $suiteID[4])) && p('17:title') && e('这个是测试用例17'); // 测试查询产品5 suiteID 9 browseType wait 的测试用例 +r($testcase->getTestCasesTest($productID[4], $browseType[2], $suiteID[4])) && p('17:title;18:title;19:title;20:title') && e('这个是测试用例17;这个是测试用例18;这个是测试用例19;这个是测试用例20'); // 测试查询产品5 suiteID 9 browseType bymodule 的测试用例 +r($testcase->getTestCasesTest($productID[4], $browseType[3], $suiteID[4])) && p('0:title;1:title;2:title;3:title') && e('这个是测试用例20;这个是测试用例19;这个是测试用例18;这个是测试用例17'); // 测试查询产品5 suiteID 9 browseType needconfirm 的测试用例 +r($testcase->getTestCasesTest($productID[4], $browseType[4], $suiteID[4])) && p('17:title;18:title') && e('这个是测试用例17;这个是测试用例18'); // 测试查询产品5 suiteID 9 browseType bysuite 的测试用例 diff --git a/test/model/testcase/importfromlib.php b/test/model/testcase/importfromlib.php new file mode 100755 index 0000000000..8d4871d39f --- /dev/null +++ b/test/model/testcase/importfromlib.php @@ -0,0 +1,25 @@ +#!/usr/bin/env php +importFromLib(); +cid=1 +pid=1 + +*/ + +$productID = 1; +$caseIdList = array(array('401' => '401', '402' => '402'), array('403' => '403', '404' => '404'), array('405' => '405', '406' => '406'), array('407' => '407', '408' => '408'), array('409' => '409', '410' => '410')); + +$testcase = new testcaseTest(); + +r($testcase->importFromLibTest($productID, $caseIdList[0])) && p('0:title;1:title') && e('用例库用例1;用例库用例2'); // 测试导入用例库用例 401 402 +r($testcase->importFromLibTest($productID, $caseIdList[1])) && p('0:title;1:title') && e('用例库用例3;用例库用例4'); // 测试导入用例库用例 403 404 +r($testcase->importFromLibTest($productID, $caseIdList[2])) && p('0:title;1:title') && e('用例库用例5;用例库用例6'); // 测试导入用例库用例 405 406 +r($testcase->importFromLibTest($productID, $caseIdList[3])) && p('0:title;1:title') && e('用例库用例7;用例库用例8'); // 测试导入用例库用例 407 408 +r($testcase->importFromLibTest($productID, $caseIdList[4])) && p('0:title;1:title') && e('用例库用例9;用例库用例10'); // 测试导入用例库用例 409 410 +system("./ztest init"); diff --git a/test/model/testcase/joinstep.php b/test/model/testcase/joinstep.php new file mode 100755 index 0000000000..00240da386 --- /dev/null +++ b/test/model/testcase/joinstep.php @@ -0,0 +1,23 @@ +#!/usr/bin/env php +joinStep(); +cid=1 +pid=1 + +*/ + +$stepIDList = array('1,2', '3,4', '5,6', '7,8', '9,10'); + +$testcase = new testcaseTest(); + +r($testcase->joinStepTest($stepIDList[0])) && p() && e('用例步骤描述1 EXPECT:这是用例预期结果1 用例步骤描述2 EXPECT:这是用例预期结果2'); // 测试获取步骤 1 2 的字符串 +r($testcase->joinStepTest($stepIDList[1])) && p() && e('用例步骤描述3 EXPECT:这是用例预期结果3 用例步骤描述4 EXPECT:这是用例预期结果4'); // 测试获取步骤 3 4 的字符串 +r($testcase->joinStepTest($stepIDList[2])) && p() && e('用例步骤描述5 EXPECT:这是用例预期结果5 用例步骤描述6 EXPECT:这是用例预期结果6'); // 测试获取步骤 5 6 的字符串 +r($testcase->joinStepTest($stepIDList[3])) && p() && e('用例步骤描述7 EXPECT:这是用例预期结果7 用例步骤描述8 EXPECT:这是用例预期结果8'); // 测试获取步骤 7 8 的字符串 +r($testcase->joinStepTest($stepIDList[4])) && p() && e('用例步骤描述9 EXPECT:这是用例预期结果9 用例步骤描述10 EXPECT:这是用例预期结果10'); // 测试获取步骤 9 10 的字符串 diff --git a/test/model/testcase/review.php b/test/model/testcase/review.php new file mode 100755 index 0000000000..24367cef64 --- /dev/null +++ b/test/model/testcase/review.php @@ -0,0 +1,49 @@ +#!/usr/bin/env php +review(); +cid=1 +pid=1 + +*/ + +$caseIDList = array(1, 5, 9, 13, 17); + +$case1 = new stdclass(); +$case1->result = 'pass'; +$case1->status = 'normal'; +$case1->reviewedBy = array('test1'); + +$case2 = new stdclass(); +$case2->result = 'clarify'; +$case2->status = 'wait'; +$case2->reviewedBy = array('test2'); + +$case3 = new stdclass(); +$case3->result = 'pass'; +$case3->status = 'normal'; +$case3->reviewedBy = array('test3'); + +$case4 = new stdclass(); +$case4->result = 'clarify'; +$case4->status = 'wait'; +$case4->reviewedBy = array('test4'); + +$case5 = new stdclass(); +$case5->result = 'pass'; +$case5->status = 'normal'; +$case5->reviewedBy = array('test5'); + +$testcase = new testcaseTest(); + +r($testcase->reviewTest($caseIDList[0], $case1)) && p('0:field,old,new') && e('status,wait,normal'); // 测试评审用例 1 +r($testcase->reviewTest($caseIDList[1], $case2)) && p('0:field,old,new') && e('reviewedBy,admin,test2'); // 测试评审用例 2 +r($testcase->reviewTest($caseIDList[2], $case3)) && p('0:field,old,new') && e('status,wait,normal'); // 测试评审用例 3 +r($testcase->reviewTest($caseIDList[3], $case4)) && p('0:field,old,new') && e('reviewedBy,admin,test4'); // 测试评审用例 4 +r($testcase->reviewTest($caseIDList[4], $case5)) && p('0:field,old,new') && e('status,wait,normal'); // 测试评审用例 5 +system("./ztest init"); diff --git a/test/model/testcase/synccase2project.php b/test/model/testcase/synccase2project.php new file mode 100755 index 0000000000..71a53dddfa --- /dev/null +++ b/test/model/testcase/synccase2project.php @@ -0,0 +1,24 @@ +#!/usr/bin/env php +syncCase2Project(); +cid=1 +pid=1 + +*/ + +$caseIDList = array(1, 5, 9, 13, 17, 2); + +$testcase = new testcaseTest(); + +r($testcase->syncCase2ProjectTest($caseIDList[0])) && p() && e('2'); // 测试同步用例 1 到关联项目中 +r($testcase->syncCase2ProjectTest($caseIDList[1])) && p() && e('2'); // 测试同步用例 2 到关联项目中 +r($testcase->syncCase2ProjectTest($caseIDList[2])) && p() && e('2'); // 测试同步用例 3 到关联项目中 +r($testcase->syncCase2ProjectTest($caseIDList[3])) && p() && e('2'); // 测试同步用例 4 到关联项目中 +r($testcase->syncCase2ProjectTest($caseIDList[4])) && p() && e('2'); // 测试同步用例 5 到关联项目中 +system("./ztest init"); diff --git a/test/model/testcase/update.php b/test/model/testcase/update.php new file mode 100755 index 0000000000..7fe154abc0 --- /dev/null +++ b/test/model/testcase/update.php @@ -0,0 +1,27 @@ +#!/usr/bin/env php +update(); +cid=1 +pid=1 + +*/ + +$changeTitle = array('title' => '修改后的名称'); +$changePrecondition = array('precondition' => '修改后的前置条件'); +$changeStatus = array('status' => 'normal'); +$changePri = array('pri' => '3'); + +$testcase = new testcaseTest(); + +r($testcase->updateTest($changeTitle)) && p('0:field,old,new') && e('title,这个是测试用例1,修改后的名称'); // 测试修改标题 +r($testcase->updateTest($changeTitle)) && p('0:field,old,new') && e('没有数据更新'); // 测试重复修改标题 +r($testcase->updateTest($changePrecondition)) && p('0:field,old,new') && e('precondition,这是前置条件1,修改后的前置条件'); // 测试修改前置条件 +r($testcase->updateTest($changeStatus)) && p('0:field,old,new') && e('status,wait,normal'); // 测试修改状态 +r($testcase->updateTest($changePri)) && p('0:field,old,new') && e('pri,1,3'); // 测试修改优先级 +system("./ztest init"); diff --git a/test/model/testcase/updatecase2project.php b/test/model/testcase/updatecase2project.php new file mode 100755 index 0000000000..169881869b --- /dev/null +++ b/test/model/testcase/updatecase2project.php @@ -0,0 +1,31 @@ +#!/usr/bin/env php +updateCase2Project(); +cid=1 +pid=1 + +*/ + +$caseIDList = array('1', '3', '5', '7', '9'); +$objectTypeList = array('product', 'story'); +$objectIDList = array('2', '1', '6', '2'); + +$testcase = new testcaseTest(); + +r($testcase->updateCase2ProjectTest($caseIDList[0], $objectTypeList[0], $objectIDList[0])) && p('0:project,product,case') && e('101,2,1'); // 测试修改用例 1 产品 +r($testcase->updateCase2ProjectTest($caseIDList[0], $objectTypeList[1], $objectIDList[2])) && p('0:project,product,case;1:project,product,case;2:project,product,case') && e('101,2,1;12,1,1;102,1,1'); // 测试修改用例 1 需求 +r($testcase->updateCase2ProjectTest($caseIDList[1], $objectTypeList[0], $objectIDList[0])) && p('0:project,product,case') && e('101,2,3'); // 测试修改用例 3 产品 +r($testcase->updateCase2ProjectTest($caseIDList[1], $objectTypeList[1], $objectIDList[2])) && p('0:project,product,case;1:project,product,case;2:project,product,case') && e('101,2,3;12,1,3;102,1,3'); // 测试修改用例 3 需求 +r($testcase->updateCase2ProjectTest($caseIDList[2], $objectTypeList[0], $objectIDList[1])) && p('0:project,product,case') && e('102,1,5'); // 测试修改用例 5 产品 +r($testcase->updateCase2ProjectTest($caseIDList[2], $objectTypeList[1], $objectIDList[3])) && p('0:project,product,case;1:project,product,case;2:project,product,case') && e('102,1,5;11,2,5;101,2,5'); // 测试修改用例 5 需求 +r($testcase->updateCase2ProjectTest($caseIDList[3], $objectTypeList[0], $objectIDList[1])) && p('0:project,product,case') && e('102,1,7'); // 测试修改用例 7 产品 +r($testcase->updateCase2ProjectTest($caseIDList[3], $objectTypeList[1], $objectIDList[3])) && p('0:project,product,case;1:project,product,case;2:project,product,case') && e('102,1,7;11,2,7;101,2,7'); // 测试修改用例 7 需求 +r($testcase->updateCase2ProjectTest($caseIDList[4], $objectTypeList[0], $objectIDList[1])) && p('0:project,product,case') && e('103,1,9'); // 测试修改用例 9 产品 +r($testcase->updateCase2ProjectTest($caseIDList[4], $objectTypeList[1], $objectIDList[3])) && p('0:project,product,case;1:project,product,case;2:project,product,case') && e('103,1,9;11,3,9;101,3,9'); // 测试修改用例 9 需求 +system("./ztest init");