From e69694a3df713033b19c9dfa40153dcc223a6e2d Mon Sep 17 00:00:00 2001 From: liugang Date: Mon, 8 Sep 2025 14:15:42 +0800 Subject: [PATCH] + [misc] Add unit tests for groupModel::getProductsForAdminGroup() 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 --- .../group/test/lib/group.unittest.class.php | 33 +++++++++++++ .../test/model/getproductsforadmingroup.php | 47 +++++++++++++++++++ .../product_getproductsforadmingroup.yaml | 43 +++++++++++++++++ .../program_getproductsforadmingroup.yaml | 40 ++++++++++++++++ 4 files changed, 163 insertions(+) create mode 100755 module/group/test/model/getproductsforadmingroup.php create mode 100644 module/group/test/model/yaml/product_getproductsforadmingroup.yaml create mode 100644 module/group/test/model/yaml/program_getproductsforadmingroup.yaml diff --git a/module/group/test/lib/group.unittest.class.php b/module/group/test/lib/group.unittest.class.php index fc8f707198..7be503b731 100755 --- a/module/group/test/lib/group.unittest.class.php +++ b/module/group/test/lib/group.unittest.class.php @@ -587,4 +587,37 @@ class groupTest return $result; } + + /** + * Test getProductsForAdminGroup method. + * + * @param array $programs + * @access public + * @return array + */ + public function getProductsForAdminGroupTest($programs = array()) + { + $reflectionClass = new ReflectionClass($this->objectModel); + $method = $reflectionClass->getMethod('getProductsForAdminGroup'); + $method->setAccessible(true); + $result = $method->invoke($this->objectModel, $programs); + if(dao::isError()) return dao::getError(); + + return $result; + } + + /** + * Test getProductsForAdminGroup method return count. + * + * @param array $programs + * @access public + * @return int + */ + public function getProductsForAdminGroupCountTest($programs = array()) + { + $result = $this->getProductsForAdminGroupTest($programs); + if(dao::isError()) return dao::getError(); + + return count($result); + } } diff --git a/module/group/test/model/getproductsforadmingroup.php b/module/group/test/model/getproductsforadmingroup.php new file mode 100755 index 0000000000..e11910faf2 --- /dev/null +++ b/module/group/test/model/getproductsforadmingroup.php @@ -0,0 +1,47 @@ +#!/usr/bin/env php +id->range('1-10'); +$table->program->range('1{3},2{3},0{4}'); +$table->name->range('正常产品1,正常产品2,正常产品3,正常产品4,正常产品5,正常产品6,正常产品7,正常产品8,删除产品9,影子产品10'); +$table->code->range('product1,product2,product3,product4,product5,product6,product7,product8,product9,product10'); +$table->shadow->range('0{8},0{1},1{1}'); +$table->deleted->range('0{8},1{1},0{1}'); +$table->vision->range('rnd{10}'); +$table->status->range('normal{8},closed{2}'); +$table->gen(10); + +// 3. 用户登录(选择合适角色) +su('admin'); + +// 4. 创建测试实例(变量名与模块名一致) +$groupTest = new groupTest(); + +// 保存原始系统模式配置 +global $config; +$originalSystemMode = $config->systemMode; + +// 5. 🔴 强制要求:必须包含至少5个测试步骤 +r($groupTest->getProductsForAdminGroupCountTest()) && p() && e('8'); // 步骤1:无参数时返回有效产品数量 +r($groupTest->getProductsForAdminGroupCountTest(array())) && p() && e('8'); // 步骤2:空数组参数时返回有效产品数量 +r($groupTest->getProductsForAdminGroupTest(array())) && p('1') && e('正常产品1'); // 步骤3:验证第一个产品名称 +$config->systemMode = 'normal'; r($groupTest->getProductsForAdminGroupTest(array('1' => '项目集1'))) && p('1') && e('正常产品1'); // 步骤4:普通模式产品名称 +$config->systemMode = 'ALM'; r($groupTest->getProductsForAdminGroupTest(array('1' => '项目集1'))) && p('1') && e('项目集1/正常产品1'); // 步骤5:ALM模式产品名称格式 \ No newline at end of file diff --git a/module/group/test/model/yaml/product_getproductsforadmingroup.yaml b/module/group/test/model/yaml/product_getproductsforadmingroup.yaml new file mode 100644 index 0000000000..2746c49bd4 --- /dev/null +++ b/module/group/test/model/yaml/product_getproductsforadmingroup.yaml @@ -0,0 +1,43 @@ +--- +title: 产品测试数据 +desc: 用于getProductsForAdminGroup方法测试的产品数据 +author: claude +version: 1.0 + +fields: +- field: id + note: 产品ID + range: 1-10 + prefix: "" + postfix: "" +- field: program + note: 所属项目ID + range: 1{3},2{3},3{2},0{2} +- field: name + note: 产品名称 + range: 产品1,产品2,产品3,产品4,产品5,产品6,产品7,产品8,产品9,产品10 +- field: code + note: 产品代码 + range: product1,product2,product3,product4,product5,product6,product7,product8,product9,product10 +- field: shadow + note: 影子产品 + range: 0{8},1{2} +- field: type + note: 产品类型 + range: normal{8},branch{2} +- field: status + note: 产品状态 + range: normal{6},closed{2},[]{2} +- field: deleted + note: 是否删除 + range: 0{8},1{2} +- field: vision + note: 界面类型 + range: rnd{5},lite{3},or{2} +- field: createdBy + note: 创建者 + range: admin{3},user1{2},user2{2},user3{2},system{1} +- field: createdDate + note: 创建时间 + range: 2024-01-01 00:00:00-2024-12-31 23:59:59:1D + format: YYYY-MM-DD hh:mm:ss \ No newline at end of file diff --git a/module/group/test/model/yaml/program_getproductsforadmingroup.yaml b/module/group/test/model/yaml/program_getproductsforadmingroup.yaml new file mode 100644 index 0000000000..9ba0c8a32d --- /dev/null +++ b/module/group/test/model/yaml/program_getproductsforadmingroup.yaml @@ -0,0 +1,40 @@ +--- +title: 项目集测试数据 +desc: 用于getProductsForAdminGroup方法测试的项目集数据 +author: claude +version: 1.0 + +fields: +- field: id + note: 项目集ID + range: 1-5 + prefix: "" + postfix: "" +- field: name + note: 项目集名称 + range: 项目集1,项目集2,项目集3,项目集4,项目集5 +- field: code + note: 项目集代码 + range: program1,program2,program3,program4,program5 +- field: parent + note: 父项目集ID + range: 0{3},1{1},2{1} +- field: type + note: 项目集类型 + range: program{3},project{2} +- field: status + note: 项目集状态 + range: doing{3},wait{1},closed{1} +- field: deleted + note: 是否删除 + range: 0{4},1{1} +- field: vision + note: 界面类型 + range: rnd{3},lite{1},or{1} +- field: createdBy + note: 创建者 + range: admin{2},user1{1},user2{1},system{1} +- field: createdDate + note: 创建时间 + range: 2024-01-01 00:00:00-2024-12-31 23:59:59:1D + format: YYYY-MM-DD hh:mm:ss \ No newline at end of file