+ [misc] Add unit tests for fileModel::saveChunkedFile() method
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -673,4 +673,20 @@ class fileTest
|
||||
|
||||
return $fileTitle;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test saveChunkedFile method.
|
||||
*
|
||||
* @param array $file
|
||||
* @param string $uid
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function saveChunkedFileTest(array $file, string $uid): array
|
||||
{
|
||||
$result = $this->objectModel->saveChunkedFile($file, $uid);
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
Executable
+92
@@ -0,0 +1,92 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
|
||||
title=测试 fileModel::saveChunkedFile();
|
||||
timeout=0
|
||||
cid=0
|
||||
|
||||
- 执行fileTest模块的saveChunkedFileTest方法,参数是$normalFile, $normalUid
|
||||
- 属性extension @txt
|
||||
- 属性title @test_file
|
||||
- 属性size @1024
|
||||
- 执行fileTest模块的saveChunkedFileTest方法,参数是$zeroChunkFile, $zeroUid @0
|
||||
- 执行fileTest模块的saveChunkedFileTest方法,参数是$invalidFile, $invalidUid
|
||||
- 属性extension @doc
|
||||
- 属性title @invalid_file
|
||||
- 执行fileTest模块的saveChunkedFileTest方法,参数是$specialFile, $specialUid
|
||||
- 属性title @test_file_中文
|
||||
- 属性extension @jpg
|
||||
- 执行fileTest模块的saveChunkedFileTest方法,参数是$largeFile, $largeUid
|
||||
- 属性size @10485760
|
||||
- 属性extension @zip
|
||||
|
||||
*/
|
||||
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/file.unittest.class.php';
|
||||
|
||||
su('admin');
|
||||
|
||||
$fileTest = new fileTest();
|
||||
|
||||
// 测试步骤1:正常分块文件保存
|
||||
$normalFile = array(
|
||||
'extension' => 'txt',
|
||||
'title' => 'test_file',
|
||||
'size' => 1024,
|
||||
'pathname' => 'test_file_path',
|
||||
'chunks' => 3,
|
||||
'chunkIndex' => 0
|
||||
);
|
||||
$normalUid = 'test_uid_001';
|
||||
r($fileTest->saveChunkedFileTest($normalFile, $normalUid)) && p('extension,title,size') && e('txt,test_file,1024');
|
||||
|
||||
// 测试步骤2:零分块文件处理
|
||||
$zeroChunkFile = array(
|
||||
'extension' => 'pdf',
|
||||
'title' => 'zero_chunk_file',
|
||||
'size' => 512,
|
||||
'pathname' => 'zero_chunk_path',
|
||||
'chunks' => 0,
|
||||
'chunkIndex' => 0
|
||||
);
|
||||
$zeroUid = 'test_uid_002';
|
||||
r($fileTest->saveChunkedFileTest($zeroChunkFile, $zeroUid)) && p() && e('0');
|
||||
|
||||
// 测试步骤3:无效分块数据处理
|
||||
$invalidFile = array(
|
||||
'extension' => 'doc',
|
||||
'title' => 'invalid_file',
|
||||
'size' => 2048,
|
||||
'pathname' => 'invalid_path',
|
||||
'chunks' => '',
|
||||
'chunkIndex' => 1
|
||||
);
|
||||
$invalidUid = 'test_uid_003';
|
||||
r($fileTest->saveChunkedFileTest($invalidFile, $invalidUid)) && p('extension,title') && e('doc,invalid_file');
|
||||
|
||||
// 测试步骤4:特殊字符文件名处理
|
||||
$specialFile = array(
|
||||
'extension' => 'jpg',
|
||||
'title' => 'test_file_中文',
|
||||
'size' => 4096,
|
||||
'pathname' => 'special_char_path',
|
||||
'chunks' => 2,
|
||||
'chunkIndex' => 1
|
||||
);
|
||||
$specialUid = 'test_uid_004';
|
||||
r($fileTest->saveChunkedFileTest($specialFile, $specialUid)) && p('title,extension') && e('test_file_中文,jpg');
|
||||
|
||||
// 测试步骤5:大文件分块处理
|
||||
$largeFile = array(
|
||||
'extension' => 'zip',
|
||||
'title' => 'large_file',
|
||||
'size' => 10485760,
|
||||
'pathname' => 'large_file_path',
|
||||
'chunks' => 10,
|
||||
'chunkIndex' => 5
|
||||
);
|
||||
$largeUid = 'test_uid_005';
|
||||
r($fileTest->saveChunkedFileTest($largeFile, $largeUid)) && p('size,extension') && e('10485760,zip');
|
||||
Reference in New Issue
Block a user