* [misc] Fix unit tests for chartModel::isClickable() method

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-10-11 09:40:04 +08:00
co-authored by Claude
parent 1e5bd83d1b
commit 997bca7858
2 changed files with 65 additions and 13 deletions
@@ -1150,4 +1150,54 @@ class chartTest
return $result;
}
/**
* Test isClickable method.
*
* @param int $chartID
* @param string $action
* @access public
* @return mixed
*/
public function isClickableTest(int $chartID, string $action)
{
// 创建模拟的chart对象
$chart = $this->mockGetChartById($chartID);
if($chart === false) {
return false; // 图表不存在
}
$result = chartModel::isClickable($chart, $action);
if(dao::isError()) return dao::getError();
return $result;
}
/**
* Mock getChartById method.
*
* @param int $chartID
* @access private
* @return object|false
*/
private function mockGetChartById(int $chartID)
{
// 模拟图表数据,基于实际的内置图表ID范围
$mockCharts = array(
// 不存在的图表
32 => false,
// 内置图表(在ID范围内)
10020 => (object)array('id' => 10020, 'builtin' => 1),
1050 => (object)array('id' => 1050, 'builtin' => 1),
10100 => (object)array('id' => 10100, 'builtin' => 1),
// 自定义图表(不在内置范围内)
5000 => (object)array('id' => 5000, 'builtin' => 0),
8000 => (object)array('id' => 8000, 'builtin' => 0),
);
return isset($mockCharts[$chartID]) ? $mockCharts[$chartID] : false;
}
}
+15 -13
View File
@@ -1,30 +1,32 @@
#!/usr/bin/env php
<?php
/**
title=测试 chartModel::isClickable();
timeout=0
cid=1
- 测试内置报表的设计按钮是否不可点击 @false
- 测试内置报表的编辑按钮是否不可点击 @false
- 测试内置报表的删除按钮是否不可点击 @false
- 测试非内置报表的设计按钮是否可点击 @false
- 测试非内置报表的编辑按钮是否可点击 @false
- 测试非内置报表的删除按钮是否可点击 @false
- 测试不存在的图表按钮是否不可点击 @0
- 测试内置图表的设计按钮是否不可点击 @0
- 测试内置图表的编辑按钮是否不可点击 @0
- 测试内置图表的删除按钮是否不可点击 @0
- 测试自定义图表的设计按钮是否可点击 @1
- 测试自定义图表的编辑按钮是否可点击 @1
- 测试自定义图表的删除按钮是否可点击 @1
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/chart.unittest.class.php';
zenData('user')->gen(5);
su('admin');
$chart = new chartTest();
r($chart->isClickableTest(32, 'design')) && p() && e('false'); //测试不存在的报表的设计按钮是否不可点击
r($chart->isClickableTest(32, 'edit')) && p() && e('false'); //测试不存在的报表的编辑按钮是否不可点击
r($chart->isClickableTest(32, 'delete')) && p() && e('false'); //测试不存在的报表的删除按钮是否不可点击
r($chart->isClickableTest(10020, 'design')) && p() && e('false'); //测试内置报表的设计按钮是否可点击
r($chart->isClickableTest(10020, 'edit')) && p() && e('false'); //测试内置报表的编辑按钮是否可点击
r($chart->isClickableTest(10020, 'delete')) && p() && e('false'); //测试内置报表的删除按钮是否可点击
r($chart->isClickableTest(32, 'design')) && p() && e('0'); //测试不存在的图表按钮是否不可点击
r($chart->isClickableTest(10020, 'design')) && p() && e('0'); //测试内置图表的设计按钮是否不可点击
r($chart->isClickableTest(10020, 'edit')) && p() && e('0'); //测试内置图表的编辑按钮是否不可点击
r($chart->isClickableTest(10020, 'delete')) && p() && e('0'); //测试内置图表的删除按钮是否不可点击
r($chart->isClickableTest(5000, 'design')) && p() && e('1'); //测试自定义图表的设计按钮是否可点击
r($chart->isClickableTest(5000, 'edit')) && p() && e('1'); //测试自定义图表的编辑按钮是否可点击
r($chart->isClickableTest(5000, 'delete')) && p() && e('1'); //测试自定义图表的删除按钮是否可点击