From 887a3c87e13705ac7d9609d115cb63aedff36acf Mon Sep 17 00:00:00 2001 From: liugang Date: Sun, 7 Sep 2025 04:23:18 +0800 Subject: [PATCH] + [misc] Add unit tests for biModel::getMultiData() 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 --- module/bi/test/lib/bi.unittest.class.php | 19 ++++++++++ module/bi/test/model/getmultidata.php | 47 ++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100755 module/bi/test/model/getmultidata.php diff --git a/module/bi/test/lib/bi.unittest.class.php b/module/bi/test/lib/bi.unittest.class.php index 15621d40c7..766fa4e1a4 100644 --- a/module/bi/test/lib/bi.unittest.class.php +++ b/module/bi/test/lib/bi.unittest.class.php @@ -369,4 +369,23 @@ class biTest return $result; } + + /** + * Test getMultiData method. + * + * @param array $settings + * @param string $defaultSql + * @param array $filters + * @param string $driver + * @param bool $sort + * @access public + * @return mixed + */ + public function getMultiDataTest($settings, $defaultSql, $filters, $driver, $sort = false) + { + $result = $this->objectModel->getMultiData($settings, $defaultSql, $filters, $driver, $sort); + if(dao::isError()) return dao::getError(); + + return $result; + } } diff --git a/module/bi/test/model/getmultidata.php b/module/bi/test/model/getmultidata.php new file mode 100755 index 0000000000..1d8be85bbf --- /dev/null +++ b/module/bi/test/model/getmultidata.php @@ -0,0 +1,47 @@ +#!/usr/bin/env php +id->range('1-20'); +$task->name->range('任务{1-20}'); +$task->status->range('wait{8},doing{7},done{5}'); +$task->assignedTo->range('admin{10},user1{5},user2{5}'); +$task->openedDate->range('`2024-01-15 10:00:00`,`2024-02-15 10:00:00`,`2024-03-15 10:00:00`'); +$task->deleted->range('0'); +$task->gen(20); + +// 3. 用户登录(选择合适角色) +su('admin'); + +// 4. 创建测试实例(变量名与模块名一致) +$biTest = new biTest(); + +// 5. 🔴 强制要求:必须包含至少5个测试步骤 +r($biTest->getMultiDataTest(array('xaxis' => array(array('field' => 'status')), 'yaxis' => array(array('field' => 'id', 'valOrAgg' => 'count'))), 'SELECT id, status FROM zt_task WHERE deleted = "0"', array(), 'mysql', false)) && p('0') && e('status'); // 步骤1:正常情况测试单个y轴指标 +r($biTest->getMultiDataTest(array('xaxis' => array(array('field' => 'status')), 'yaxis' => array(array('field' => 'id', 'valOrAgg' => 'count'), array('field' => 'name', 'valOrAgg' => 'count'))), 'SELECT id, name, status FROM zt_task WHERE deleted = "0"', array(), 'mysql', false)) && p('1') && e(array('id', 'name')); // 步骤2:多个y轴指标测试 +r($biTest->getMultiDataTest(array('xaxis' => array(array('field' => 'status')), 'yaxis' => array(array('field' => 'id', 'valOrAgg' => 'count'))), 'SELECT id, status FROM zt_task WHERE deleted = "0"', array('status' => array('operator' => '=', 'value' => "'wait'")), 'mysql', false)) && p('0') && e('status'); // 步骤3:包含过滤条件 +r($biTest->getMultiDataTest(array('xaxis' => array(array('field' => 'status')), 'yaxis' => array(array('field' => 'id', 'valOrAgg' => 'count'))), 'SELECT id, status FROM zt_task WHERE deleted = "0"', array(), 'mysql', true)) && p('0') && e('status'); // 步骤4:启用排序功能 +r($biTest->getMultiDataTest(array('xaxis' => array(), 'yaxis' => array()), 'SELECT id FROM zt_task WHERE deleted = "0"', array(), 'mysql', false)) && p('0') && e('~~'); // 步骤5:空设置参数边界测试 +r($biTest->getMultiDataTest(array('xaxis' => array(array('field' => 'status')), 'yaxis' => array(array('field' => 'id', 'valOrAgg' => 'sum'))), 'SELECT id, status FROM zt_task WHERE deleted = "0"', array(), 'mysql', false)) && p('0') && e('status'); // 步骤6:不同聚合函数测试 +r($biTest->getMultiDataTest(array('xaxis' => array(array('field' => 'openedDate', 'group' => 'YEAR')), 'yaxis' => array(array('field' => 'id', 'valOrAgg' => 'count'))), 'SELECT id, openedDate FROM zt_task WHERE deleted = "0"', array(), 'mysql', false)) && p('0') && e('date'); // 步骤7:日期分组测试 \ No newline at end of file