+ [misc] Add unit tests for kanbanModel::getRDKanbanByGroup() 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:06:17 +08:00
co-authored by Claude
parent a29c2fef47
commit e15b63dcbd
3 changed files with 144 additions and 0 deletions
@@ -1714,4 +1714,29 @@ class kanbanTest
return $this->objectModel->buildExecutionGroup($lane, $columns, $objectGroup, '', $storyCardMenu, $bugCardMenu, $taskCardMenu);
}
/**
* Test get RD kanban by group.
*
* @param object $execution
* @param string $browseType
* @param string $orderBy
* @param int $regionID
* @param string $groupBy
* @param string $searchValue
* @access public
* @return array
*/
public function getRDKanbanByGroupTest($execution, $browseType, $orderBy, $regionID, $groupBy, $searchValue = '')
{
// 使用反射来调用私有方法
$reflection = new ReflectionClass($this->objectModel);
$method = $reflection->getMethod('getRDKanbanByGroup');
$method->setAccessible(true);
$result = $method->invoke($this->objectModel, $execution, $browseType, $orderBy, $regionID, $groupBy, $searchValue);
if(dao::isError()) return dao::getError();
return $result;
}
}
+52
View File
@@ -0,0 +1,52 @@
#!/usr/bin/env php
<?php
/**
title=测试 kanbanModel::getRDKanbanByGroup();
timeout=0
cid=0
- 测试步骤1:正常execution对象分组看板查询第0条的key属性 @region1
- 测试步骤2:不同browseType参数测试第0条的id属性 @1
- 测试步骤3:不同groupBy参数测试第0条的key属性 @region1
- 测试步骤4:包含searchValue参数测试第0条的toggleFromHeading属性 @1
- 测试步骤5:边界值regionID测试第0条的key属性 @region1
*/
// 1. 导入依赖(路径固定,不可修改)
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/kanban.unittest.class.php';
// 2. zendata数据准备
zenData('user')->gen(10);
zenData('module')->gen(10);
zenData('story')->gen(20);
zenData('bug')->gen(20);
zenData('task')->gen(20);
zenData('project')->loadYaml('kanbanexecution')->gen(5);
zenData('kanbanregion')->loadYaml('rdkanbanregion')->gen(5);
zenData('kanbangroup')->loadYaml('rdkanbangroup')->gen(20);
zenData('kanbancolumn')->gen(20);
zenData('kanbanlane')->loadYaml('rdkanbanlane')->gen(10);
zenData('kanbancell')->loadYaml('rdkanbancell')->gen(20);
// 3. 用户登录
su('admin');
// 4. 创建测试实例
$kanbanTest = new kanbanTest();
// 5. 测试步骤(必须包含至少5个)
// 准备execution对象
$testExecution = new stdClass();
$testExecution->id = 1;
$testExecution->name = '看板1';
$testExecution->attribute = 'mix';
r($kanbanTest->getRDKanbanByGroupTest($testExecution, 'story', 'id_asc', 1, 'pri', '')) && p('0:key') && e('region1'); // 测试步骤1:正常execution对象分组看板查询
r($kanbanTest->getRDKanbanByGroupTest($testExecution, 'task', 'id_desc', 1, 'module', '')) && p('0:id') && e('1'); // 测试步骤2:不同browseType参数测试
r($kanbanTest->getRDKanbanByGroupTest($testExecution, 'story', 'pri_asc', 1, 'category', '')) && p('0:key') && e('region1'); // 测试步骤3:不同groupBy参数测试
r($kanbanTest->getRDKanbanByGroupTest($testExecution, 'story', 'id_asc', 1, 'pri', 'test')) && p('0:toggleFromHeading') && e('1'); // 测试步骤4:包含searchValue参数测试
r($kanbanTest->getRDKanbanByGroupTest($testExecution, 'story', 'id_asc', 0, 'pri', '')) && p('0:key') && e('region1'); // 测试步骤5:边界值regionID测试
@@ -0,0 +1,67 @@
title: execution data for getRDKanbanByGroup test
desc: execution test data
author: Claude
version: "1.0"
fields:
- field: id
range: 1-10
- field: name
prefix: "执行项目"
range: 1-10
- field: project
range: 1-5
- field: type
range: stage,sprint,kanban
- field: model
range: scrum,waterfall,kanban
- field: status
range: wait,doing,done
- field: budget
range: 100000-500000
- field: percent
range: 0,10,20,50,80,100
- field: auth
range: extend
- field: desc
prefix: "执行项目描述"
range: 1-10
- field: begin
range: "(-1M)-(+1M):1D"
type: timestamp
format: "YY/MM/DD"
- field: end
range: "(+1w)-(+2M):1D"
type: timestamp
format: "YY/MM/DD"
- field: grade
range: 1
- field: parent
range: 1-5
- field: attribute
range: "[]{3},request,design,review,mix"
- field: acl
range: open,private
- field: whitelist
range: "[]{5},admin,user1,user2"
- field: order
range: 1-10
- field: openedBy
range: admin,user1,user2
- field: openedDate
range: "(-1M)-(now):1D"
type: timestamp
format: "YY/MM/DD hh:mm:ss"
- field: closedBy
range: "[]{7},admin,user1,user2"
- field: closedDate
range: "[]{7},(now)-(+1M):1D"
type: timestamp
format: "YY/MM/DD hh:mm:ss"
- field: canceledBy
range: "[]{9},admin"
- field: canceledDate
range: "[]{9},(now)-(+1M):1D"
type: timestamp
format: "YY/MM/DD hh:mm:ss"
- field: deleted
range: "0"