From 0dd949b033dfb178688093539c7f01e1d5ff3a8d Mon Sep 17 00:00:00 2001 From: liugang Date: Thu, 18 Sep 2025 14:17:04 +0800 Subject: [PATCH] + [misc] Add unit tests for programZen::getPMListByPrograms() method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../test/lib/programzen.unittest.class.php | 31 ++++++++++ .../program/test/zen/getpmlistbyprograms.php | 42 ++++++++++++++ .../zen/yaml/project_getpmlistbyprograms.yaml | 56 +++++++++++++++++++ .../zen/yaml/user_getpmlistbyprograms.yaml | 49 ++++++++++++++++ 4 files changed, 178 insertions(+) create mode 100644 module/program/test/lib/programzen.unittest.class.php create mode 100755 module/program/test/zen/getpmlistbyprograms.php create mode 100644 module/program/test/zen/yaml/project_getpmlistbyprograms.yaml create mode 100644 module/program/test/zen/yaml/user_getpmlistbyprograms.yaml diff --git a/module/program/test/lib/programzen.unittest.class.php b/module/program/test/lib/programzen.unittest.class.php new file mode 100644 index 0000000000..4edd0a2018 --- /dev/null +++ b/module/program/test/lib/programzen.unittest.class.php @@ -0,0 +1,31 @@ +tester = $tester; + $tester->app->setModuleName('program'); + $tester->loadModel('program'); + + $this->objectZen = initReference('program'); + } + + /** + * Test getPMListByPrograms method. + * + * @param array $programs + * @access public + * @return mixed + */ + public function getPMListByProgramsTest($programs = array()) + { + $method = $this->objectZen->getMethod('getPMListByPrograms'); + $method->setAccessible(true); + $result = $method->invokeArgs($this->objectZen->newInstance(), array($programs)); + if(dao::isError()) return dao::getError(); + + return $result; + } +} \ No newline at end of file diff --git a/module/program/test/zen/getpmlistbyprograms.php b/module/program/test/zen/getpmlistbyprograms.php new file mode 100755 index 0000000000..d4782fa5d4 --- /dev/null +++ b/module/program/test/zen/getpmlistbyprograms.php @@ -0,0 +1,42 @@ +#!/usr/bin/env php +loadYaml('project_getpmlistbyprograms', false, 2)->gen(20); +zendata('user')->loadYaml('user_getpmlistbyprograms', false, 2)->gen(10); + +su('admin'); + +$programTest = new programTest(); + +r($programTest->getPMListByProgramsTest(array())) && p() && e('0'); +r($programTest->getPMListByProgramsTest(array( + (object)array('id' => 1, 'type' => 'program', 'PM' => 'admin'), + (object)array('id' => 2, 'type' => 'program', 'PM' => 'user1') +))) && p() && e('2'); +r($programTest->getPMListByProgramsTest(array( + (object)array('id' => 1, 'type' => 'program', 'PM' => 'admin'), + (object)array('id' => 2, 'type' => 'program', 'PM' => ''), + (object)array('id' => 3, 'type' => 'program', 'PM' => 'user2') +))) && p() && e('2'); +r($programTest->getPMListByProgramsTest(array( + (object)array('id' => 1, 'type' => 'program', 'PM' => 'admin'), + (object)array('id' => 2, 'type' => 'program', 'PM' => 'admin'), + (object)array('id' => 3, 'type' => 'program', 'PM' => 'user1') +))) && p() && e('2'); +r($programTest->getPMListByProgramsTest(array( + (object)array('id' => 1, 'type' => 'program', 'PM' => 'admin'), + (object)array('id' => 2, 'type' => 'project', 'PM' => 'user1') +))) && p() && e('2'); \ No newline at end of file diff --git a/module/program/test/zen/yaml/project_getpmlistbyprograms.yaml b/module/program/test/zen/yaml/project_getpmlistbyprograms.yaml new file mode 100644 index 0000000000..882947e34b --- /dev/null +++ b/module/program/test/zen/yaml/project_getpmlistbyprograms.yaml @@ -0,0 +1,56 @@ +--- +title: 测试数据:项目集和项目数据 +desc: 为getPMListByPrograms方法测试提供项目集和项目测试数据 +author: Claude +version: 1.0 + +fields: +- field: id + note: 项目ID + range: 1-20 + prefix: "" + postfix: "" + loop: 0 + format: "" +- field: type + note: 项目类型 + range: program{5},project{15} + prefix: "" + postfix: "" + loop: 0 + format: "" +- field: name + note: 项目名称 + range: 项目集A,项目集B,项目集C,项目集D,项目集E,项目A1,项目A2,项目B1,项目B2,项目B3,项目C1,项目C2,项目C3,项目D1,项目D2,项目D3,项目E1,项目E2,项目E3,项目E4 + prefix: "" + postfix: "" + loop: 0 + format: "" +- field: PM + note: 项目经理 + range: admin{5},user1{3},user2{4},user3{3},user4{2},[]{3} + prefix: "" + postfix: "" + loop: 0 + format: "" +- field: status + note: 项目状态 + range: doing{8},wait{5},closed{4},suspended{3} + prefix: "" + postfix: "" + loop: 0 + format: "" +- field: parent + note: 父项目 + range: 0{5},1{3},2{4},3{3},4{2},5{3} + prefix: "" + postfix: "" + loop: 0 + format: "" +- field: deleted + note: 删除标记 + range: 0 + prefix: "" + postfix: "" + loop: 0 + format: "" \ No newline at end of file diff --git a/module/program/test/zen/yaml/user_getpmlistbyprograms.yaml b/module/program/test/zen/yaml/user_getpmlistbyprograms.yaml new file mode 100644 index 0000000000..5e8befdbcf --- /dev/null +++ b/module/program/test/zen/yaml/user_getpmlistbyprograms.yaml @@ -0,0 +1,49 @@ +--- +title: 测试数据:用户数据 +desc: 为getPMListByPrograms方法测试提供用户测试数据 +author: Claude +version: 1.0 + +fields: +- field: id + note: 用户ID + range: 1-10 + prefix: "" + postfix: "" + loop: 0 + format: "" +- field: account + note: 用户账号 + range: admin,user1,user2,user3,user4,user5,user6,user7,user8,user9 + prefix: "" + postfix: "" + loop: 0 + format: "" +- field: realname + note: 真实姓名 + range: 管理员,用户一,用户二,用户三,用户四,用户五,用户六,用户七,用户八,用户九 + prefix: "" + postfix: "" + loop: 0 + format: "" +- field: role + note: 用户角色 + range: admin{1},qa{3},dev{4},pm{2} + prefix: "" + postfix: "" + loop: 0 + format: "" +- field: avatar + note: 头像 + range: "" + prefix: "" + postfix: "" + loop: 0 + format: "" +- field: deleted + note: 删除标记 + range: 0 + prefix: "" + postfix: "" + loop: 0 + format: "" \ No newline at end of file