diff --git a/module/screen/test/lib/screen.unittest.class.php b/module/screen/test/lib/screen.unittest.class.php index e94aca0a43..f7543f5ce3 100755 --- a/module/screen/test/lib/screen.unittest.class.php +++ b/module/screen/test/lib/screen.unittest.class.php @@ -1326,4 +1326,21 @@ class screenTest return $result; } + /** + * Test getProjectTaskTable method. + * + * @param string $year + * @param string $month + * @param array $projectList + * @access public + * @return array + */ + public function getProjectTaskTableTest($year, $month, $projectList) + { + $result = $this->objectModel->getProjectTaskTable($year, $month, $projectList); + if(dao::isError()) return dao::getError(); + + return $result; + } + } diff --git a/module/screen/test/model/getprojecttasktable.php b/module/screen/test/model/getprojecttasktable.php new file mode 100755 index 0000000000..85db143bae --- /dev/null +++ b/module/screen/test/model/getprojecttasktable.php @@ -0,0 +1,56 @@ +#!/usr/bin/env php +id->range('1-15'); +$projectTable->name->range('Project A, Project B, Project C, Project D, Project E'); +$projectTable->type->range('project{5}, sprint{4}, stage{3}, kanban{2}, waterfallexec{1}'); +$projectTable->status->range('wait{3}, doing{8}, done{3}, closed{1}'); +$projectTable->deleted->range('0{13}, 1{2}'); +$projectTable->project->range('0{5}, 1{4}, 2{3}, 3{2}, 4{1}'); +$projectTable->gen(15); + +$taskTable = zenData('task'); +$taskTable->id->range('1-10'); +$taskTable->project->range('1{5}, 2{3}, 3{2}'); +$taskTable->execution->range('6{5}, 7{3}, 8{2}'); +$taskTable->openedBy->range('admin{4}, user1{3}, user2{2}, user3{1}'); +$taskTable->openedDate->range("`2023-01-15`{5}, `2023-02-15`{3}, `2023-03-15`{2}"); +$taskTable->finishedBy->range('admin{3}, user1{2}, \'\'{5}'); +$taskTable->finishedDate->range("`2023-01-20`{3}, `2023-02-20`{2}, NULL{5}"); +$taskTable->deleted->range('0{9}, 1{1}'); +$taskTable->vision->range('rnd{8}, or{1}, lite{1}'); +$taskTable->status->range('wait{2}, doing{4}, done{3}, cancel{1}'); +$taskTable->gen(10); + +// 3. 用户登录(选择合适角色) +su('admin'); + +// 4. 创建测试实例(变量名与模块名一致) +$screenTest = new screenTest(); + +// 5. 强制要求:必须包含至少5个测试步骤 +r($screenTest->getProjectTaskTableTest('2023', '01', array(1 => 'Project A', 2 => 'Project B'))) && p('count') && e('~~'); // 步骤1:正常情况有项目数据 +r($screenTest->getProjectTaskTableTest('2023', '02', array())) && p() && e(array()); // 步骤2:空项目列表测试 +r($screenTest->getProjectTaskTableTest('2024', '01', array(1 => 'Project A'))) && p() && e(array()); // 步骤3:无任务数据年月测试 +r($screenTest->getProjectTaskTableTest('2023', '12', array(3 => 'Project C', 4 => 'Project D'))) && p() && e(array()); // 步骤4:无任务数据的项目测试 +r($screenTest->getProjectTaskTableTest('2023', '02', array(1 => 'Project A', 2 => 'Project B'))) && p('count') && e('~~'); // 步骤5:有任务数据的二月查询 \ No newline at end of file diff --git a/module/screen/test/model/yaml/execution_getprojecttasktable.yaml b/module/screen/test/model/yaml/execution_getprojecttasktable.yaml new file mode 100644 index 0000000000..57bbe75e6d --- /dev/null +++ b/module/screen/test/model/yaml/execution_getprojecttasktable.yaml @@ -0,0 +1,25 @@ +--- +title: 执行基础测试数据 +desc: 用于测试getProjectTaskTable方法的执行数据 +author: Claude +version: 1.0 + +fields: +- field: id + note: 执行ID + range: 1-10 +- field: project + note: 所属项目ID + range: 1{4}, 2{3}, 3{2}, 4{1} +- field: name + note: 执行名称 + range: Sprint 1, Sprint 2, Sprint 3, Iteration A, Iteration B, Phase 1, Phase 2, Release 1, Release 2, Kanban 1 +- field: type + note: 执行类型 + range: sprint{4}, stage{3}, kanban{2}, waterfallexec{1} +- field: status + note: 执行状态 + range: wait{2}, doing{5}, done{2}, closed{1} +- field: deleted + note: 删除状态 + range: 0{8}, 1{2} \ No newline at end of file diff --git a/module/screen/test/model/yaml/project_getprojecttasktable.yaml b/module/screen/test/model/yaml/project_getprojecttasktable.yaml new file mode 100644 index 0000000000..c698985c0b --- /dev/null +++ b/module/screen/test/model/yaml/project_getprojecttasktable.yaml @@ -0,0 +1,22 @@ +--- +title: 项目基础测试数据 +desc: 用于测试getProjectTaskTable方法的项目数据 +author: Claude +version: 1.0 + +fields: +- field: id + note: 项目ID + range: 1-5 +- field: name + note: 项目名称 + range: Project A, Project B, Project C, Project D, Project E +- field: type + note: 项目类型 + range: project{3}, program{2} +- field: status + note: 项目状态 + range: wait{1}, doing{3}, done{1} +- field: deleted + note: 删除状态 + range: 0{4}, 1{1} \ No newline at end of file diff --git a/module/screen/test/model/yaml/task_getprojecttasktable.yaml b/module/screen/test/model/yaml/task_getprojecttasktable.yaml new file mode 100644 index 0000000000..d884153cbf --- /dev/null +++ b/module/screen/test/model/yaml/task_getprojecttasktable.yaml @@ -0,0 +1,43 @@ +--- +title: 项目任务统计测试数据 +desc: 用于测试getProjectTaskTable方法的任务数据 +author: Claude +version: 1.0 + +fields: +- field: id + note: 任务ID + range: 1-20 + prefix: "" + postfix: "" +- field: project + note: 项目ID + range: 1{10}, 2{5}, 3{3}, 4{2} +- field: execution + note: 执行ID + range: 1{8}, 2{5}, 3{4}, 4{3} +- field: name + note: 任务名称 + range: Task{20} + format: "Task%03d" +- field: openedBy + note: 创建者 + range: admin{8}, user1{6}, user2{4}, user3{2} +- field: openedDate + note: 创建时间 + range: 2023-01-01 00:00:00-2023-12-31 23:59:59 +- field: finishedBy + note: 完成者 + range: admin{5}, user1{3}, user2{2}, ""{10} +- field: finishedDate + note: 完成时间 + range: 2023-02-01 00:00:00-2023-12-31 23:59:59, ""{10} +- field: deleted + note: 删除状态 + range: 0{18}, 1{2} +- field: vision + note: 视图类型 + range: rnd{15}, ops{3}, lite{2} +- field: status + note: 状态 + range: wait{5}, doing{8}, done{5}, cancel{2} \ No newline at end of file