znt/module/file/test/lib/filezen.unittest.class.php

158 lines
4.7 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
class fileZenTest
{
public $fileZenTest;
public $tester;
function __construct()
{
global $tester;
$this->tester = $tester;
$tester->app->setModuleName('file');
$tester->loadModel('file');
$this->fileZenTest = initReference('file');
}
/**
* Test getDownloadMode method.
*
* @param object $file 文件对象
* @param string $mouse 鼠标操作类型
* @access public
* @return string
*/
public function getDownloadModeZenTest($file = null, string $mouse = ''): string
{
$method = $this->fileZenTest->getMethod('getDownloadMode');
$method->setAccessible(true);
$result = $method->invokeArgs($this->fileZenTest->newInstance(), array($file, $mouse));
if(dao::isError()) return dao::getError();
return $result;
}
/**
* Test buildDownloadTable method.
*
* @param array $fields 字段配置
* @param array $rows 数据行
* @param string $kind 业务类型
* @param array $rowspans 行合并配置
* @param array $colspans 列合并配置
* @access public
* @return string
*/
public function buildDownloadTableZenTest($fields = array(), $rows = array(), $kind = '', $rowspans = array(), $colspans = array()): string
{
$method = $this->fileZenTest->getMethod('buildDownloadTable');
$method->setAccessible(true);
$result = $method->invokeArgs($this->fileZenTest->newInstance(), array($fields, $rows, $kind, $rowspans, $colspans));
if(dao::isError()) return dao::getError();
return $result;
}
/**
* Test unlinkRealFile method.
*
* @param object $file 文件对象
* @access public
* @return mixed
*/
public function unlinkRealFileZenTest($file): array
{
// 记录调用前的状态
$beforeCount = 0;
if(!empty($file) && isset($file->pathname))
{
$beforeCount = $this->tester->dao->select('COUNT(1) as count')->from(TABLE_FILE)->where('pathname')->eq($file->pathname)->fetch('count');
}
try
{
$method = $this->fileZenTest->getMethod('unlinkRealFile');
$method->setAccessible(true);
$result = $method->invokeArgs($this->fileZenTest->newInstance(), array($file));
}
catch(TypeError $e)
{
// 处理类型错误比如null对象
return array(
'beforeCount' => $beforeCount,
'afterCount' => $beforeCount,
'called' => false,
'error' => 'type_error'
);
}
catch(Exception $e)
{
return array(
'beforeCount' => $beforeCount,
'afterCount' => $beforeCount,
'called' => false,
'error' => $e->getMessage()
);
}
// 检查调用后的状态
$afterCount = 0;
if(!empty($file) && isset($file->pathname))
{
$afterCount = $this->tester->dao->select('COUNT(1) as count')->from(TABLE_FILE)->where('pathname')->eq($file->pathname)->fetch('count');
}
if(dao::isError()) return dao::getError();
return array(
'beforeCount' => $beforeCount,
'afterCount' => $afterCount,
'called' => true
);
}
/**
* Test updateFileName method.
*
* @param int $fileID 文件ID
* @param string $fileName 文件名
* @param string $extension 扩展名
* @access public
* @return array
*/
public function updateFileNameZenTest(int $fileID, string $fileName = '', string $extension = ''): array
{
// 设置POST数据
$_POST['fileName'] = $fileName;
$_POST['extension'] = $extension;
try
{
$method = $this->fileZenTest->getMethod('updateFileName');
$method->setAccessible(true);
$result = $method->invokeArgs($this->fileZenTest->newInstance(), array($fileID));
if(dao::isError())
{
$result = array('result' => 'fail', 'message' => 'Database error');
}
}
catch(TypeError $e)
{
$result = array('result' => 'fail', 'message' => 'File not found or invalid data');
}
catch(Exception $e)
{
$result = array('result' => 'fail', 'message' => $e->getMessage());
}
finally
{
// 清理POST数据
unset($_POST['fileName']);
unset($_POST['extension']);
}
return $result;
}
}