From a2e54cb3ac38ee780c7a0ddbec3f6e395c83e252 Mon Sep 17 00:00:00 2001 From: liugang Date: Fri, 12 Sep 2025 13:36:03 +0800 Subject: [PATCH] + [misc] Add unit tests for searchTao::processTaskRecord() 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 --- .../search/test/lib/search.unittest.class.php | 20 ++++++ module/search/test/tao/processtaskrecord.php | 65 +++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100755 module/search/test/tao/processtaskrecord.php diff --git a/module/search/test/lib/search.unittest.class.php b/module/search/test/lib/search.unittest.class.php index 24f5e7d48d..cd9c3b192b 100755 --- a/module/search/test/lib/search.unittest.class.php +++ b/module/search/test/lib/search.unittest.class.php @@ -1225,4 +1225,24 @@ class searchTest return $result; } + + /** + * Test processTaskRecord method. + * + * @param object $record + * @access public + * @return object + */ + public function processTaskRecordTest(object $record): object + { + // 使用反射访问私有方法 + $reflection = new ReflectionClass($this->objectTao); + $method = $reflection->getMethod('processTaskRecord'); + $method->setAccessible(true); + + $result = $method->invokeArgs($this->objectTao, array($record)); + if(dao::isError()) return dao::getError(); + + return $result; + } } diff --git a/module/search/test/tao/processtaskrecord.php b/module/search/test/tao/processtaskrecord.php new file mode 100755 index 0000000000..059604f135 --- /dev/null +++ b/module/search/test/tao/processtaskrecord.php @@ -0,0 +1,65 @@ +#!/usr/bin/env php +id->range('1-10'); +$task->name->range('任务1,任务2,任务3,任务4,任务5,任务6,任务7,任务8,任务9,任务10'); +$task->project->range('1{2},2{2},3{2},4{2},5{2}'); +$task->execution->range('1-10'); +$task->type->range('task{10}'); +$task->status->range('wait{3},doing{4},done{3}'); +$task->gen(10); + +$project = zenData('project'); +$project->id->range('1-5'); +$project->name->range('项目1,项目2,项目3,项目4,项目5'); +$project->type->range('project{5}'); +$project->multiple->range('1{2},0{3}'); +$project->gen(5); + +su('admin'); + +$searchTest = new searchTest(); + +$record1 = new stdClass(); +$record1->objectType = 'task'; +$record1->objectID = 1; + +$record2 = new stdClass(); +$record2->objectType = 'task'; +$record2->objectID = 2; + +$record3 = new stdClass(); +$record3->objectType = 'task'; +$record3->objectID = 3; + +$record4 = new stdClass(); +$record4->objectType = 'task'; +$record4->objectID = 4; + +$record5 = new stdClass(); +$record5->objectType = 'task'; +$record5->objectID = 5; + +r(strpos($searchTest->processTaskRecordTest($record1)->url, 'm=task') !== false) && p() && e('1'); +r(strpos($searchTest->processTaskRecordTest($record2)->url, 'f=view') !== false) && p() && e('1'); +r(strpos($searchTest->processTaskRecordTest($record3)->url, 'id=3') !== false) && p() && e('1'); +r(isset($searchTest->processTaskRecordTest($record4)->url)) && p() && e('1'); +r(is_object($searchTest->processTaskRecordTest($record5))) && p() && e('1'); \ No newline at end of file