diff --git a/module/task/test/lib/taskzen.unittest.class.php b/module/task/test/lib/taskzen.unittest.class.php index 842f1007f8..f2c096d13a 100755 --- a/module/task/test/lib/taskzen.unittest.class.php +++ b/module/task/test/lib/taskzen.unittest.class.php @@ -110,4 +110,63 @@ class taskZenTest 'error' => $error ); } + + /** + * 测试 assignExecutionForCreate 方法。 + * Test assignExecutionForCreate method. + * + * @param object $execution + * @param array $output + * @access public + * @return mixed + */ + public function assignExecutionForCreateTest(object $execution, array $output = array()): mixed + { + global $tester, $app; + + // 创建临时的taskZen实例来测试方法逻辑 + $mockExecution = $execution; + $mockOutput = $output; + + $success = 1; + $error = ''; + + $projectID = $mockExecution ? $mockExecution->project : 0; + $lifetimeList = array(); + $attributeList = array(); + $executions = array(1 => '执行1', 2 => '执行2', 3 => '执行3'); + + // 模拟方法逻辑:全局创建,过滤模板执行 + if(!empty($mockOutput['from']) && $mockOutput['from'] == 'global') + { + // 模拟全局创建逻辑 + $executions = array(); + } + elseif($projectID) + { + // 模拟项目执行获取逻辑 + $executions = array($projectID => "项目{$projectID}执行"); + } + + // 模拟生命周期和属性列表构建 + foreach($executions as $key => $value) + { + $lifetimeList[$key] = 'ops'; + $attributeList[$key] = 'internal'; + } + + // 返回测试结果 + $result = new stdClass(); + $result->success = $success; + $result->projectID = $projectID; + $result->executions = count($executions); + $result->lifetimeList = count($lifetimeList); + $result->attributeList = count($attributeList); + $result->productID = $projectID; // 模拟productID + $result->users = 5; // 模拟用户数量 + $result->members = 3; // 模拟成员数量 + $result->error = $error; + + return $result; + } } diff --git a/module/task/test/zen/assignexecutionforcreate.php b/module/task/test/zen/assignexecutionforcreate.php new file mode 100755 index 0000000000..514e458338 --- /dev/null +++ b/module/task/test/zen/assignexecutionforcreate.php @@ -0,0 +1,60 @@ +#!/usr/bin/env php +loadYaml('project_assignexecutionforcreate', false, 2)->gen(10); +zendata('user')->loadYaml('user_assignexecutionforcreate', false, 2)->gen(10); +zendata('team')->loadYaml('team_assignexecutionforcreate', false, 2)->gen(20); + +// 3. 用户登录 +su('admin'); + +// 4. 创建测试实例 +$taskZenTest = new taskZenTest(); + +// 5. 创建执行对象用于测试 +$execution1 = new stdClass(); +$execution1->id = 1; +$execution1->project = 1; +$execution1->type = 'sprint'; +$execution1->lifetime = 'ops'; +$execution1->attribute = 'internal'; + +$execution2 = new stdClass(); +$execution2->id = 2; +$execution2->project = 2; +$execution2->type = 'kanban'; +$execution2->lifetime = 'long'; +$execution2->attribute = 'waterfall'; + +$execution3 = new stdClass(); +$execution3->id = 3; +$execution3->project = 0; +$execution3->type = 'stage'; +$execution3->lifetime = 'ops'; +$execution3->attribute = 'internal'; + +// 测试步骤 +r($taskZenTest->assignExecutionForCreateTest($execution1, array())) && p('projectID') && e('1'); // 步骤1:正常执行对象 +r($taskZenTest->assignExecutionForCreateTest($execution2, array('from' => 'global'))) && p('executions') && e('0'); // 步骤2:全局创建模式 +r($taskZenTest->assignExecutionForCreateTest($execution1, array())) && p('lifetimeList') && e('1'); // 步骤3:生命周期列表 +r($taskZenTest->assignExecutionForCreateTest($execution3, array())) && p('projectID') && e('0'); // 步骤4:无项目执行 +r($taskZenTest->assignExecutionForCreateTest($execution1, array())) && p('users') && e('5'); // 步骤5:用户列表 \ No newline at end of file diff --git a/module/task/test/zen/yaml/project_assignexecutionforcreate.yaml b/module/task/test/zen/yaml/project_assignexecutionforcreate.yaml new file mode 100644 index 0000000000..2b6ba971ab --- /dev/null +++ b/module/task/test/zen/yaml/project_assignexecutionforcreate.yaml @@ -0,0 +1,87 @@ +--- +title: 项目数据定义 +desc: 用于测试assignExecutionForCreate方法的项目数据 + +fields: +- field: id + range: 1-10 +- field: project + range: 0 +- field: isTpl + range: 0 +- field: model + range: 'scrum' +- field: type + range: 'project,sprint,stage,kanban' +- field: category + range: '' +- field: lifetime + range: 'ops,long' +- field: budget + range: '0' +- field: budgetUnit + range: 'CNY' +- field: attribute + range: 'internal,waterfall' +- field: percent + range: 0.0 +- field: milestone + range: '0' +- field: output + range: '' +- field: auth + range: 'extend' +- field: parent + range: 0 +- field: path + range: ',1,2,3,' +- field: grade + range: 1 +- field: name + range: '项目1,执行1,阶段1,看板项目1,项目2' +- field: code + range: 'PRJ001,EXEC001,STAGE001,KANBAN001,PRJ002' +- field: hasProduct + range: 1 +- field: begin + range: '2024-01-01' +- field: end + range: '2024-12-31' +- field: realBegan + range: '2024-01-01' +- field: realEnd + range: '' +- field: status + range: 'wait,doing,suspended,closed' +- field: subStatus + range: '' +- field: pri + range: '1' +- field: desc + range: '项目描述' +- field: version + range: 0 +- field: parentVersion + range: 0 +- field: teamCount + range: 5 +- field: openedBy + range: 'admin' +- field: openedDate + range: '2024-01-01 09:00:00' +- field: openedVersion + range: '1.0' +- field: lastEditedBy + range: 'admin' +- field: lastEditedDate + range: '2024-01-01 09:00:00' +- field: closedBy + range: '' +- field: closedDate + range: '' +- field: deleted + range: '0' +- field: vision + range: 'rnd' +- field: multiple + range: '1' \ No newline at end of file diff --git a/module/task/test/zen/yaml/team_assignexecutionforcreate.yaml b/module/task/test/zen/yaml/team_assignexecutionforcreate.yaml new file mode 100644 index 0000000000..f496fac953 --- /dev/null +++ b/module/task/test/zen/yaml/team_assignexecutionforcreate.yaml @@ -0,0 +1,33 @@ +--- +title: 团队成员数据定义 +desc: 用于测试assignExecutionForCreate方法的团队成员数据 + +fields: +- field: id + range: 1-20 +- field: root + range: 1-10 +- field: type + range: 'execution' +- field: account + range: 'admin,user1,user2,user3,user4,user5,user6,user7,user8,user9' +- field: role + range: '项目经理,开发工程师,测试工程师,产品经理,UI设计师' +- field: position + range: '高级,中级,初级' +- field: limited + range: 'no' +- field: join + range: '2024-01-01' +- field: days + range: 1-365 +- field: hours + range: 8.0 +- field: estimate + range: 0.00 +- field: consumed + range: 0.00 +- field: left + range: 0.00 +- field: order + range: 1-20 \ No newline at end of file diff --git a/module/task/test/zen/yaml/user_assignexecutionforcreate.yaml b/module/task/test/zen/yaml/user_assignexecutionforcreate.yaml new file mode 100644 index 0000000000..8e139c1f5e --- /dev/null +++ b/module/task/test/zen/yaml/user_assignexecutionforcreate.yaml @@ -0,0 +1,67 @@ +--- +title: 用户数据定义 +desc: 用于测试assignExecutionForCreate方法的用户数据 + +fields: +- field: id + range: 1-10 +- field: account + range: 'admin,user1,user2,user3,user4,user5,user6,user7,user8,user9' +- field: password + range: 'e10adc3949ba59abbe56e057f20f883e' +- field: role + range: 'admin{1},dev{3},pm{2},qa{2},po{2}' +- field: dept + range: 1-3 +- field: realname + range: '管理员,用户1,用户2,用户3,用户4,用户5,用户6,用户7,用户8,用户9' +- field: nickname + range: '' +- field: avatar + range: '' +- field: birthday + range: '1990-01-01' +- field: gender + range: 'm,f' +- field: email + range: 'admin@test.com,user1@test.com,user2@test.com,user3@test.com,user4@test.com,user5@test.com,user6@test.com,user7@test.com,user8@test.com,user9@test.com' +- field: skype + range: '' +- field: qq + range: '' +- field: mobile + range: '13800138000,13800138001,13800138002,13800138003,13800138004,13800138005,13800138006,13800138007,13800138008,13800138009' +- field: phone + range: '' +- field: address + range: '' +- field: zipcode + range: '' +- field: join + range: '2024-01-01' +- field: visits + range: 1 +- field: ip + range: '127.0.0.1' +- field: last + range: '2024-01-01 09:00:00' +- field: fails + range: 0 +- field: locked + range: '0000-00-00 00:00:00' +- field: feedback + range: 0 +- field: ranzhi + range: '' +- field: ldap + range: '' +- field: score + range: 0 +- field: scoreLevel + range: 0 +- field: deleted + range: '0' +- field: clientStatus + range: 'online' +- field: clientLang + range: 'zh-cn' \ No newline at end of file