* [misc] Enhance unit tests for fileTao::saveFile() method

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-09-25 09:16:45 +08:00
co-authored by Claude
parent faea8dface
commit c8dc27e945
2 changed files with 113 additions and 26 deletions
@@ -5,6 +5,7 @@ class fileTest
{
global $tester;
$this->objectModel = $tester->loadModel('file');
$this->objectTao = $tester->loadTao('file');
}
/**
@@ -1244,4 +1245,25 @@ class fileTest
return $result;
}
/**
* Test saveFile method.
*
* @param array $file
* @param string $strSkipFields
* @access public
* @return int|false
*/
public function saveFileTest(array $file, string $strSkipFields = ''): int|false
{
// 使用反射访问protected方法
$reflection = new ReflectionClass($this->objectTao);
$method = $reflection->getMethod('saveFile');
$method->setAccessible(true);
$result = $method->invoke($this->objectTao, $file, $strSkipFields);
if(dao::isError()) return dao::getError();
return $result;
}
}
+91 -26
View File
@@ -1,38 +1,103 @@
#!/usr/bin/env php
<?php
/**
title=测试 fileTao::saveFile();
timeout=0
cid=0
- 执行fileTest模块的saveFileTest方法,参数是$normalFile @6
- 执行fileTest模块的saveFileTest方法,参数是$skipFieldsFile, 'realpath, extra' @7
- 执行fileTest模块的saveFileTest方法,参数是$emptyFile @0
- 执行fileTest模块的saveFileTest方法,参数是$specialFile @8
- 执行$savedFile
- 属性title @Validate File.txt
- 属性objectType @bug
- 属性objectID @203
- 属性extension @txt
*/
// 1. 导入依赖
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/file.unittest.class.php';
function initData()
{
zenData('file')->gen(5);
}
initData();
// 2. zendata数据准备
$table = zenData('file');
$table->id->range('1-5');
$table->pathname->range('file{5}');
$table->title->range('File{5}');
$table->extension->range('txt{5}');
$table->size->range('1024{5}');
$table->objectType->range('bug{5}');
$table->objectID->range('1{5}');
$table->addedBy->range('admin{5}');
$table->addedDate->range('`2024-01-01 10:00:00`,`2024-01-02 10:00:00`,`2024-01-03 10:00:00`,`2024-01-04 10:00:00`,`2024-01-05 10:00:00`');
$table->gen(5);
/**
title=fileTao->saveFile();
cid=1
// 3. 用户登录
su('admin');
*/
// 4. 创建测试实例
$fileTest = new fileTest();
global $app;
$tester = new fileTest('admin');
$file = array
(
'pathname' => '',
'title' => 'File 6',
// 5. 测试步骤1:正常保存文件数据
$normalFile = array(
'pathname' => '202401/02/normalfile.txt',
'title' => 'Normal File.txt',
'extension' => 'txt',
'size' => 2048,
'objectType' => 'bug',
'objectID' => 100,
'addedBy' => '',
'addedDate' => helper::now(),
'realpath' => 'realpath',
'extension' => 'text',
'extra' => 'extra',
'objectID' => 200,
'addedBy' => 'admin',
'addedDate' => helper::now()
);
r($fileTest->saveFileTest($normalFile)) && p('') && e('6');
$lastInsertID = $tester->objectModel->saveFile($file, 'realpath');
r($lastInsertID) && p('') && e('6');
// 测试步骤2:保存文件时跳过指定字段
$skipFieldsFile = array(
'pathname' => '202401/02/skipfile.txt',
'title' => 'Skip Fields File.txt',
'extension' => 'txt',
'size' => 1024,
'objectType' => 'task',
'objectID' => 201,
'addedBy' => 'admin',
'addedDate' => helper::now(),
'extra' => 'skip',
'realpath' => '/tmp/realpath2'
);
r($fileTest->saveFileTest($skipFieldsFile, 'realpath,extra')) && p('') && e('7');
$fileList = $tester->objectModel->getByIdList(array($lastInsertID));
r($fileList[$lastInsertID]) && p('objectType,objectID') && e('bug,100');
// 测试步骤3:传入空数组参数
$emptyFile = array();
r($fileTest->saveFileTest($emptyFile)) && p('') && e('0');
// 测试步骤4:保存包含特殊字符的文件数据
$specialFile = array(
'pathname' => '202401/02/special_file.txt',
'title' => 'Special File.txt',
'extension' => 'txt',
'size' => 4096,
'objectType' => 'story',
'objectID' => 202,
'addedBy' => 'admin',
'addedDate' => helper::now()
);
r($fileTest->saveFileTest($specialFile)) && p('') && e('8');
// 测试步骤5:保存文件数据验证数据库记录完整性
$validateFile = array(
'pathname' => '202401/02/validate.txt',
'title' => 'Validate File.txt',
'extension' => 'txt',
'size' => 8192,
'objectType' => 'bug',
'objectID' => 203,
'addedBy' => 'admin',
'addedDate' => helper::now()
);
$insertID = $fileTest->saveFileTest($validateFile);
$savedFile = $fileTest->objectModel->getById($insertID);
r($savedFile) && p('title,objectType,objectID,extension') && e('Validate File.txt,bug,203,txt');