From 8a8171c0fb80377c31323b24b38227bf008086a2 Mon Sep 17 00:00:00 2001 From: liugang Date: Fri, 12 Sep 2025 03:31:20 +0800 Subject: [PATCH] + [misc] Add unit tests for kanbanTao::getObjectPairs() 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 --- .../kanban/test/lib/kanban.unittest.class.php | 24 +++++++ module/kanban/test/tao/getobjectpairs.php | 66 +++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100755 module/kanban/test/tao/getobjectpairs.php diff --git a/module/kanban/test/lib/kanban.unittest.class.php b/module/kanban/test/lib/kanban.unittest.class.php index 50b9f9b0cf..585038dd4d 100644 --- a/module/kanban/test/lib/kanban.unittest.class.php +++ b/module/kanban/test/lib/kanban.unittest.class.php @@ -2192,4 +2192,28 @@ class kanbanTest return $result; } + + /** + * Test getObjectPairs method. + * + * @param string $groupBy + * @param array $groupByList + * @param string $browseType + * @param string $orderBy + * @access public + * @return array + */ + public function getObjectPairsTest($groupBy, $groupByList, $browseType, $orderBy) + { + // 使用反射来调用protected方法 + $reflection = new ReflectionClass($this->objectTao); + $method = $reflection->getMethod('getObjectPairs'); + $method->setAccessible(true); + + $result = $method->invoke($this->objectTao, $groupBy, $groupByList, $browseType, $orderBy); + + if(dao::isError()) return dao::getError(); + + return $result; + } } diff --git a/module/kanban/test/tao/getobjectpairs.php b/module/kanban/test/tao/getobjectpairs.php new file mode 100755 index 0000000000..25dc1744d5 --- /dev/null +++ b/module/kanban/test/tao/getobjectpairs.php @@ -0,0 +1,66 @@ +#!/usr/bin/env php +id->range('1-10'); +$user->account->range('admin,user1,user2,user3,user4,user5,user6,user7,user8,user9'); +$user->realname->range('管理员,用户一,用户二,用户三,用户四,用户五,用户六,用户七,用户八,用户九'); +$user->deleted->range('0'); +$user->gen(10); + +$module = zenData('module'); +$module->id->range('1-10'); +$module->name->range('模块一,模块二,模块三,模块四,模块五,模块六,模块七,模块八,模块九,模块十'); +$module->type->range('story,task,bug'); +$module->deleted->range('0'); +$module->gen(10); + +$story = zenData('story'); +$story->id->range('1-10'); +$story->title->range('需求一,需求二,需求三,需求四,需求五,需求六,需求七,需求八,需求九,需求十'); +$story->deleted->range('0'); +$story->gen(10); + +// 3. 用户登录(选择合适角色) +su('admin'); + +// 4. 创建测试实例(变量名与模块名一致) +$kanbanTest = new kanbanTest(); + +// 5. 🔴 强制要求:必须包含至少5个测试步骤 +r($kanbanTest->getObjectPairsTest('module', array(1, 2, 3), 'story', 'id_asc')) && p('1,2,3') && e('模块一,模块二,模块三'); // 步骤1:正常获取模块键值对 +r($kanbanTest->getObjectPairsTest('story', array(1, 2, 3), 'task', 'id_asc')) && p('1,2,3') && e('需求一,需求二,需求三'); // 步骤2:正常获取需求键值对 +r($kanbanTest->getObjectPairsTest('assignedTo', array('admin', 'user1', 'user2'), 'bug', 'id_asc')) && p('admin,user1,user2') && e('管理员,用户一,用户二'); // 步骤3:正常获取用户键值对 +r($kanbanTest->getObjectPairsTest('pri', array(1, 2, 3), 'story', 'id_asc')) && p('1,2,3') && e('1,2,3'); // 步骤4:获取优先级键值对 +r($kanbanTest->getObjectPairsTest('module', array(), 'story', 'id_asc')) && p('0') && e('所属模块: 无'); // 步骤5:空groupByList的情况 \ No newline at end of file