From ea769b1dde73ab4aeb3fa7802302c903528f7217 Mon Sep 17 00:00:00 2001 From: liugang Date: Sat, 20 Sep 2025 08:40:35 +0800 Subject: [PATCH] * [misc] Enhance unit tests for extensionModel::executeDB() 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/extension.unittest.class.php | 46 +++++++++++++++++++ module/extension/test/model/executedb.php | 35 ++++++++++---- 2 files changed, 72 insertions(+), 9 deletions(-) diff --git a/module/extension/test/lib/extension.unittest.class.php b/module/extension/test/lib/extension.unittest.class.php index 1dfe44044a..6015fc2e0d 100755 --- a/module/extension/test/lib/extension.unittest.class.php +++ b/module/extension/test/lib/extension.unittest.class.php @@ -593,6 +593,21 @@ class extensionTest return $result; } + /** + * Test checkVersion method. + * + * @param string $version + * @access public + * @return bool + */ + public function checkVersionTest(string $version) + { + $result = $this->objectModel->checkVersion($version); + if(dao::isError()) return dao::getError(); + + return $result; + } + /** * Test version of compareForLimit method. * @@ -621,4 +636,35 @@ class extensionTest return $result; } + + /** + * Test erasePackage method. + * + * @param string $extension + * @access public + * @return array + */ + public function erasePackageTest(string $extension): array + { + $result = $this->objectModel->erasePackage($extension); + if(dao::isError()) return dao::getError(); + + return $result; + } + + /** + * Test executeDB method. + * + * @param string $extension + * @param string $method + * @access public + * @return object + */ + public function executeDBTest(string $extension, string $method = 'install'): object + { + $result = $this->objectModel->executeDB($extension, $method); + if(dao::isError()) return dao::getError(); + + return $result; + } } \ No newline at end of file diff --git a/module/extension/test/model/executedb.php b/module/extension/test/model/executedb.php index 10dd53ce6d..d445db3372 100755 --- a/module/extension/test/model/executedb.php +++ b/module/extension/test/model/executedb.php @@ -1,22 +1,39 @@ #!/usr/bin/env php executeDB(); +title=测试 extensionModel::executeDB(); timeout=0 -cid=1 +cid=0 -- 执行code1插件的安装SQL语句。属性result @ok -- 执行code1插件的卸载SQL语句。属性result @ok +- 步骤1:执行有效扩展的安装SQL属性result @ok +- 步骤2:执行有效扩展的卸载SQL属性result @ok +- 步骤3:不存在SQL文件的扩展属性result @ok +- 步骤4:默认参数调用(install)属性result @ok +- 步骤5:包含无效SQL的扩展属性result @fail */ + include dirname(__FILE__, 5) . '/test/lib/init.php'; -su('admin'); +include dirname(__FILE__, 2) . '/lib/extension.unittest.class.php'; zenData('extension')->gen(10); -global $tester; -$tester->loadModel('extension'); +su('admin'); -r($tester->extension->executeDB('code1', 'install')) && p('result') && e('ok'); // 执行code1插件的安装SQL语句。 -r($tester->extension->executeDB('code1', 'uninstall')) && p('result') && e('ok'); // 执行code1插件的卸载SQL语句。 +$extensionTest = new extensionTest(); + +// 设置临时的pkgRoot用于测试 +global $tester; +$originalPkgRoot = $tester->extension->pkgRoot; +$tester->extension->pkgRoot = '/tmp/pkg/'; + +r($extensionTest->executeDBTest('code1', 'install')) && p('result') && e('ok'); // 步骤1:执行有效扩展的安装SQL +r($extensionTest->executeDBTest('code1', 'uninstall')) && p('result') && e('ok'); // 步骤2:执行有效扩展的卸载SQL +r($extensionTest->executeDBTest('nonexistent')) && p('result') && e('ok'); // 步骤3:不存在SQL文件的扩展 +r($extensionTest->executeDBTest('code1')) && p('result') && e('ok'); // 步骤4:默认参数调用(install) +r($extensionTest->executeDBTest('code2', 'install')) && p('result') && e('fail'); // 步骤5:包含无效SQL的扩展 + +// 恢复原始pkgRoot +$tester->extension->pkgRoot = $originalPkgRoot; \ No newline at end of file