diff --git a/module/mr/test/lib/zen.class.php b/module/mr/test/lib/zen.class.php index 0a892e72ef..622a9db781 100644 --- a/module/mr/test/lib/zen.class.php +++ b/module/mr/test/lib/zen.class.php @@ -205,4 +205,40 @@ class mrZenTest extends baseTest if(dao::isError()) return dao::getError(); return $result; } + + /** + * Test processLinkTaskPager method. + * + * @param int $recTotal + * @param int $recPerPage + * @param int $pageID + * @param array $allTasks + * @access public + * @return array + */ + public function processLinkTaskPagerTest(int $recTotal, int $recPerPage, int $pageID, array $allTasks): array + { + $bufferLevel = ob_get_level(); + ob_start(); + try + { + $this->invokeArgs('processLinkTaskPager', [$recTotal, $recPerPage, $pageID, $allTasks]); + } + catch(Throwable $e) + { + // Ignore any exceptions + } + while(ob_get_level() > $bufferLevel) ob_end_clean(); + + $result = array(); + $result['allTasks'] = $this->instance->view->allTasks ?? array(); + $result['pager'] = $this->instance->view->pager ?? null; + $result['recTotal'] = $result['pager'] ? $result['pager']->recTotal : 0; + $result['recPerPage'] = $result['pager'] ? $result['pager']->recPerPage : 0; + $result['pageID'] = $result['pager'] ? $result['pager']->pageID : 0; + $result['pageTotal'] = $result['pager'] ? $result['pager']->pageTotal : 0; + $result['taskCount'] = count($result['allTasks']); + + return $result; + } } diff --git a/module/mr/test/zen/processlinktaskpager.php b/module/mr/test/zen/processlinktaskpager.php new file mode 100755 index 0000000000..eb249810f8 --- /dev/null +++ b/module/mr/test/zen/processlinktaskpager.php @@ -0,0 +1,81 @@ +#!/usr/bin/env php +setMethodName('linkTask'); + +su('admin'); + +$mrTest = new mrZenTest(); + +// 准备测试数据 - 创建25个任务对象 +$tasks25 = array(); +for($i = 1; $i <= 25; $i++) +{ + $task = new stdclass(); + $task->id = $i; + $task->name = "任务{$i}"; + $tasks25[$i] = $task; +} + +// 准备3个任务对象 +$tasks3 = array(); +for($i = 1; $i <= 3; $i++) +{ + $task = new stdclass(); + $task->id = $i; + $task->name = "任务{$i}"; + $tasks3[$i] = $task; +} + +// 准备单个任务对象 +$task1 = array(); +$task = new stdclass(); +$task->id = 1; +$task->name = "任务1"; +$task1[1] = $task; + +// 准备30个任务对象 +$tasks30 = array(); +for($i = 1; $i <= 30; $i++) +{ + $task = new stdclass(); + $task->id = $i; + $task->name = "任务{$i}"; + $tasks30[$i] = $task; +} + +r($mrTest->processLinkTaskPagerTest(25, 10, 1, $tasks25)) && p('taskCount') && e('10'); +r($mrTest->processLinkTaskPagerTest(25, 10, 2, $tasks25)) && p('taskCount') && e('10'); +r($mrTest->processLinkTaskPagerTest(25, 10, 3, $tasks25)) && p('taskCount') && e('5'); +r($mrTest->processLinkTaskPagerTest(3, 5, 1, $tasks3)) && p('taskCount') && e('3'); +r($mrTest->processLinkTaskPagerTest(3, 5, 2, $tasks3)) && p('taskCount;pageID') && e('3;1'); +r($mrTest->processLinkTaskPagerTest(0, 10, 1, array())) && p('taskCount') && e('0'); +r($mrTest->processLinkTaskPagerTest(1, 10, 1, $task1)) && p('taskCount') && e('1'); +r($mrTest->processLinkTaskPagerTest(25, 20, 1, $tasks25)) && p('taskCount') && e('20'); +r($mrTest->processLinkTaskPagerTest(25, 20, 2, $tasks25)) && p('taskCount') && e('5'); +r($mrTest->processLinkTaskPagerTest(30, 10, 1, $tasks30)) && p('pageTotal') && e('3'); \ No newline at end of file