From 7bae2d4ff561708120f46e9b1d5f7dc5baf36fdc Mon Sep 17 00:00:00 2001 From: liugang Date: Mon, 8 Sep 2025 23:04:43 +0800 Subject: [PATCH] + [misc] Add unit tests for metricModel::uniteFieldList() 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 --- .../metric/test/lib/metric.unittest.class.php | 15 +++++ module/metric/test/model/unitefieldlist.php | 63 +++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100755 module/metric/test/model/unitefieldlist.php diff --git a/module/metric/test/lib/metric.unittest.class.php b/module/metric/test/lib/metric.unittest.class.php index b20edf9eec..348c260f7e 100644 --- a/module/metric/test/lib/metric.unittest.class.php +++ b/module/metric/test/lib/metric.unittest.class.php @@ -606,4 +606,19 @@ class metricTest return $result; } + + /** + * Test uniteFieldList method. + * + * @param array $calcList + * @access public + * @return mixed + */ + public function uniteFieldListTest($calcList = array()) + { + $result = $this->objectModel->uniteFieldList($calcList); + if(dao::isError()) return dao::getError(); + + return $result; + } } \ No newline at end of file diff --git a/module/metric/test/model/unitefieldlist.php b/module/metric/test/model/unitefieldlist.php new file mode 100755 index 0000000000..ab28903eee --- /dev/null +++ b/module/metric/test/model/unitefieldlist.php @@ -0,0 +1,63 @@ +#!/usr/bin/env php +uniteFieldListTest(array())) && p() && e('0'); // 步骤1:空数组情况 + +// 步骤2:单个计算器对象包含简单字段测试 +$calc1 = new MockCalc1(); +$calc1->fieldList = array('id', 'name', 'status'); +r($metricTest->uniteFieldListTest(array($calc1))) && p() && e('`id`,`name`,`status`'); // 步骤2:简单字段 + +// 步骤3:多个计算器对象包含相同字段测试(去重) +$calc2 = new MockCalc2(); +$calc2->fieldList = array('name', 'type', 'id'); +r($metricTest->uniteFieldListTest(array($calc1, $calc2))) && p() && e('`id`,`name`,`status`,`type`'); // 步骤3:字段去重 + +// 步骤4:包含带表前缀字段的计算器对象测试 +$calc3 = new MockCalc1(); +$calc3->fieldList = array('user.id', 'user.name', 'project.type'); +r($metricTest->uniteFieldListTest(array($calc3))) && p() && e('`user`.`id` AS `user_id`,`user`.`name` AS `user_name`,`project`.`type` AS `project_type`'); // 步骤4:表前缀转换 + +// 步骤5:包含已有AS别名字段的计算器对象测试 +$calc4 = new MockCalc2(); +$calc4->fieldList = array('COUNT(*) AS total_count', 'SUM(value) AS total_value'); +r($metricTest->uniteFieldListTest(array($calc4))) && p() && e('COUNT(*) AS total_count,SUM(value) AS total_value'); // 步骤5:保持AS格式 \ No newline at end of file