From ac8263bccdb030cc367b02c1590e1262e083e2ee Mon Sep 17 00:00:00 2001 From: liugang Date: Sat, 20 Sep 2025 01:12:11 +0800 Subject: [PATCH] * [misc] Enhance unit tests for dataviewModel::checkUniColumn() 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 --- .../test/lib/dataview.unittest.class.php | 18 +++++ module/dataview/test/model/checkunicolumn.php | 73 ++++++++++++++++--- 2 files changed, 82 insertions(+), 9 deletions(-) diff --git a/module/dataview/test/lib/dataview.unittest.class.php b/module/dataview/test/lib/dataview.unittest.class.php index 5925ef63f3..359f0618ca 100644 --- a/module/dataview/test/lib/dataview.unittest.class.php +++ b/module/dataview/test/lib/dataview.unittest.class.php @@ -99,4 +99,22 @@ class dataviewTest return $result; } + + /** + * Test checkUniColumn method. + * + * @param string $sql + * @param string $driverName + * @param bool $repeat + * @param array $columns + * @access public + * @return mixed + */ + public function checkUniColumnTest($sql, $driverName = 'mysql', $repeat = false, $columns = array()) + { + $result = $this->objectModel->checkUniColumn($sql, $driverName, $repeat, $columns); + if(dao::isError()) return dao::getError(); + + return $result; + } } \ No newline at end of file diff --git a/module/dataview/test/model/checkunicolumn.php b/module/dataview/test/model/checkunicolumn.php index 2ffc1497cd..a95a6062f5 100755 --- a/module/dataview/test/model/checkunicolumn.php +++ b/module/dataview/test/model/checkunicolumn.php @@ -1,20 +1,75 @@ #!/usr/bin/env php gen(10); /** title=测试 dataviewModel::checkUniColumn(); timeout=0 -cid=1 +cid=0 -- 检查产品表是否有重复数据。 @1 +- 执行dataviewTest模块的checkUniColumnTest方法,参数是'', 'mysql', false, $uniqueColumns @1 +- 执行dataviewTest模块的checkUniColumnTest方法,参数是'', 'mysql', false, $duplicateColumns @0 +- 执行dataviewTest模块的checkUniColumnTest方法,参数是'', 'mysql', true, $duplicateColumns @0 +- 执行dataviewTest模块的checkUniColumnTest方法,参数是'', 'mysql', false, $emptyColumns @1 +- 执行dataviewTest模块的checkUniColumnTest方法,参数是'', 'mysql', false, $mixedColumns @0 +- 执行dataviewTest模块的checkUniColumnTest方法,参数是'', 'mysql', true, $multiDuplicateColumns 属性1 @0~~id~~status +属性id @0~~id~~status +属性status @0~~id~~status +- 执行dataviewTest模块的checkUniColumnTest方法,参数是'', 'mysql', false, $singleColumn @1 */ -global $tester; -$tester->loadModel('dataview'); -r($tester->dataview->checkUniColumn('select * from zt_product')) && p() && e('1'); //检查产品表是否有重复数据。 +include dirname(__FILE__, 5) . '/test/lib/init.php'; +include dirname(__FILE__, 2) . '/lib/dataview.unittest.class.php'; + +su('admin'); + +$dataviewTest = new dataviewTest(); + +// 测试数据1:唯一列数组 +$uniqueColumns = array( + array('name' => 'id'), + array('name' => 'name'), + array('name' => 'code') +); + +// 测试数据2:包含重复列的数组 +$duplicateColumns = array( + array('name' => 'id'), + array('name' => 'name'), + array('name' => 'id') +); + +// 测试数据3:空数组 +$emptyColumns = array(); + +// 测试数据4:混合重复列 +$mixedColumns = array( + array('name' => 'id'), + array('name' => 'name'), + array('name' => 'status'), + array('name' => 'name'), + array('name' => 'type') +); + +// 测试数据5:多个重复列 +$multiDuplicateColumns = array( + array('name' => 'id'), + array('name' => 'name'), + array('name' => 'id'), + array('name' => 'status'), + array('name' => 'status') +); + +// 测试数据6:单列数组 +$singleColumn = array( + array('name' => 'id') +); + +r($dataviewTest->checkUniColumnTest('', 'mysql', false, $uniqueColumns)) && p() && e('1'); +r($dataviewTest->checkUniColumnTest('', 'mysql', false, $duplicateColumns)) && p() && e('0'); +r($dataviewTest->checkUniColumnTest('', 'mysql', true, $duplicateColumns)) && p('0') && e('0'); +r($dataviewTest->checkUniColumnTest('', 'mysql', false, $emptyColumns)) && p() && e('1'); +r($dataviewTest->checkUniColumnTest('', 'mysql', false, $mixedColumns)) && p() && e('0'); +r($dataviewTest->checkUniColumnTest('', 'mysql', true, $multiDuplicateColumns)) && p('1,id,status') && e('0~~id~~status'); +r($dataviewTest->checkUniColumnTest('', 'mysql', false, $singleColumn)) && p() && e('1'); \ No newline at end of file