From 997bca7858e76571c7f9b668cb98920e3be6b49e Mon Sep 17 00:00:00 2001 From: liugang Date: Fri, 3 Oct 2025 18:26:19 +0800 Subject: [PATCH] * [misc] Fix unit tests for chartModel::isClickable() method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../chart/test/lib/chart.unittest.class.php | 50 +++++++++++++++++++ module/chart/test/model/isclickable.php | 28 ++++++----- 2 files changed, 65 insertions(+), 13 deletions(-) mode change 100644 => 100755 module/chart/test/model/isclickable.php diff --git a/module/chart/test/lib/chart.unittest.class.php b/module/chart/test/lib/chart.unittest.class.php index 646d7826f6..2f0206bb38 100755 --- a/module/chart/test/lib/chart.unittest.class.php +++ b/module/chart/test/lib/chart.unittest.class.php @@ -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; + } } \ No newline at end of file diff --git a/module/chart/test/model/isclickable.php b/module/chart/test/model/isclickable.php old mode 100644 new mode 100755 index 02171846ad..f9c96998f8 --- a/module/chart/test/model/isclickable.php +++ b/module/chart/test/model/isclickable.php @@ -1,30 +1,32 @@ #!/usr/bin/env php 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'); //测试自定义图表的删除按钮是否可点击 \ No newline at end of file