+ [misc] Add unit tests for programZen::getProgramsByType() 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 9fa25c6838
commit fbca34fc03
3 changed files with 153 additions and 0 deletions
@@ -152,4 +152,24 @@ class programTest
return $result;
}
/**
* Test getProgramsByType method.
*
* @param string $status
* @param string $orderBy
* @param int $param
* @param object|null $pager
* @access public
* @return array
*/
public function getProgramsByTypeTest(string $status, string $orderBy, int $param = 0, ?object $pager = null)
{
$method = $this->objectZen->getMethod('getProgramsByType');
$method->setAccessible(true);
$result = $method->invokeArgs($this->objectZen->newInstance(), array($status, $orderBy, $param, $pager));
if(dao::isError()) return dao::getError();
return $result;
}
}
+36
View File
@@ -0,0 +1,36 @@
#!/usr/bin/env php
<?php
/**
title=测试 programZen::getProgramsByType();
timeout=0
cid=0
- 执行programTest模块的getProgramsByTypeTest方法,参数是'doing', 'id_desc', 0 @9
- 执行programTest模块的getProgramsByTypeTest方法,参数是'unclosed', 'id_desc', 0 @17
- 执行programTest模块的getProgramsByTypeTest方法,参数是'wait', 'id_desc', 0 @5
- 执行programTest模块的getProgramsByTypeTest方法,参数是'closed', 'id_desc', 0 @2
- 执行programTest模块的getProgramsByTypeTest方法,参数是'suspended', 'id_desc', 0 @3
- 执行programTest模块的getProgramsByTypeTest方法,参数是'doing', 'order_asc', 0 @9
- 执行programTest模块的getProgramsByTypeTest方法,参数是'all', 'id_desc', 0 @19
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/programzen.unittest.class.php';
zenData('project')->loadYaml('getprogramsbytype/project', false, 2)->gen(25);
zenData('user')->gen(5);
su('admin');
$programTest = new programTest();
r(count($programTest->getProgramsByTypeTest('doing', 'id_desc', 0))) && p() && e('9');
r(count($programTest->getProgramsByTypeTest('unclosed', 'id_desc', 0))) && p() && e('17');
r(count($programTest->getProgramsByTypeTest('wait', 'id_desc', 0))) && p() && e('5');
r(count($programTest->getProgramsByTypeTest('closed', 'id_desc', 0))) && p() && e('2');
r(count($programTest->getProgramsByTypeTest('suspended', 'id_desc', 0))) && p() && e('3');
r(count($programTest->getProgramsByTypeTest('doing', 'order_asc', 0))) && p() && e('9');
r(count($programTest->getProgramsByTypeTest('all', 'id_desc', 0))) && p() && e('19');
@@ -0,0 +1,97 @@
---
title: 项目集数据定义
desc: 用于getProgramsByType方法测试的项目集数据
fields:
- field: id
note: 项目集ID
range: 1-25
prefix: ""
postfix: ""
- field: type
note: 类型
range: program{15}, project{10}
prefix: ""
postfix: ""
- field: parent
note: 父级ID
range: 0{15}, 1-5{10}
prefix: ""
postfix: ""
- 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
prefix: ""
postfix: ""
- field: code
note: 项目集代码
range: PROG001-PROG025
prefix: ""
postfix: ""
- field: status
note: 状态
range: wait{5}, doing{9}, suspended{3}, closed{6}, wait,closed
prefix: ""
postfix: ""
- field: grade
note: 层级
range: 1{15}, 2{10}
prefix: ""
postfix: ""
- field: path
note: 路径
range: ,1,{3}, ,2,{3}, ,3,{3}, ,4,{3}, ,5,{3}, ,1,6,{2}, ,2,7,{2}, ,3,8,{2}, ,4,9,{2}, ,5,10,{2}
prefix: ""
postfix: ""
- field: begin
note: 开始日期
range: 2024-01-01-2024-06-30
format: YYYY-MM-DD
- field: end
note: 结束日期
range: 2025-01-01-2025-12-31
format: YYYY-MM-DD
- field: openedBy
note: 创建者
range: admin{15}, user1{5}, user2{5}
prefix: ""
postfix: ""
- field: openedDate
note: 创建日期
range: 2024-01-01 00:00:00-2024-06-30 23:59:59
format: YYYY-MM-DD hh:mm:ss
- field: PM
note: 项目经理
range: admin{10}, pm1{5}, pm2{5}, pm3{5}
prefix: ""
postfix: ""
- field: deleted
note: 是否删除
range: 0{23}, 1{2}
prefix: ""
postfix: ""
- field: acl
note: 访问控制
range: open{20}, private{5}
prefix: ""
postfix: ""
- field: order
note: 排序
range: 1-25
prefix: ""
postfix: ""