znt/module/transfer/test/lib/transferzen.unittest.class.php

315 lines
11 KiB
PHP

<?php
class transferZenTest
{
public $transferZenTest;
public $tester;
function __construct()
{
global $tester;
$this->tester = $tester;
$tester->app->setModuleName('transfer');
$this->objectModel = $tester->loadModel('transfer');
$this->transferZenTest = initReference('transfer');
}
/**
* Test saveSession method.
*
* @param string $module
* @param string $params
* @access public
* @return mixed
*/
public function saveSessionTest(string $module = '', string $params = '')
{
$result = callZenMethod('transfer', 'saveSession', array($module, $params));
if(dao::isError()) return dao::getError();
return $result;
}
/**
* Test processTaskTemplateFields method.
*
* @param int $executionID
* @param string $fields
* @access public
* @return mixed
*/
public function processTaskTemplateFieldsTest(int $executionID = 0, string $fields = '')
{
$result = callZenMethod('transfer', 'processTaskTemplateFields', array($executionID, $fields));
if(dao::isError()) return dao::getError();
return $result;
}
/**
* Test initTemplateFields method.
*
* @param string $module
* @param string $fields
* @access public
* @return mixed
*/
public function initTemplateFieldsTest(string $module = '', string $fields = '')
{
global $tester;
// 清理$_POST数据
$_POST = array();
$tester->post = new stdClass();
$tester->post->num = 10;
try {
callZenMethod('transfer', 'initTemplateFields', array($module, $fields));
if(dao::isError()) return dao::getError();
// 检查方法是否正确设置了post属性
$result = array();
$result['module'] = $module;
$result['kind'] = isset($tester->post->kind) ? $tester->post->kind : 'not_set';
$result['fieldsSet'] = isset($tester->post->fields) ? 'yes' : 'no';
$result['rowsSet'] = isset($tester->post->rows) ? 'yes' : 'no';
$result['fileNameSet'] = isset($tester->post->fileName) ? 'yes' : 'no';
return $result;
} catch(Exception $e) {
return array('error' => $e->getMessage());
}
}
/**
* Test formatFields method.
*
* @param string $module
* @param array $fields
* @param array $sessionData
* @access public
* @return mixed
*/
public function formatFieldsTest(string $module = '', array $fields = array(), array $sessionData = array())
{
global $tester;
// 设置session数据
if($sessionData)
{
foreach($sessionData as $key => $value)
{
$tester->session->$key = $value;
}
}
$result = callZenMethod('transfer', 'formatFields', array($module, $fields));
if(dao::isError()) return dao::getError();
return $result;
}
/**
* Test buildNextList method.
*
* @param array $list
* @param int $lastID
* @param array $fields
* @param int $pagerID
* @param string $module
* @access public
* @return mixed
*/
public function buildNextListTest(array $list = array(), int $lastID = 0, $fields = array(), int $pagerID = 1, string $module = '')
{
global $tester;
// 设置必要的配置
$tester->config->transfer = new stdClass();
$tester->config->transfer->lazyLoading = true;
$tester->config->transfer->showImportCount = 10;
$tester->config->transfer->actionModule = array('task', 'story', 'bug');
// 设置transfer对象的maxImport属性
$transferZen = $this->transferZenTest;
$transferZen->maxImport = 20;
try {
$result = callZenMethod('transfer', 'buildNextList', array($list, $lastID, $fields, $pagerID, $module));
if(dao::isError()) return dao::getError();
return $result;
} catch(Exception $e) {
return 'Exception: ' . $e->getMessage();
} catch(TypeError $e) {
return 'TypeError: ' . $e->getMessage();
}
}
/**
* Test printRow method.
*
* @param string $module
* @param int $row
* @param array $fields
* @param object $object
* @param string $trClass
* @param int $addID
* @access public
* @return mixed
*/
public function printRowTest(string $module = '', int $row = 0, array $fields = array(), ?object $object = null, string $trClass = '', int $addID = 1)
{
global $tester;
// 设置必要的配置和语言
if(!isset($tester->config->transfer)) $tester->config->transfer = new stdClass();
$tester->config->transfer->actionModule = array('task', 'story', 'bug');
if(!isset($tester->lang->transfer)) $tester->lang->transfer = new stdClass();
$tester->lang->transfer->new = '新建';
if(!isset($tester->lang->task)) $tester->lang->task = new stdClass();
$tester->lang->task->children = '子任务';
try {
// 获取transfer对象并设置transferConfig
$transferZen = $tester->app->loadTarget('transfer', '', 'zen');
if(!property_exists($transferZen, 'transferConfig')) {
$transferZen->transferConfig = new stdClass();
}
$transferZen->transferConfig->textareaFields = 'desc,content,steps';
// 使用反射直接调用private方法,避免responseException
$reflection = new ReflectionClass($transferZen);
$method = $reflection->getMethod('printRow');
$method->setAccessible(true);
$result = $method->invokeArgs($transferZen, array($module, $row, $fields, $object, $trClass, $addID));
if(dao::isError()) return dao::getError();
return $result;
} catch(EndResponseException $e) {
return $e->getContent();
} catch(Exception $e) {
return 'Exception: ' . $e->getMessage() . ' in ' . $e->getFile() . ':' . $e->getLine();
} catch(TypeError $e) {
return 'TypeError: ' . $e->getMessage() . ' in ' . $e->getFile() . ':' . $e->getLine();
} catch(Error $e) {
return 'Error: ' . $e->getMessage() . ' in ' . $e->getFile() . ':' . $e->getLine();
}
}
/**
* Test printCell method.
*
* @param string $module
* @param string $field
* @param string $control
* @param string $name
* @param string $selected
* @param array $values
* @param int $row
* @access public
* @return mixed
*/
public function printCellTest(string $module = '', string $field = '', string $control = '', string $name = '', string $selected = '', array $values = array(), int $row = 0)
{
global $tester;
// 设置必要的配置和session数据
if(!isset($tester->config->transfer)) $tester->config->transfer = new stdClass();
if(!isset($tester->config->transfer->requiredFields)) $tester->config->transfer->requiredFields = array('name', 'title');
// 设置session数据用于测试hidden控件
if($module && $field) {
$sessionKey = $module . 'TransferParams';
if(!isset($tester->session->$sessionKey)) {
$tester->session->$sessionKey = array();
}
$tester->session->{$sessionKey}[$field . 'ID'] = 'sessionValue';
}
try {
// 获取zen对象并设置transferConfig
$zenTest = $tester->app->loadTarget('transfer', '', 'zen');
if(!property_exists($zenTest, 'transferConfig')) {
$zenTest->transferConfig = new stdClass();
}
$zenTest->transferConfig->textareaFields = 'desc,content,steps';
// 使用反射调用private方法
$reflection = new ReflectionClass($zenTest);
$method = $reflection->getMethod('printCell');
$method->setAccessible(true);
$result = $method->invokeArgs($zenTest, array($module, $field, $control, $name, $selected, $values, $row));
if(dao::isError()) return dao::getError();
return $result;
} catch(Exception $e) {
return 'Exception: ' . $e->getMessage() . ' in ' . $e->getFile() . ':' . $e->getLine();
} catch(TypeError $e) {
return 'TypeError: ' . $e->getMessage() . ' in ' . $e->getFile() . ':' . $e->getLine();
} catch(Error $e) {
return 'Error: ' . $e->getMessage() . ' in ' . $e->getFile() . ':' . $e->getLine();
}
}
/**
* Test processEstimate method.
*
* @param int $row
* @param object $object
* @access public
* @return mixed
*/
public function processEstimateTest(int $row = 0, ?object $object = null)
{
global $tester;
// 设置必要的session数据
if(!isset($tester->session->taskTransferParams)) {
$tester->session->taskTransferParams = array('executionID' => 101);
}
try {
// 使用反射调用private方法
$result = callZenMethod('transfer', 'processEstimate', array($row, $object));
if(dao::isError()) return dao::getError();
return $result;
} catch(Exception $e) {
return 'Exception: ' . $e->getMessage() . ' in ' . $e->getFile() . ':' . $e->getLine();
} catch(TypeError $e) {
return 'TypeError: ' . $e->getMessage() . ' in ' . $e->getFile() . ':' . $e->getLine();
} catch(Error $e) {
return 'Error: ' . $e->getMessage() . ' in ' . $e->getFile() . ':' . $e->getLine();
}
}
/**
* Test process4Testcase method.
*
* @param string $field
* @param array $datas
* @param int $key
* @access public
* @return mixed
*/
public function process4TestcaseTest(string $field = '', array $datas = array(), int $key = 0)
{
global $tester;
try {
// 使用反射调用protected方法
$result = callZenMethod('transfer', 'process4Testcase', array($field, $datas, $key));
if(dao::isError()) return dao::getError();
return $result;
} catch(Exception $e) {
return 'Exception: ' . $e->getMessage() . ' in ' . $e->getFile() . ':' . $e->getLine();
} catch(TypeError $e) {
return 'TypeError: ' . $e->getMessage() . ' in ' . $e->getFile() . ':' . $e->getLine();
} catch(Error $e) {
return 'Error: ' . $e->getMessage() . ' in ' . $e->getFile() . ':' . $e->getLine();
}
}
}