+ [misc] Add unit tests for programZen::getProgramList4Kanban() method

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-11-12 08:31:06 +08:00
co-authored by Claude
parent 5607c67a94
commit 9fa25c6838
8 changed files with 531 additions and 0 deletions
@@ -135,4 +135,21 @@ class programTest
return $result;
}
/**
* Test getProgramList4Kanban method.
*
* @param string $browseType
* @access public
* @return array
*/
public function getProgramList4KanbanTest(string $browseType = 'my')
{
$method = $this->objectZen->getMethod('getProgramList4Kanban');
$method->setAccessible(true);
$result = $method->invokeArgs($this->objectZen->newInstance(), array($browseType));
if(dao::isError()) return dao::getError();
return $result;
}
}
+40
View File
@@ -0,0 +1,40 @@
#!/usr/bin/env php
<?php
/**
title=测试 programZen::getProgramList4Kanban();
timeout=0
cid=0
- 测试步骤1:使用默认参数my获取看板数据 @1
- 测试步骤2:使用参数my获取看板数据 @1
- 测试步骤3:使用参数other获取看板数据 @1
- 测试步骤4:使用参数all获取看板数据 @1
- 测试步骤5:使用空字符串参数获取看板数据 @1
- 测试步骤6:验证my类型返回的项目集数量大于等于0 @1
- 测试步骤7:验证other类型返回结果结构正确 @array
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/programzen.unittest.class.php';
zenData('project')->loadYaml('getprogramlist4kanban/project', false, 2)->gen(50);
zenData('product')->loadYaml('getprogramlist4kanban/product', false, 2)->gen(30);
zenData('productplan')->loadYaml('getprogramlist4kanban/productplan', false, 2)->gen(40);
zenData('release')->loadYaml('getprogramlist4kanban/release', false, 2)->gen(30);
zenData('projectproduct')->loadYaml('getprogramlist4kanban/projectproduct', false, 2)->gen(25);
zenData('stakeholder')->loadYaml('getprogramlist4kanban/stakeholder', false, 2)->gen(50);
su('admin');
$programTest = new programTest();
r(is_array($programTest->getProgramList4KanbanTest())) && p() && e('1'); // 测试步骤1:使用默认参数my获取看板数据
r(is_array($programTest->getProgramList4KanbanTest('my'))) && p() && e('1'); // 测试步骤2:使用参数my获取看板数据
r(is_array($programTest->getProgramList4KanbanTest('other'))) && p() && e('1'); // 测试步骤3:使用参数other获取看板数据
r(is_array($programTest->getProgramList4KanbanTest('all'))) && p() && e('1'); // 测试步骤4:使用参数all获取看板数据
r(is_array($programTest->getProgramList4KanbanTest(''))) && p() && e('1'); // 测试步骤5:使用空字符串参数获取看板数据
r(count($programTest->getProgramList4KanbanTest('my')) >= 0) && p() && e('1'); // 测试步骤6:验证my类型返回的项目集数量大于等于0
r(gettype($programTest->getProgramList4KanbanTest('other'))) && p() && e('array'); // 测试步骤7:验证other类型返回结果结构正确
@@ -0,0 +1,79 @@
---
title: 产品测试数据
desc: 用于getProgramList4Kanban方法的产品测试数据
fields:
- field: id
note: ID
range: 1-30
- field: program
note: 所属项目集
range: '0{5},1{5},2{5},3{5},4{5},5{5}'
- field: name
note: 产品名称
range: '产品A,产品B,产品C,产品D,产品E,产品F,产品G,产品H,产品I,产品J,产品K,产品L,产品M,产品N,产品O,产品P,产品Q,产品R,产品S,产品T,产品U,产品V,产品W,产品X,产品Y,产品Z,产品AA,产品AB,产品AC,产品AD'
- field: code
note: 产品代码
range: ''
- field: shadow
note: 影子产品
range: 0
- field: bind
note: 绑定
range: '0'
- field: line
note: 产品线
range: 0
- field: type
note: 类型
range: 'normal'
- field: status
note: 状态
range: 'normal{25},closed{5}'
- field: subStatus
note: 子状态
range: ''
- field: desc
note: 描述
range: '这是一个测试产品'
- field: PO
note: 产品负责人
range: 'admin{10},user1{10},user2{10}'
- field: QD
note: 测试负责人
range: 'admin{10},user1{10},user2{10}'
- field: RD
note: 发布负责人
range: 'admin{10},user1{10},user2{10}'
- field: feedback
note: 反馈
range: ''
- field: acl
note: 访问控制
range: 'open{20},private{10}'
- field: whitelist
note: 白名单
range: ''
- field: reviewer
note: 评审人
range: ''
- field: createdBy
note: 创建者
range: 'admin{20},user1{5},user2{5}'
- field: createdDate
note: 创建日期
range: '`(-180D)-(-30D):10D`'
type: timestamp
format: YYYY-MM-DD hh:mm:ss
- field: createdVersion
note: 创建版本
range: ''
- field: order
note: 排序
range: 1-30
- field: vision
note: 视图
range: rnd
- field: deleted
note: 已删除
range: '0'
@@ -0,0 +1,59 @@
---
title: 产品计划测试数据
desc: 用于getProgramList4Kanban方法的产品计划测试数据
fields:
- field: id
note: ID
range: 1-40
- field: product
note: 所属产品
range: 1-30:R
- field: branch
note: 分支
range: '0'
- field: parent
note: 父计划
range: 0
- field: title
note: 计划标题
range: '计划1.0,计划1.1,计划1.2,计划2.0,计划2.1,计划3.0,计划3.1,迭代1,迭代2,迭代3,迭代4,迭代5,版本A,版本B,版本C,版本D,版本E,版本F,版本G,版本H,版本I,版本J,版本K,版本L,版本M,版本N,版本O,版本P,版本Q,版本R,版本S,版本T,版本U,版本V,版本W,版本X,版本Y,版本Z,版本AA,版本AB'
- field: status
note: 状态
range: '[wait]{10},[doing]{15},[done]{10},[closed]{5}'
- field: desc
note: 描述
range: '这是一个测试计划'
- field: begin
note: 开始日期
range: '`(-60D)-(-10D):5D`'
type: timestamp
format: YYYY-MM-DD
- field: end
note: 结束日期
range: '`(+10D)-(+120D):10D`'
type: timestamp
format: YYYY-MM-DD
- field: finishedDate
note: 完成日期
range: '0000-00-00 00:00:00{25},`(-5D)-(+5D):2D`{15}'
- field: closedDate
note: 关闭日期
range: '0000-00-00 00:00:00{35},`(-3D)-(+3D):1D`{5}'
- field: order
note: 排序
range: ''
- field: closedReason
note: 关闭原因
range: '[]{35},done{5}'
- field: createdBy
note: 创建者
range: 'admin{20},user1{10},user2{10}'
- field: createdDate
note: 创建日期
range: '`(-90D)-(-20D):10D`'
type: timestamp
format: YYYY-MM-DD hh:mm:ss
- field: deleted
note: 已删除
range: '0'
@@ -0,0 +1,213 @@
---
title: 项目集和项目测试数据
desc: 用于getProgramList4Kanban方法的项目集测试数据
fields:
- field: id
note: ID
range: 1-50
- field: project
note: 所属项目
range: 0
- field: isTpl
note: 是否模板
range: 0
- field: charter
note: 章程
range: 0
- field: model
note: 模型
range: ''
- field: type
note: 类型
range: '[program]{15},[project]{20},[sprint]{10},[stage]{5}'
- field: category
note: 分类
range: ''
- field: lifetime
note: 生命周期
range: ''
- field: budget
note: 预算
range: '0'
- field: budgetUnit
note: 预算单位
range: CNY
- field: attribute
note: 属性
range: ''
- field: percent
note: 百分比
range: 0-100:10
- field: milestone
note: 里程碑
range: '0'
- field: output
note: 输出
range: ''
- field: auth
note: 权限
range: ''
- field: storyType
note: 需求类型
range: ''
- field: parent
note: 父级
range: 0-5
- field: path
note: 路径
range: ',1,;,2,;,3,;,4,;,5,'
- field: grade
note: 级别
range: 1-3
- field: name
note: 名称
range: '顶级项目集{5},子项目集{10},项目{20},迭代{10},阶段{5}'
- field: code
note: 代码
range: ''
- field: mark
note: 标记
range: ''
- field: begin
note: 开始日期
range: '`(-90D)-(-30D):10D`'
type: timestamp
format: YYYY-MM-DD
- field: end
note: 结束日期
range: '`(+30D)-(+180D):15D`'
type: timestamp
format: YYYY-MM-DD
- field: realBegan
note: 实际开始
range: '`(-60D)-(-20D):10D`'
type: timestamp
format: YYYY-MM-DD
- field: realEnd
note: 实际结束
range: '0000-00-00{40},`(-10D)-(+10D):5D`{10}'
- field: planDuration
note: 计划工期
range: 0
- field: realDuration
note: 实际工期
range: 0
- field: status
note: 状态
range: '[wait]{10},[doing]{20},[suspended]{5},[closed]{15}'
- field: subStatus
note: 子状态
range: ''
- field: pri
note: 优先级
range: '1-4:R'
- field: desc
note: 描述
range: '这是一个测试项目集{20},这是一个测试项目{30}'
- field: version
note: 版本
range: 1
- field: parentVersion
note: 父版本
range: 0
- field: openedBy
note: 创建者
range: 'admin{30},user1{10},user2{10}'
- field: openedDate
note: 创建日期
range: '`(-180D)-(-30D):10D`'
type: timestamp
format: YYYY-MM-DD hh:mm:ss
- field: openedVersion
note: 创建版本
range: ''
- field: lastEditedBy
note: 最后编辑者
range: 'admin{20},user1{15},user2{15}'
- field: lastEditedDate
note: 最后编辑日期
range: '`(-30D)-(+0D):3D`'
type: timestamp
format: YYYY-MM-DD hh:mm:ss
- field: closedBy
note: 关闭者
range: '[]{35},admin{10},user1{5}'
- field: closedDate
note: 关闭日期
range: '0000-00-00 00:00:00{35},`(-20D)-(+0D):5D`{15}'
- field: canceledBy
note: 取消者
range: ''
- field: canceledDate
note: 取消日期
range: '0000-00-00 00:00:00'
- field: suspendedDate
note: 挂起日期
range: '0000-00-00 00:00:00{45},`(-10D)-(+0D):2D`{5}'
- field: PO
note: 产品负责人
range: 'admin{15},user1{20},user2{15}'
- field: PM
note: 项目经理
range: 'admin{20},user1{15},user2{15}'
- field: QD
note: 测试负责人
range: 'admin{10},user1{20},user2{20}'
- field: RD
note: 发布负责人
range: 'admin{15},user1{15},user2{20}'
- field: noticeUsers
note: 通知用户
range: ''
- field: feedback
note: 反馈
range: ''
- field: team
note: 团队
range: ''
- field: whitelist
note: 白名单
range: ''
- field: division
note: 分支
range: 0
- field: multiple
note: 多分支
range: '0'
- field: acl
note: 访问控制
range: 'open{30},private{20}'
- field: vision
note: 视图
range: rnd
- field: displayCards
note: 显示卡片
range: 0
- field: fluidBoard
note: 流动看板
range: '0'
- field: colWidth
note: 列宽
range: ''
- field: minColWidth
note: 最小列宽
range: 0
- field: maxColWidth
note: 最大列宽
range: 0
- field: order
note: 排序
range: 1-50
- field: days
note: 工作日
range: 0
- field: vision_edit
note: 视图编辑
range: 0
- field: hours
note: 工时
range: 0
- field: deleted
note: 已删除
range: '0'
@@ -0,0 +1,20 @@
---
title: 项目产品关联测试数据
desc: 用于getProgramList4Kanban方法的项目产品关联测试数据
fields:
- field: project
note: 项目ID
range: 1-30:R
- field: product
note: 产品ID
range: 1-30:R
- field: branch
note: 分支
range: 0
- field: plan
note: 计划
range: '[]{15},1,2,3,4,5,6,7,8,9,10'
- field: roadmap
note: 路线图
range: ''
@@ -0,0 +1,60 @@
---
title: 发布测试数据
desc: 用于getProgramList4Kanban方法的发布测试数据
fields:
- field: id
note: ID
range: 1-30
- field: product
note: 所属产品
range: 1-30:R
- field: branch
note: 分支
range: 0
- field: build
note: 构建
range: 1-30:R
- field: name
note: 发布名称
range: '版本1.0,版本1.1,版本1.2,版本2.0,版本2.1,版本3.0,正式版1,正式版2,正式版3,测试版A,测试版B,测试版C,迭代版D,迭代版E,迭代版F,发布G,发布H,发布I,发布J,发布K,发布L,发布M,发布N,发布O,发布P,发布Q,发布R,发布S,发布T,发布U'
- field: marker
note: 标记
range: '0{20},1{10}'
- field: date
note: 发布日期
range: '`(-30D)-(+30D):5D`'
type: timestamp
format: YYYY-MM-DD
- field: stories
note: 需求
range: ''
- field: bugs
note: 缺陷
range: ''
- field: leftBugs
note: 遗留缺陷
range: ''
- field: desc
note: 描述
range: '这是一个测试发布'
- field: mailto
note: 通知人员
range: ''
- field: status
note: 状态
range: '[normal]{25},[terminate]{5}'
- field: subStatus
note: 子状态
range: ''
- field: createdBy
note: 创建者
range: 'admin{15},user1{10},user2{5}'
- field: createdDate
note: 创建日期
range: '`(-60D)-(-10D):5D`'
type: timestamp
format: YYYY-MM-DD hh:mm:ss
- field: deleted
note: 已删除
range: '0'
@@ -0,0 +1,43 @@
---
title: 干系人测试数据
desc: 用于getProgramList4Kanban方法的干系人测试数据
fields:
- field: id
note: ID
range: 1-50
- field: objectID
note: 对象ID
range: 1-10:R
- field: objectType
note: 对象类型
range: 'program'
- field: user
note: 用户
range: 'admin{20},user1{15},user2{15}'
- field: type
note: 类型
range: 'inside{40},outside{10}'
- field: key
note: 关键
range: 'no{30},yes{20}'
- field: from
note: 来源
range: ''
- field: createdBy
note: 创建者
range: 'admin{30},user1{10},user2{10}'
- field: createdDate
note: 创建日期
range: '`(-180D)-(-30D):10D`'
type: timestamp
format: YYYY-MM-DD hh:mm:ss
- field: editedBy
note: 编辑者
range: '[]{40},admin{5},user1{5}'
- field: editedDate
note: 编辑日期
range: '0000-00-00 00:00:00{40},`(-20D)-(+0D):2D`{10}'
- field: deleted
note: 已删除
range: '0'