+ [misc] Add unit tests for indexZen::getViewMethodForAssetLib() method

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-09-15 15:09:56 +08:00
co-authored by Claude
parent ded342d4d9
commit d9aac7291d
4 changed files with 255 additions and 0 deletions
@@ -32,4 +32,25 @@ class indexZenTest
return $result;
}
/**
* Test getViewMethodForAssetLib method.
*
* @param int $objectID
* @param string $objectType
* @access public
* @return mixed
*/
public function getViewMethodForAssetLibTest(int $objectID, string $objectType)
{
$reflection = new ReflectionClass('indexZen');
$method = $reflection->getMethod('getViewMethodForAssetLib');
$method->setAccessible(true);
$indexZen = new indexZen();
$result = $method->invoke($indexZen, $objectID, $objectType);
if(dao::isError()) return dao::getError();
return $result;
}
}
+74
View File
@@ -0,0 +1,74 @@
#!/usr/bin/env php
<?php
/**
title=测试 indexZen::getViewMethodForAssetLib();
timeout=0
cid=0
- 步骤1:doc对象,assetLibType为practice @practiceView
- 步骤2:doc对象,assetLibType为component @componentView
- 步骤3:不存在的doc对象 @0
- 步骤4:非doc对象,有assetViewMethod配置 @storyView
- 步骤5:无效objectType @0
*/
// 1. 导入依赖(路径固定,不可修改)
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/index.unittest.class.php';
// 2. zendata数据准备(根据需要配置)
$docTable = zenData('doc');
$docTable->id->range('1-10');
$docTable->vision->range('rnd');
$docTable->project->range('0');
$docTable->product->range('0');
$docTable->execution->range('0');
$docTable->lib->range('1-5');
$docTable->title->range('测试文档1,测试文档2,测试文档3,测试文档4,测试文档5,测试文档6,测试文档7,测试文档8,测试文档9,测试文档10');
$docTable->type->range('text');
$docTable->status->range('normal');
$docTable->acl->range('open');
$docTable->assetLibType->range('practice,practice,practice,component,component,component,\'\',\'\',\'\',component');
$docTable->addedBy->range('admin');
$docTable->addedDate->range('`2023-01-01 10:00:00`');
$docTable->deleted->range('0');
$docTable->gen(10);
$storyTable = zenData('story');
$storyTable->id->range('1-10');
$storyTable->vision->range('rnd');
$storyTable->product->range('1-3');
$storyTable->title->range('测试需求1,测试需求2,测试需求3,测试需求4,测试需求5,测试需求6,测试需求7,测试需求8,测试需求9,测试需求10');
$storyTable->type->range('story');
$storyTable->status->range('active');
$storyTable->lib->range('1,1,1,2,2,2,0,0,0,0');
$storyTable->openedBy->range('admin');
$storyTable->openedDate->range('`2023-01-01 10:00:00`');
$storyTable->deleted->range('0');
$storyTable->gen(10);
// 3. 用户登录(选择合适角色)
su('admin');
// 4. 创建测试实例(变量名与模块名一致)
$indexTest = new indexZenTest();
global $config;
// 设置maxVersion配置
$config->maxVersion = '1.0.0';
if(!isset($config->action)) $config->action = new stdclass();
$config->action->assetViewMethod = array(
'story' => 'storyView',
'task' => 'taskView'
);
// 5. 🔴 强制要求:必须包含至少5个测试步骤
r($indexTest->getViewMethodForAssetLibTest(1, 'doc')) && p() && e('practiceView'); // 步骤1:doc对象,assetLibType为practice
r($indexTest->getViewMethodForAssetLibTest(4, 'doc')) && p() && e('componentView'); // 步骤2:doc对象,assetLibType为component
r($indexTest->getViewMethodForAssetLibTest(99, 'doc')) && p() && e('0'); // 步骤3:不存在的doc对象
r($indexTest->getViewMethodForAssetLibTest(1, 'story')) && p() && e('storyView'); // 步骤4:非doc对象,有assetViewMethod配置
r($indexTest->getViewMethodForAssetLibTest(1, 'invalid')) && p() && e('0'); // 步骤5:无效objectType
@@ -0,0 +1,67 @@
---
title: Doc表的getViewMethodForAssetLib方法测试数据
desc: 用于测试资产库视图方法获取的文档数据
fields:
- field: id
range: 1-10
- field: vision
range: rnd
- field: project
range: 0
- field: product
range: 0
- field: execution
range: 0
- field: lib
range: 1-5
- field: template
range: ''
- field: templateType
range: ''
- field: templateDesc
range: ''
- field: chapterType
range: ''
- field: title
range: 测试文档{@}
- field: keywords
range: test,doc
- field: type
range: text
- field: status
range: normal
- field: acl
range: open
- field: assetLibType
range: practice{3},component{3},''{4}
- field: from
range: 0
- field: fromVersion
range: 1
- field: draft
range: ''
- field: collects
range: 0
- field: addedBy
range: admin
- field: addedDate
range: '2023-01-01 10:00:00'
- field: assignedTo
range: ''
- field: assignedDate
range: '0000-00-00 00:00:00'
- field: approvedDate
range: '0000-00-00'
- field: editedBy
range: ''
- field: editedDate
range: '0000-00-00 00:00:00'
- field: lastEditedBy
range: ''
- field: lastEditedDate
range: '0000-00-00 00:00:00'
- field: version
range: 1
- field: deleted
range: '0'
@@ -0,0 +1,93 @@
---
title: Story表的getViewMethodForAssetLib方法测试数据
desc: 用于测试资产库视图方法获取的需求数据
fields:
- field: id
range: 1-10
- field: vision
range: rnd
- field: product
range: 1-3
- field: branch
range: 0
- field: module
range: 0
- field: plan
range: ''
- field: source
range: ''
- field: sourceNote
range: ''
- field: fromBug
range: 0
- field: feedback
range: 0
- field: title
range: 测试需求{@}
- field: keywords
range: test,story
- field: type
range: story
- field: category
range: feature
- field: pri
range: 3
- field: estimate
range: 0
- field: status
range: active
- field: subStatus
range: ''
- field: color
range: ''
- field: stage
range: wait
- field: lib
range: [1{3}, 2{3}, 0{4}]
- field: fromStory
range: 0
- field: fromVersion
range: 1
- field: openedBy
range: admin
- field: openedDate
range: '2023-01-01 10:00:00'
- field: assignedTo
range: ''
- field: assignedDate
range: '0000-00-00 00:00:00'
- field: approvedDate
range: '0000-00-00'
- field: lastEditedBy
range: ''
- field: lastEditedDate
range: '0000-00-00 00:00:00'
- field: changedBy
range: ''
- field: changedDate
range: '0000-00-00 00:00:00'
- field: closedBy
range: ''
- field: closedDate
range: '0000-00-00 00:00:00'
- field: closedReason
range: ''
- field: toBug
range: 0
- field: childStories
range: ''
- field: linkStories
range: ''
- field: linkRequirements
range: ''
- field: duplicateStory
range: 0
- field: reviewedBy
range: ''
- field: reviewedDate
range: '0000-00-00'
- field: version
range: 1
- field: deleted
range: '0'