421 lines
12 KiB
PHP
421 lines
12 KiB
PHP
<?php
|
|
declare(strict_types = 1);
|
|
|
|
require_once dirname(__FILE__, 5) . '/test/lib/test.class.php';
|
|
|
|
class actionTaoTest extends baseTest
|
|
{
|
|
protected $moduleName = 'action';
|
|
protected $className = 'tao';
|
|
|
|
/**
|
|
* Test processLinkStoryAndBugActionExtra method.
|
|
*
|
|
* @param string $ids
|
|
* @param string $module
|
|
* @param string $method
|
|
* @access public
|
|
* @return object
|
|
*/
|
|
public function processLinkStoryAndBugActionExtraTest(string $ids, string $module = 'story', string $method = 'view'): object
|
|
{
|
|
$action = new stdClass();
|
|
$action->extra = $ids;
|
|
|
|
$this->instance->processLinkStoryAndBugActionExtra($action, $module, $method);
|
|
if(dao::isError()) return dao::getError();
|
|
return $action;
|
|
}
|
|
|
|
/**
|
|
* Test processToStoryActionExtra method.
|
|
*
|
|
* @param int $storyID
|
|
* @param string $product
|
|
* @access public
|
|
* @return object
|
|
*/
|
|
public function processToStoryActionExtraTest(int $storyID, string $product = '1'): object
|
|
{
|
|
$action = new stdClass();
|
|
$action->extra = (string)$storyID;
|
|
$action->product = $product;
|
|
|
|
$this->instance->processToStoryActionExtra($action);
|
|
if(dao::isError()) return dao::getError();
|
|
return $action;
|
|
}
|
|
|
|
/**
|
|
* Test processCreateChildrenActionExtra method.
|
|
*
|
|
* @param string $taskIDs
|
|
* @access public
|
|
* @return object
|
|
*/
|
|
public function processCreateChildrenActionExtraTest(string $taskIDs): object
|
|
{
|
|
$action = new stdClass();
|
|
$action->extra = $taskIDs;
|
|
|
|
$this->instance->processCreateChildrenActionExtra($action);
|
|
if(dao::isError()) return dao::getError();
|
|
return $action;
|
|
}
|
|
|
|
/**
|
|
* Test processAttribute method.
|
|
*
|
|
* @param string $type
|
|
* @access public
|
|
* @return string
|
|
*/
|
|
public function processAttributeTest(string $type): string
|
|
{
|
|
$result = $this->instance->processAttribute($type);
|
|
if(dao::isError()) return dao::getError();
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Test getLinkedExtra method.
|
|
*
|
|
* @param object $action
|
|
* @param string $type
|
|
* @access public
|
|
* @return bool
|
|
*/
|
|
public function getLinkedExtraTest(object $action, string $type): bool
|
|
{
|
|
$result = $this->instance->getLinkedExtra($action, $type);
|
|
if(dao::isError()) return dao::getError();
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Test processActionExtra method.
|
|
*
|
|
* @param string $table
|
|
* @param int $extraID
|
|
* @param string $fields
|
|
* @param string $type
|
|
* @param string $method
|
|
* @param bool $onlyBody
|
|
* @param bool $addLink
|
|
* @access public
|
|
* @return string
|
|
*/
|
|
public function processActionExtraTest(string $table, int $extraID, string $fields, string $type, string $method = 'view', bool $onlyBody = false, bool $addLink = true): string
|
|
{
|
|
// 创建测试用的action对象
|
|
$action = new stdClass();
|
|
$action->extra = $extraID;
|
|
$action->objectType = 'bug';
|
|
$action->action = 'converttotask';
|
|
$action->project = 1;
|
|
|
|
$originalExtra = $action->extra; // 备份原始extra值
|
|
|
|
// 模拟onlyBody场景
|
|
if($onlyBody)
|
|
{
|
|
$originalIsonlybody = $this->instance->config->requestType ?? 'GET';
|
|
$_GET['onlybody'] = 'yes';
|
|
}
|
|
|
|
$this->instance->processActionExtra($table, $action, $fields, $type, $method, $onlyBody, $addLink);
|
|
if(dao::isError()) return dao::getError();
|
|
|
|
if($onlyBody) unset($_GET['onlybody']); // 恢复onlyBody状态
|
|
|
|
// 分析结果 - 优先检查特殊场景
|
|
if($action->extra == $originalExtra) return 'no_change';
|
|
if($onlyBody && strpos($action->extra, '<a') === false) return 'onlybody_mode';
|
|
if(!$addLink && strpos($action->extra, '#') !== false && strpos($action->extra, '<a') === false) return 'no_link';
|
|
if($action->objectType == 'bug' && $type == 'task' && strpos($action->extra, 'data-app=') !== false) return 'bug_to_task';
|
|
if(strpos($action->extra, '<a') !== false) return 'contains_link';
|
|
return 'processed';
|
|
}
|
|
|
|
/**
|
|
* Test processStoryGradeActionExtra method.
|
|
*
|
|
* @param int $storyID
|
|
* @access public
|
|
* @return object
|
|
*/
|
|
public function processStoryGradeActionExtraTest(int $storyID): object
|
|
{
|
|
// 创建测试用的action对象
|
|
$action = new stdClass();
|
|
$action->objectID = $storyID;
|
|
$action->extra = '';
|
|
|
|
$result = $this->instance->processStoryGradeActionExtra($action);
|
|
if(dao::isError()) return dao::getError();
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Test processParamString method.
|
|
*
|
|
* @param object $action
|
|
* @param string $type
|
|
* @access public
|
|
* @return string
|
|
*/
|
|
public function processParamStringTest(object $action, string $type): string
|
|
{
|
|
$result = $this->instance->processParamString($action, $type);
|
|
if(dao::isError()) return dao::getError();
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Test processCreateRequirementsActionExtra method.
|
|
*
|
|
* @param string $storyIds
|
|
* @access public
|
|
* @return object
|
|
*/
|
|
public function processCreateRequirementsActionExtraTest(string $storyIds): object
|
|
{
|
|
// 创建模拟的action对象
|
|
$action = new stdClass();
|
|
$action->extra = $storyIds;
|
|
|
|
$this->instance->processCreateRequirementsActionExtra($action);
|
|
if(dao::isError()) return dao::getError();
|
|
return $action;
|
|
}
|
|
|
|
/**
|
|
* Test processAppendLinkByExtra method.
|
|
*
|
|
* @param string $extra
|
|
* @param string $objectType
|
|
* @access public
|
|
* @return object
|
|
*/
|
|
public function processAppendLinkByExtraTest(string $extra, string $objectType = 'task'): object
|
|
{
|
|
$action = new stdClass();
|
|
$action->extra = $extra;
|
|
$action->objectType = $objectType;
|
|
|
|
$this->instance->processAppendLinkByExtra($action);
|
|
if(dao::isError()) return dao::getError();
|
|
return $action;
|
|
}
|
|
|
|
/**
|
|
* Test getActionTable method.
|
|
*
|
|
* @param string $period
|
|
* @access public
|
|
* @return string
|
|
*/
|
|
public function getActionTableTest(string $period): string
|
|
{
|
|
$result = $this->instance->getActionTable($period);
|
|
if(dao::isError()) return dao::getError();
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Test addObjectNameForAction method.
|
|
*
|
|
* @param string $objectType
|
|
* @param int $objectID
|
|
* @param array $objectNames
|
|
* @param string $actionType
|
|
* @param string $extra
|
|
* @access public
|
|
* @return object
|
|
*/
|
|
public function addObjectNameForActionTest(string $objectType, int $objectID, array $objectNames, string $actionType = '', string $extra = ''): object
|
|
{
|
|
// 创建测试用的action对象
|
|
$action = new stdClass();
|
|
$action->objectType = $objectType;
|
|
$action->objectID = $objectID;
|
|
$action->action = $actionType;
|
|
$action->extra = $extra;
|
|
$action->objectName = '';
|
|
|
|
$this->instance->addObjectNameForAction($action, $objectNames, $objectType);
|
|
if(dao::isError()) return dao::getError();
|
|
return $action;
|
|
}
|
|
|
|
/**
|
|
* Test processMaxDocObjectLink method.
|
|
*
|
|
* @param object $action
|
|
* @param string $moduleName
|
|
* @param string $methodName
|
|
* @param string $vars
|
|
* @access public
|
|
* @return object
|
|
*/
|
|
public function processMaxDocObjectLinkTest(object $action, string $moduleName, string $methodName, string $vars): object
|
|
{
|
|
$this->instance->processMaxDocObjectLink($action, $moduleName, $methodName, $vars);
|
|
if(dao::isError()) return dao::getError();
|
|
return $action;
|
|
}
|
|
|
|
/**
|
|
* Test getDocLibLinkParameters method.
|
|
*
|
|
* @param object $action
|
|
* @access public
|
|
* @return array|bool
|
|
*/
|
|
public function getDocLibLinkParametersTest(object $action)
|
|
{
|
|
$result = $this->instance->getDocLibLinkParameters($action);
|
|
if(dao::isError()) return dao::getError();
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Test getDoclibTypeParams method.
|
|
*
|
|
* @param object $action
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getDoclibTypeParamsTest(object $action): array
|
|
{
|
|
$result = $this->instance->getDoclibTypeParams($action);
|
|
if(dao::isError()) return dao::getError();
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Test getObjectLinkParams method.
|
|
*
|
|
* @param object $action
|
|
* @param string $vars
|
|
* @access public
|
|
* @return string
|
|
*/
|
|
public function getObjectLinkParamsTest(object $action, string $vars): string
|
|
{
|
|
$result = $this->instance->getObjectLinkParams($action, $vars);
|
|
if(dao::isError()) return dao::getError();
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Test getReleaseRelated method.
|
|
*
|
|
* @param string $objectType
|
|
* @param int $objectID
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getReleaseRelated(string $objectType, int $objectID): array
|
|
{
|
|
$result = $this->instance->getReleaseRelated($objectType, $objectID);
|
|
if(dao::isError()) return dao::getError();
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Test getReviewRelated method.
|
|
*
|
|
* @param string $objectType
|
|
* @param int $objectID
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getReviewRelatedTest(string $objectType, int $objectID): array
|
|
{
|
|
$result = $this->instance->getReviewRelated($objectType, $objectID);
|
|
if(dao::isError()) return dao::getError();
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Test getNeedRelatedFields method.
|
|
*
|
|
* @param string $objectType
|
|
* @param int $objectID
|
|
* @param string $actionType
|
|
* @param string $extra
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getNeedRelatedFieldsTest(string $objectType, int $objectID, string $actionType = '', string $extra = ''): array
|
|
{
|
|
$result = $this->instance->getNeedRelatedFields($objectType, $objectID, $actionType, $extra);
|
|
if(dao::isError()) return dao::getError();
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Test getGenerateRelated method.
|
|
*
|
|
* @param string $objectType
|
|
* @param int $objectID
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getGenerateRelatedTest(string $objectType, int $objectID): array
|
|
{
|
|
$result = $this->instance->getGenerateRelated($objectType, $objectID);
|
|
if(dao::isError()) return dao::getError();
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Test getTaskRelated method.
|
|
*
|
|
* @param string $objectType
|
|
* @param int $objectID
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getTaskRelated(string $objectType, int $objectID): array
|
|
{
|
|
$result = $this->instance->getTaskRelated($objectType, $objectID);
|
|
if(dao::isError()) return dao::getError();
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* 根据类型和ID获取操作记录列表。
|
|
* Get action list by type and ID.
|
|
*
|
|
* @param string $objectType
|
|
* @param int|array $objectID
|
|
* @param array $modules
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getActionListByTypeAndIDTest(string $objectType, int|array $objectID, array $modules): array
|
|
{
|
|
$result = $this->instance->getActionListByTypeAndID($objectType, $objectID, $modules);
|
|
if(dao::isError()) return dao::getError();
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* 测试操作是否可点击。
|
|
* Test check action clickable.
|
|
*
|
|
* @param object $action
|
|
* @param array $deptUser
|
|
* @param string $moduleName
|
|
* @param string $methodName
|
|
* @access public
|
|
* @return bool
|
|
*/
|
|
public function checkActionClickableTest(object $action, array $deptUser, string $moduleName, string $methodName): bool
|
|
{
|
|
return $this->instance->checkActionClickable($action, $deptUser, $moduleName, $methodName);
|
|
}
|
|
}
|