From fb652fb7891b9eb2f0730849b7bd7dcfe3d2f8dc Mon Sep 17 00:00:00 2001 From: liugang Date: Mon, 8 Sep 2025 12:40:18 +0800 Subject: [PATCH] + [misc] Add unit tests for fileModel::saveChunkedFile() method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- module/file/test/lib/file.unittest.class.php | 16 ++++ module/file/test/model/savechunkedfile.php | 92 ++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100755 module/file/test/model/savechunkedfile.php diff --git a/module/file/test/lib/file.unittest.class.php b/module/file/test/lib/file.unittest.class.php index bea097fb47..7b3ed90404 100644 --- a/module/file/test/lib/file.unittest.class.php +++ b/module/file/test/lib/file.unittest.class.php @@ -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; + } } diff --git a/module/file/test/model/savechunkedfile.php b/module/file/test/model/savechunkedfile.php new file mode 100755 index 0000000000..adb6207b4f --- /dev/null +++ b/module/file/test/model/savechunkedfile.php @@ -0,0 +1,92 @@ +#!/usr/bin/env php + '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'); \ No newline at end of file