From 489eec8490f58ced4c132166f508160148d84686 Mon Sep 17 00:00:00 2001 From: liugang Date: Sat, 13 Sep 2025 01:01:10 +0800 Subject: [PATCH] + [misc] Add unit tests for zanodeTao::getSubZahostListByID() 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 --- .../zanode/test/lib/zanode.unittest.class.php | 37 ++++++++++++++ .../zanode/test/tao/getsubzahostlistbyid.php | 49 +++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100755 module/zanode/test/tao/getsubzahostlistbyid.php diff --git a/module/zanode/test/lib/zanode.unittest.class.php b/module/zanode/test/lib/zanode.unittest.class.php index 4caa318377..2dd8cab72a 100644 --- a/module/zanode/test/lib/zanode.unittest.class.php +++ b/module/zanode/test/lib/zanode.unittest.class.php @@ -3,6 +3,7 @@ declare(strict_types = 1); class zanodeTest { private $objectModel; + private $objectTao; public function __construct() { @@ -10,6 +11,7 @@ class zanodeTest $app->rawModule = 'zanode'; $app->rawMethod = 'browse'; $this->objectModel = $tester->loadModel('zanode'); + $this->objectTao = $tester->loadTao('zanode'); } /** @@ -446,4 +448,39 @@ class zanodeTest return $result; } + + /** + * 测试通过主机ID获取此主机下所有的子主机。 + * Test getSubZahostListByID method. + * + * @param int $hostID + * @param string $orderBy + * @access public + * @return array + */ + public function getSubZahostListByIDTest(int $hostID, string $orderBy = 'id_desc'): object|int + { + // 使用反射调用protected方法 + $reflection = new ReflectionClass($this->objectTao); + $method = $reflection->getMethod('getSubZahostListByID'); + $method->setAccessible(true); + + $result = $method->invoke($this->objectTao, $hostID, $orderBy); + if(dao::isError()) return dao::getError(); + + // 如果结果是数组,返回一个包含数量和结果的对象 + if(is_array($result)) + { + $returnObj = new stdClass(); + $returnObj->count = count($result); + // 对于非空数组,设置data属性 + if(count($result) > 0) + { + $returnObj->data = $result; + } + return $returnObj; + } + + return count($result); + } } diff --git a/module/zanode/test/tao/getsubzahostlistbyid.php b/module/zanode/test/tao/getsubzahostlistbyid.php new file mode 100755 index 0000000000..e9712885c8 --- /dev/null +++ b/module/zanode/test/tao/getsubzahostlistbyid.php @@ -0,0 +1,49 @@ +#!/usr/bin/env php +id->range('1-10'); +$host->name->range('host1,host2,host3,parent-host,child1,child2,child3,child4,child5,host10'); +$host->type->range('zahost{5},node{5}'); +$host->parent->range('999{1},998{1},997{1},0{1},4{3},996{3}'); +$host->status->range('online{8},offline{2}'); +$host->deleted->range('0{10}'); +$host->vnc->range('5901-5910'); +$host->cpuCores->range('2{2},4{4},8{4}'); +$host->memory->range('4G{2},8G{4},16G{4}'); +$host->diskSize->range('100G{2},500G{4},1T{4}'); +$host->osName->range('Ubuntu{5},CentOS{5}'); +$host->heartbeat->range('`2024-09-13 10:00:00`'); +$host->gen(10); + +// 3. 用户登录 +su('admin'); + +// 4. 创建测试实例 +$zanodeTest = new zanodeTest(); + +// 5. 执行测试步骤 (必须包含至少5个测试步骤) +r($zanodeTest->getSubZahostListByIDTest(4)) && p('count') && e('3'); // 步骤1:正常主机ID(4)获取子主机,应返回3个子主机 +r($zanodeTest->getSubZahostListByIDTest(1000)) && p('count') && e('0'); // 步骤2:不存在主机ID获取子主机,应返回空数组 +r($zanodeTest->getSubZahostListByIDTest(0)) && p('count') && e('1'); // 步骤3:主机ID(0)获取子主机,实际有1个主机parent=0 +r($zanodeTest->getSubZahostListByIDTest(-1)) && p('count') && e('0'); // 步骤4:负数主机ID获取子主机,应返回空数组 +r($zanodeTest->getSubZahostListByIDTest(4, 'name_asc')) && p('count') && e('3'); // 步骤5:指定排序方式获取子主机,应返回3个子主机 \ No newline at end of file