+ [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:
@@ -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
@@ -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'
|
||||
Reference in New Issue
Block a user