diff --git a/module/block/test/lib/block.unittest.class.php b/module/block/test/lib/block.unittest.class.php index 44f59bee72..aae885df80 100644 --- a/module/block/test/lib/block.unittest.class.php +++ b/module/block/test/lib/block.unittest.class.php @@ -3948,4 +3948,83 @@ class blockTest return $result; } + + /** + * Test printProjectTeamBlock method. + * + * @param object $block + * @access public + * @return object + */ + public function printProjectTeamBlockTest($block = null) + { + global $tester; + + $result = new stdclass(); + $result->success = false; + $result->error = ''; + $result->projects = null; + $result->projectCount = 0; + $result->hasProjects = false; + + try { + if(!$block) { + $block = new stdclass(); + $block->params = new stdclass(); + $block->params->count = 15; + $block->params->type = 'all'; + $block->params->orderBy = 'id_desc'; + } + + include_once dirname(__FILE__, 3) . '/model.php'; + + if(!class_exists('block')) + { + class_alias('blockModel', 'block'); + } + + include_once dirname(__FILE__, 3) . '/zen.php'; + + $blockZen = new blockZen(); + $blockZen->block = $this->objectModel; + + // 初始化必要的属性 + $blockZen->app = $tester->app; + $blockZen->view = new stdclass(); + + // 使用反射访问受保护的方法 + $reflection = new ReflectionClass($blockZen); + $method = $reflection->getMethod('printProjectTeamBlock'); + $method->setAccessible(true); + + ob_start(); + $method->invoke($blockZen, $block); + $output = ob_get_clean(); + + $result->success = true; + $result->error = null; + + // 检查是否设置了projects属性 + if(isset($blockZen->view->projects)) { + $result->hasProjects = true; + $result->projectCount = count($blockZen->view->projects); + $result->projects = $blockZen->view->projects; + } else { + $result->hasProjects = false; + $result->projectCount = 0; + $result->projects = null; + } + + } catch (Exception $e) { + $result->success = false; + $result->error = $e->getMessage(); + $result->hasProjects = false; + $result->projectCount = 0; + $result->projects = null; + } + + $result->output = isset($output) ? $output : ''; + + return $result; + } } diff --git a/module/block/test/zen/printprojectteamblock.php b/module/block/test/zen/printprojectteamblock.php new file mode 100755 index 0000000000..d12c88a71a --- /dev/null +++ b/module/block/test/zen/printprojectteamblock.php @@ -0,0 +1,90 @@ +#!/usr/bin/env php +id->range('11-20'); +$project->project->range('11-20'); +$project->name->prefix("项目")->range('11-20'); +$project->code->prefix("project")->range('11-20'); +$project->model->range("scrum"); +$project->auth->range("[]"); +$project->path->range("[]"); +$project->type->range("project"); +$project->grade->range("1"); +$project->days->range("1"); +$project->status->range("wait{3},doing{4},suspended{2},closed{1}"); +$project->desc->range("[]"); +$project->budget->range("100000,200000"); +$project->budgetUnit->range("CNY"); +$project->percent->range("0-0"); +$project->openedDate->range("`2023-05-01 10:00:10`"); +$project->gen(10); + +zenData('team')->gen(20); + +$stakeholder = zenData('stakeholder'); +$stakeholder->id->range('1-10'); +$stakeholder->objectID->range('11-20'); +$stakeholder->objectType->range('program,project'); +$stakeholder->user->range("admin"); +$stakeholder->type->range("inside"); +$stakeholder->from->range("[]"); +$stakeholder->createdBy->range("admin"); +$stakeholder->createdDate->range("`2023-05-01 10:00:10`"); +$stakeholder->gen(10); + +// 3. 用户登录(选择合适角色) +su('admin'); + +// 4. 创建测试实例(变量名与模块名一致) +$blockTest = new blockTest(); + +// 5. 🔴 强制要求:必须包含至少5个测试步骤 +$block1 = new stdclass(); +$block1->params = new stdclass(); +$block1->params->count = 15; +$block1->params->type = 'all'; +$block1->params->orderBy = 'id_desc'; +r($blockTest->printProjectTeamBlockTest($block1)) && p('success') && e('1'); // 步骤1:正常参数调用 + +r($blockTest->printProjectTeamBlockTest()) && p('success') && e('1'); // 步骤2:空参数调用使用默认值 + +$block3 = new stdclass(); +$block3->params = new stdclass(); +$block3->params->count = 5; +$block3->params->type = 'all'; +$block3->params->orderBy = 'id_desc'; +r($blockTest->printProjectTeamBlockTest($block3)) && p('success') && e('1'); // 步骤3:自定义count参数 + +$block4 = new stdclass(); +$block4->params = new stdclass(); +$block4->params->count = 15; +$block4->params->type = 'wait'; +$block4->params->orderBy = 'id_desc'; +r($blockTest->printProjectTeamBlockTest($block4)) && p('success') && e('1'); // 步骤4:指定type参数为wait + +$block5 = new stdclass(); +$block5->params = new stdclass(); +$block5->params->count = 15; +$block5->params->type = 'all'; +$block5->params->orderBy = 'name_asc'; +r($blockTest->printProjectTeamBlockTest($block5)) && p('success') && e('1'); // 步骤5:指定orderBy参数为name_asc \ No newline at end of file