diff --git a/module/convert/test/lib/convert.unittest.class.php b/module/convert/test/lib/convert.unittest.class.php index 1595c8cb0a..ea23a688cd 100644 --- a/module/convert/test/lib/convert.unittest.class.php +++ b/module/convert/test/lib/convert.unittest.class.php @@ -3373,4 +3373,28 @@ class convertTest } } + /** + * Test createBug method. + * + * @param int $productID + * @param int $projectID + * @param int $executionID + * @param object $data + * @param array $relations + * @access public + * @return mixed + */ + public function createBugTest($productID = 1, $projectID = 1, $executionID = 1, $data = null, $relations = array()) + { + if($data === null) return false; + + try { + $result = $this->objectTao->createBug($productID, $projectID, $executionID, $data, $relations); + if(dao::isError()) return dao::getError(); + return $result; + } catch (Exception $e) { + return false; + } + } + } diff --git a/module/convert/test/tao/createbug.php b/module/convert/test/tao/createbug.php new file mode 100755 index 0000000000..2f5ebde68a --- /dev/null +++ b/module/convert/test/tao/createbug.php @@ -0,0 +1,125 @@ +#!/usr/bin/env php +id->range('1-10'); +$product->name->range('产品1,产品2,产品3'); +$product->code->range('product1,product2,product3'); +$product->status->range('normal{10}'); +$product->gen(3); + +$project = zenData('project'); +$project->id->range('1-10'); +$project->name->range('项目1,项目2,项目3'); +$project->code->range('project1,project2,project3'); +$project->status->range('wait{10}'); +$project->type->range('project{10}'); +$project->gen(3); + +$user = zenData('user'); +$user->id->range('1-10'); +$user->account->range('admin,user1,user2,testuser'); +$user->realname->range('管理员,用户1,用户2,测试用户'); +$user->gen(4); + +su('admin'); + +$convertTest = new convertTest(); + +$data1 = new stdclass(); +$data1->id = 100; +$data1->summary = '正常Bug标题'; +$data1->priority = 2; +$data1->issuestatus = 'open'; +$data1->issuetype = 'bug'; +$data1->description = '正常Bug描述'; +$data1->creator = 'admin'; +$data1->created = '2023-01-01 10:00:00'; +$data1->assignee = 'admin'; +$data1->duedate = '2023-12-31'; +$data1->resolution = ''; + +$relations1 = array(); + +r($convertTest->createBugTest(1, 1, 1, $data1, $relations1)) && p() && e('0'); + +$data2 = new stdclass(); +$data2->id = 101; +$data2->summary = ''; +$data2->priority = 0; +$data2->issuestatus = ''; +$data2->issuetype = 'bug'; +$data2->description = ''; +$data2->creator = ''; +$data2->created = ''; +$data2->assignee = ''; +$data2->duedate = ''; +$data2->resolution = ''; + +r($convertTest->createBugTest(1, 1, 1, $data2, $relations1)) && p() && e('0'); + +$data3 = new stdclass(); +$data3->id = 102; +$data3->summary = '无效产品Bug'; +$data3->priority = 3; +$data3->issuestatus = 'open'; +$data3->issuetype = 'bug'; +$data3->description = '测试无效产品ID'; +$data3->creator = 'testuser'; +$data3->created = '2023-06-01 15:30:00'; +$data3->assignee = 'user1'; +$data3->duedate = ''; +$data3->resolution = ''; + +r($convertTest->createBugTest(999, 1, 1, $data3, $relations1)) && p() && e('0'); + +$data4 = new stdclass(); +$data4->id = 103; +$data4->summary = '带解决方案的Bug'; +$data4->priority = 1; +$data4->issuestatus = 'resolved'; +$data4->issuetype = 'bug'; +$data4->description = '已解决的Bug'; +$data4->creator = 'user2'; +$data4->created = '2023-03-15 09:20:00'; +$data4->assignee = 'admin'; +$data4->duedate = '2023-04-15'; +$data4->resolution = 'fixed'; + +$relations4 = array('zentaoResolutionbug' => array('fixed' => 'fixed', 'wontfix' => 'postponed')); + +r($convertTest->createBugTest(2, 2, 2, $data4, $relations4)) && p() && e('0'); + +$data5 = new stdclass(); +$data5->id = 104; +$data5->summary = '已关闭的Bug'; +$data5->priority = 4; +$data5->issuestatus = 'closed'; +$data5->issuetype = 'bug'; +$data5->description = '关闭状态的Bug'; +$data5->creator = 'admin'; +$data5->created = '2023-02-20 14:45:00'; +$data5->assignee = ''; +$data5->duedate = ''; +$data5->resolution = 'duplicate'; + +$relations5 = array('zentaoResolutionbug' => array('duplicate' => 'duplicate')); + +r($convertTest->createBugTest(3, 3, 0, $data5, $relations5)) && p() && e('0'); \ No newline at end of file diff --git a/module/convert/test/tao/yaml/action_createbug.yaml b/module/convert/test/tao/yaml/action_createbug.yaml new file mode 100644 index 0000000000..547dc14766 --- /dev/null +++ b/module/convert/test/tao/yaml/action_createbug.yaml @@ -0,0 +1,26 @@ +title: 用于createBug方法测试的action数据 +desc: 提供createBug方法测试需要的action操作记录数据 + +fields: +- field: id + range: 1-10 +- field: objectType + range: bug{8},story{2} +- field: objectID + range: 1-5 +- field: product + range: ',1,{5},2,{3},3,{2}' +- field: project + range: 1-3 +- field: execution + range: 0-2 +- field: actor + range: admin{4},user1{3},user2{2},testuser{1} +- field: action + range: opened{6},edited{2},resolved{1},closed{1} +- field: date + range: 2023-01-01 00:00:00-2023-12-31 23:59:59 +- field: comment + range: '',创建bug,修改bug,解决bug +- field: extra + range: '' \ No newline at end of file diff --git a/module/convert/test/tao/yaml/bug_createbug.yaml b/module/convert/test/tao/yaml/bug_createbug.yaml new file mode 100644 index 0000000000..b0ea10ea34 --- /dev/null +++ b/module/convert/test/tao/yaml/bug_createbug.yaml @@ -0,0 +1,34 @@ +title: 用于createBug方法测试的bug数据 +desc: 提供createBug方法测试需要的基础bug数据 + +fields: +- field: id + range: 1-10 +- field: project + range: 1-3 +- field: product + range: 1-3 +- field: execution + range: 0-2 +- field: title + range: 测试Bug{3},修复Bug{3},功能Bug{4} +- field: pri + range: 1-4 +- field: severity + range: 1-4 +- field: status + range: active{5},resolved{3},closed{2} +- field: openedBy + range: admin,user1,user2,testuser +- field: openedDate + range: 2023-01-01 00:00:00-2023-12-31 23:59:59 +- field: assignedTo + range: admin,user1,user2,'' +- field: steps + range: 测试步骤1,测试步骤2,重现步骤,操作步骤 +- field: openedBuild + range: trunk{5},v1.0{3},v2.0{2} +- field: resolution + range: fixed{4},postponed{2},duplicate{2},bydesign{1},''[1] +- field: deleted + range: '0' \ No newline at end of file diff --git a/module/convert/test/tao/yaml/execution_createbug.yaml b/module/convert/test/tao/yaml/execution_createbug.yaml new file mode 100644 index 0000000000..f0b2bc5af2 --- /dev/null +++ b/module/convert/test/tao/yaml/execution_createbug.yaml @@ -0,0 +1,26 @@ +title: 用于createBug方法测试的execution数据 +desc: 提供createBug方法测试需要的执行基础数据 + +fields: +- field: id + range: 1-5 +- field: name + range: 执行A,执行B,执行C,测试执行,Demo执行 +- field: code + range: EXEC_A,EXEC_B,EXEC_C,TEST_EXEC,DEMO_EXEC +- field: status + range: wait{2},doing{2},closed{1} +- field: begin + range: 2023-01-01-2023-06-30 +- field: end + range: 2023-07-01-2023-12-31 +- field: openedBy + range: admin{3},user1{1},user2{1} +- field: openedDate + range: 2023-01-01 00:00:00-2023-06-30 23:59:59 +- field: project + range: 1-3 +- field: type + range: stage +- field: deleted + range: '0' \ No newline at end of file diff --git a/module/convert/test/tao/yaml/product_createbug.yaml b/module/convert/test/tao/yaml/product_createbug.yaml new file mode 100644 index 0000000000..3cd4c774c5 --- /dev/null +++ b/module/convert/test/tao/yaml/product_createbug.yaml @@ -0,0 +1,22 @@ +title: 用于createBug方法测试的product数据 +desc: 提供createBug方法测试需要的产品基础数据 + +fields: +- field: id + range: 1-5 +- field: name + range: 产品A,产品B,产品C,测试产品,Demo产品 +- field: code + range: PROD_A,PROD_B,PROD_C,TEST_PROD,DEMO_PROD +- field: status + range: normal{4},closed{1} +- field: createdBy + range: admin{3},user1{1},user2{1} +- field: createdDate + range: 2023-01-01 00:00:00-2023-06-30 23:59:59 +- field: acl + range: open{3},private{1},custom{1} +- field: type + range: normal +- field: deleted + range: '0' \ No newline at end of file diff --git a/module/convert/test/tao/yaml/project_createbug.yaml b/module/convert/test/tao/yaml/project_createbug.yaml new file mode 100644 index 0000000000..b7ff518019 --- /dev/null +++ b/module/convert/test/tao/yaml/project_createbug.yaml @@ -0,0 +1,26 @@ +title: 用于createBug方法测试的project数据 +desc: 提供createBug方法测试需要的项目基础数据 + +fields: +- field: id + range: 1-5 +- field: name + range: 项目A,项目B,项目C,测试项目,Demo项目 +- field: code + range: PROJ_A,PROJ_B,PROJ_C,TEST_PROJ,DEMO_PROJ +- field: status + range: wait{2},doing{2},closed{1} +- field: begin + range: 2023-01-01-2023-06-30 +- field: end + range: 2023-07-01-2023-12-31 +- field: openedBy + range: admin{3},user1{1},user2{1} +- field: openedDate + range: 2023-01-01 00:00:00-2023-06-30 23:59:59 +- field: acl + range: open{3},private{1},custom{1} +- field: type + range: project +- field: deleted + range: '0' \ No newline at end of file