+ [misc] Add unit tests for productZen::getProducts4DropMenu() method

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-09-15 15:09:58 +08:00
co-authored by Claude
parent be94de9bf7
commit 0517a21ec2
3 changed files with 223 additions and 0 deletions
@@ -2723,4 +2723,34 @@ class productTest
return $result;
}
/**
* Test getProducts4DropMenu method.
*
* @param string $shadow
* @param string $module
* @access public
* @return int
*/
public function getProducts4DropMenuTest(string $shadow = '0', string $module = '')
{
global $tester;
// 创建productZen实例并初始化相关模型
$productZen = new productZen();
$productZen->loadModel('product');
$productZen->loadModel('workflow');
$productZen->loadModel('feedback');
$productZen->config = $tester->config;
$productZen->app = $tester->app;
$productZen->session = $tester->session;
$method = $this->objectZen->getMethod('getProducts4DropMenu');
$method->setAccessible(true);
$result = $method->invokeArgs($productZen, array($shadow, $module));
if(dao::isError()) return dao::getError();
return is_array($result) ? count($result) : 0;
}
}
+59
View File
@@ -0,0 +1,59 @@
#!/usr/bin/env php
<?php
/**
title=测试 productZen::getProducts4DropMenu();
timeout=0
cid=0
- 步骤1:正常情况获取产品下拉菜单数据(不包含影子产品) @8
- 步骤2:获取所有产品包括影子产品 @10
- 步骤3:指定module参数 @8
- 步骤4:正常参数测试 @8
- 步骤5:边界参数测试 @10
*/
// 1. 导入依赖
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/product.unittest.class.php';
// 2. zendata数据准备
$product = zenData('product');
$product->id->range('1-10');
$product->name->range('产品A,产品B,产品C,产品D,产品E,Shadow产品,Workflow产品,Feedback产品,Project产品,Normal产品');
$product->code->range('PRODA,PRODB,PRODC,PRODD,PRODE,SHADOWS,WORKFLOW,FEEDBACK,PROJECT,NORMAL');
$product->shadow->range('0{8},1{2}');
$product->status->range('normal{7},closed{3}');
$product->type->range('normal');
$product->acl->range('open');
$product->vision->range('rnd');
$product->deleted->range('0');
$product->gen(10);
$project = zenData('project');
$project->id->range('1-3');
$project->name->range('项目A,项目B,项目C');
$project->status->range('doing');
$project->type->range('project');
$project->deleted->range('0');
$project->gen(3);
$projectproduct = zenData('projectproduct');
$projectproduct->project->range('1-3');
$projectproduct->product->range('1-3');
$projectproduct->gen(3);
// 3. 用户登录
su('admin');
// 4. 创建测试实例
$productTest = new productTest();
// 5. 执行测试步骤 - 检查结果数量
r($productTest->getProducts4DropMenuTest('0', '')) && p() && e('8'); // 步骤1:正常情况获取产品下拉菜单数据(不包含影子产品)
r($productTest->getProducts4DropMenuTest('all', '')) && p() && e('10'); // 步骤2:获取所有产品包括影子产品
r($productTest->getProducts4DropMenuTest('0', 'testmodule')) && p() && e('8'); // 步骤3:指定module参数
r($productTest->getProducts4DropMenuTest('0', '')) && p() && e('8'); // 步骤4:正常参数测试
r($productTest->getProducts4DropMenuTest('all', 'any')) && p() && e('10'); // 步骤5:边界参数测试
@@ -0,0 +1,134 @@
---
title: 产品下拉菜单测试数据
desc: 为getProducts4DropMenu方法生成测试数据
fields:
- field: id
note: 产品ID
range: 1-10
- field: program
note: 项目集ID
range: 1-3
- field: name
note: 产品名称
range: "产品A,产品B,产品C,产品D,产品E,Shadow产品,Workflow产品,Feedback产品,Project产品,Normal产品"
- field: code
note: 产品代码
range: "PRODA,PRODB,PRODC,PRODD,PRODE,SHADOWS,WORKFLOW,FEEDBACK,PROJECT,NORMAL"
- field: shadow
note: 影子产品标识
range: 0{8},1{2}
- field: bind
note: 绑定标识
range: "0"
- field: line
note: 产品线ID
range: 0-2
- field: type
note: 产品类型
range: "normal{8},branch{2}"
- field: status
note: 产品状态
range: "normal{7},closed{3}"
- field: subStatus
note: 子状态
range: ""
- field: desc
note: 产品描述
range: "这是产品A的描述,这是产品B的描述,这是产品C的描述,这是产品D的描述,这是产品E的描述,这是Shadow产品的描述,这是Workflow产品的描述,这是Feedback产品的描述,这是Project产品的描述,这是Normal产品的描述"
- field: PO
note: 产品负责人
range: "admin,user1,user2,user3"
- field: QD
note: 测试负责人
range: "admin,user1,user2"
- field: RD
note: 发布负责人
range: "admin,user1,user2"
- field: feedback
note: 反馈负责人
range: "admin,user1"
- field: ticket
note: 工单负责人
range: "admin"
- field: workflowGroup
note: 工作流组
range: 0{8},1{2}
- field: acl
note: 访问控制
range: "open{6},private{2},custom{2}"
- field: groups
note: 用户组
range: "1,2,3,1,2,2,3,1,2,3"
- field: whitelist
note: 白名单
range: "admin,user1,admin,user2,admin,user1,user2,admin,user1,admin"
- field: reviewer
note: 评审人员
range: "admin,user1,admin,user2,admin,user1,user2,admin,user1,admin"
- field: PMT
note: PMT成员
range: "admin,user1,admin,user2,admin,user1,user2,admin,user1,admin"
- field: draftEpics
note: 草稿史诗数量
range: 0-5
- field: activeEpics
note: 激活史诗数量
range: 0-8
- field: changingEpics
note: 变更史诗数量
range: 0-3
- field: order
note: 排序
range: 10-50:5
- field: vision
note: 视角
range: "rnd"
- field: createdBy
note: 创建者
range: "admin,user1,user2"
- field: createdDate
note: 创建时间
range: "(-1M)-(0D):1D"
format: "YYYY-MM-DD hh:mm:ss"
- field: editedBy
note: 编辑者
range: "admin,user1,user2"
- field: editedDate
note: 编辑时间
range: "(-1w)-(0D):1D"
format: "YYYY-MM-DD hh:mm:ss"
- field: deleted
note: 是否删除
range: "0"