+ [misc] Add unit tests for productZen::getProductList4Kanban() 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:59 +08:00
co-authored by Claude
parent 5d5fe5f633
commit 97252532ec
6 changed files with 495 additions and 0 deletions
@@ -4276,4 +4276,32 @@ class productTest
return 'error: ' . $e->getMessage();
}
}
/**
* Test getProductList4Kanban method.
*
* @param array $productList
* @param array $planList
* @param array $projectList
* @param array $releaseList
* @param array $projectProduct
* @access public
* @return array
*/
public function getProductList4KanbanTest(array $productList = array(), array $planList = array(), array $projectList = array(), array $releaseList = array(), array $projectProduct = array()): array
{
// 直接包含zen文件
include_once dirname(dirname(__FILE__)) . '/../zen.php';
$productZen = new productZen();
// 使用反射调用protected方法
$reflection = new ReflectionClass($productZen);
$method = $reflection->getMethod('getProductList4Kanban');
$method->setAccessible(true);
$result = $method->invoke($productZen, $productList, $planList, $projectList, $releaseList, $projectProduct);
if(dao::isError()) return dao::getError();
return $result;
}
}
+33
View File
@@ -0,0 +1,33 @@
#!/usr/bin/env php
<?php
/**
title=测试 productZen::getProductList4Kanban();
timeout=0
cid=0
- 步骤1:空参数测试 @0
- 步骤2:正常产品列表测试 @1
- 步骤3:产品状态过滤测试 @0
- 步骤4:包含计划数据测试 @1
- 步骤5:项目关联测试 @1
*/
// 1. 导入依赖(路径固定,不可修改)
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/product.unittest.class.php';
// 3. 用户登录(选择合适角色)
su('admin');
// 4. 创建测试实例(变量名与模块名一致)
$productTest = new productTest();
// 5. 🔴 强制要求:必须包含至少5个测试步骤
r($productTest->getProductList4KanbanTest(array(), array(), array(), array(), array())) && p() && e(0); // 步骤1:空参数测试
r($productTest->getProductList4KanbanTest(array(1 => (object)array('id' => 1, 'name' => '产品A', 'status' => 'normal', 'program' => 1)), array(), array(), array(), array())) && p() && e(1); // 步骤2:正常产品列表测试
r($productTest->getProductList4KanbanTest(array(1 => (object)array('id' => 1, 'name' => '产品A', 'status' => 'closed', 'program' => 1)), array(), array(), array(), array())) && p() && e(0); // 步骤3:产品状态过滤测试
r($productTest->getProductList4KanbanTest(array(1 => (object)array('id' => 1, 'name' => '产品A', 'status' => 'normal', 'program' => 1)), array(1 => array((object)array('id' => 1, 'title' => '计划A'))), array(), array(), array())) && p() && e(1); // 步骤4:包含计划数据测试
r($productTest->getProductList4KanbanTest(array(1 => (object)array('id' => 1, 'name' => '产品A', 'status' => 'normal', 'program' => 1)), array(), array(1 => (object)array('id' => 1, 'name' => '项目A')), array(), array(1 => array(1 => (object)array('id' => 1, 'name' => '项目A'))))) && p() && e(1); // 步骤5:项目关联测试
@@ -0,0 +1,126 @@
---
title: 产品看板列表测试数据
desc: 测试getProductList4Kanban方法的产品数据
author: Claude
version: 1.0
fields:
- field: id
note: 产品ID
range: 1-10
prefix: ""
postfix: ""
loop: 0
format: ""
- field: name
note: 产品名称
range: "产品A,产品B,产品C,产品D,产品E,产品F,产品G,产品H,产品I,产品J"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: code
note: 产品代码
range: "PA,PB,PC,PD,PE,PF,PG,PH,PI,PJ"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: program
note: 项目集ID
range: 0,1,2,0,1,2,0,1,2,0
prefix: ""
postfix: ""
loop: 0
format: ""
- field: line
note: 产品线ID
range: 0,1,1,2,2,0,1,1,2,0
prefix: ""
postfix: ""
loop: 0
format: ""
- field: type
note: 产品类型
range: normal{8},branch{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: status
note: 产品状态
range: normal{8},closed{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: desc
note: 产品描述
range: "产品描述1,产品描述2,产品描述3,产品描述4,产品描述5,产品描述6,产品描述7,产品描述8,产品描述9,产品描述10"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: PO
note: 产品负责人
range: admin{5},user1{3},user2{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: QD
note: 测试负责人
range: "admin,user1,user2,admin,user1,user2,admin,user1,user2,admin"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: RD
note: 发布负责人
range: "admin,user1,user2,admin,user1,user2,admin,user1,user2,admin"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: acl
note: 访问控制
range: open{6},private{4}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: createdBy
note: 创建者
range: admin{7},user1{3}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: createdDate
note: 创建时间
range: "2023-01-01 00:00:00,2023-02-01 00:00:00,2023-03-01 00:00:00,2023-04-01 00:00:00,2023-05-01 00:00:00,2023-06-01 00:00:00,2023-07-01 00:00:00,2023-08-01 00:00:00,2023-09-01 00:00:00,2023-10-01 00:00:00"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: order
note: 排序
range: 1-10
prefix: ""
postfix: ""
loop: 0
format: ""
- field: vision
note: 视图
range: rnd{10}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: deleted
note: 是否删除
range: 0{10}
prefix: ""
postfix: ""
loop: 0
format: ""
@@ -0,0 +1,84 @@
---
title: 产品计划看板测试数据
desc: 测试getProductList4Kanban方法的产品计划数据
author: Claude
version: 1.0
fields:
- field: id
note: 计划ID
range: 1-15
prefix: ""
postfix: ""
loop: 0
format: ""
- field: product
note: 产品ID
range: 1,1,2,2,3,3,4,4,5,5,6,7,8,9,10
prefix: ""
postfix: ""
loop: 0
format: ""
- field: branch
note: 分支ID
range: 0{15}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: title
note: 计划标题
range: "计划A1,计划A2,计划B1,计划B2,计划C1,计划C2,计划D1,计划D2,计划E1,计划E2,计划F1,计划G1,计划H1,计划I1,计划J1"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: desc
note: 计划描述
range: "描述A1,描述A2,描述B1,描述B2,描述C1,描述C2,描述D1,描述D2,描述E1,描述E2,描述F1,描述G1,描述H1,描述I1,描述J1"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: begin
note: 开始时间
range: "2024-01-01,2024-01-15,2024-02-01,2024-02-15,2024-03-01,2024-03-15,2024-04-01,2024-04-15,2024-05-01,2024-05-15,2024-06-01,2024-06-15,2024-07-01,2024-07-15,2024-08-01"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: end
note: 结束时间
range: "2024-12-31,2024-12-31,2024-12-31,2024-12-31,2024-12-31,2024-12-31,2024-12-31,2024-12-31,2024-12-31,2024-12-31,2024-12-31,2024-12-31,2024-12-31,2024-12-31,2024-12-31"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: status
note: 计划状态
range: doing{12},wait{3}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: createdBy
note: 创建者
range: admin{10},user1{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: createdDate
note: 创建时间
range: "2023-12-01 00:00:00,2023-12-02 00:00:00,2023-12-03 00:00:00,2023-12-04 00:00:00,2023-12-05 00:00:00,2023-12-06 00:00:00,2023-12-07 00:00:00,2023-12-08 00:00:00,2023-12-09 00:00:00,2023-12-10 00:00:00,2023-12-11 00:00:00,2023-12-12 00:00:00,2023-12-13 00:00:00,2023-12-14 00:00:00,2023-12-15 00:00:00"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: deleted
note: 是否删除
range: 0{15}
prefix: ""
postfix: ""
loop: 0
format: ""
@@ -0,0 +1,133 @@
---
title: 项目看板测试数据
desc: 测试getProductList4Kanban方法的项目数据
author: Claude
version: 1.0
fields:
- field: id
note: 项目ID
range: 1-12
prefix: ""
postfix: ""
loop: 0
format: ""
- field: name
note: 项目名称
range: "项目Alpha,项目Beta,项目Gamma,项目Delta,项目Epsilon,项目Zeta,项目Eta,项目Theta,项目Iota,项目Kappa,项目Lambda,项目Mu"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: code
note: 项目代码
range: "PROJ001,PROJ002,PROJ003,PROJ004,PROJ005,PROJ006,PROJ007,PROJ008,PROJ009,PROJ010,PROJ011,PROJ012"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: type
note: 项目类型
range: project{10},program{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: model
note: 项目模型
range: scrum{8},waterfall{4}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: status
note: 项目状态
range: doing{8},wait{2},suspended{1},closed{1}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: budget
note: 项目预算
range: 100000,150000,200000,250000,300000,350000,400000,450000,500000,550000,600000,650000
prefix: ""
postfix: ""
loop: 0
format: ""
- field: begin
note: 开始时间
range: "2024-01-01,2024-01-15,2024-02-01,2024-02-15,2024-03-01,2024-03-15,2024-04-01,2024-04-15,2024-05-01,2024-05-15,2024-06-01,2024-06-15"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: end
note: 结束时间
range: "2024-12-31,2024-12-31,2024-12-31,2024-12-31,2024-12-31,2024-12-31,2024-12-31,2024-12-31,2024-12-31,2024-12-31,2024-12-31,2024-12-31"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: PM
note: 项目经理
range: admin{6},user1{3},user2{3}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: PO
note: 产品负责人
range: admin{6},user1{3},user2{3}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: QD
note: 测试负责人
range: admin{6},user1{3},user2{3}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: RD
note: 发布负责人
range: admin{6},user1{3},user2{3}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: acl
note: 访问控制
range: open{8},private{4}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: createdBy
note: 创建者
range: admin{8},user1{4}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: createdDate
note: 创建时间
range: "2023-12-01 00:00:00,2023-12-02 00:00:00,2023-12-03 00:00:00,2023-12-04 00:00:00,2023-12-05 00:00:00,2023-12-06 00:00:00,2023-12-07 00:00:00,2023-12-08 00:00:00,2023-12-09 00:00:00,2023-12-10 00:00:00,2023-12-11 00:00:00,2023-12-12 00:00:00"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: deleted
note: 是否删除
range: 0{12}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: hasProduct
note: 是否关联产品
range: 1{12}
prefix: ""
postfix: ""
loop: 0
format: ""
@@ -0,0 +1,91 @@
---
title: 发布看板测试数据
desc: 测试getProductList4Kanban方法的发布数据
author: Claude
version: 1.0
fields:
- field: id
note: 发布ID
range: 1-15
prefix: ""
postfix: ""
loop: 0
format: ""
- field: product
note: 产品ID
range: 1,1,2,2,3,3,4,4,5,5,6,7,8,9,10
prefix: ""
postfix: ""
loop: 0
format: ""
- field: branch
note: 分支ID
range: 0{15}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: name
note: 发布名称
range: "发布v1.0,发布v1.1,发布v2.0,发布v2.1,发布v3.0,发布v3.1,发布v4.0,发布v4.1,发布v5.0,发布v5.1,发布v6.0,发布v7.0,发布v8.0,发布v9.0,发布v10.0"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: marker
note: 里程碑标识
range: 0,1,0,1,0,1,0,1,0,1,0,0,0,0,0
prefix: ""
postfix: ""
loop: 0
format: ""
- field: date
note: 发布日期
range: "2024-01-15,2024-01-30,2024-02-15,2024-02-28,2024-03-15,2024-03-31,2024-04-15,2024-04-30,2024-05-15,2024-05-31,2024-06-15,2024-06-30,2024-07-15,2024-07-31,2024-08-15"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: status
note: 发布状态
range: normal{12},terminate{3}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: subStatus
note: 子状态
range: ""{15}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: desc
note: 发布描述
range: "发布描述1,发布描述2,发布描述3,发布描述4,发布描述5,发布描述6,发布描述7,发布描述8,发布描述9,发布描述10,发布描述11,发布描述12,发布描述13,发布描述14,发布描述15"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: createdBy
note: 创建者
range: admin{10},user1{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: createdDate
note: 创建时间
range: "2023-12-01 00:00:00,2023-12-02 00:00:00,2023-12-03 00:00:00,2023-12-04 00:00:00,2023-12-05 00:00:00,2023-12-06 00:00:00,2023-12-07 00:00:00,2023-12-08 00:00:00,2023-12-09 00:00:00,2023-12-10 00:00:00,2023-12-11 00:00:00,2023-12-12 00:00:00,2023-12-13 00:00:00,2023-12-14 00:00:00,2023-12-15 00:00:00"
prefix: ""
postfix: ""
loop: 0
format: ""
- field: deleted
note: 是否删除
range: 0{15}
prefix: ""
postfix: ""
loop: 0
format: ""