|
|
@@ -234,59 +234,74 @@ describe('FileService', () => {
|
|
|
});
|
|
|
});
|
|
|
|
|
|
- // describe('createMultipartUploadPolicy', () => {
|
|
|
- // it('should create multipart upload policy successfully', async () => {
|
|
|
- // const mockFileData = {
|
|
|
- // name: 'large-file.zip',
|
|
|
- // type: 'application/zip',
|
|
|
- // uploadUserId: 1
|
|
|
- // };
|
|
|
+ describe('createMultipartUploadPolicy', () => {
|
|
|
+ it('should create multipart upload policy successfully', async () => {
|
|
|
+ const mockFileData = {
|
|
|
+ name: 'large-file.zip',
|
|
|
+ type: 'application/zip',
|
|
|
+ uploadUserId: 1
|
|
|
+ };
|
|
|
|
|
|
- // const mockUploadId = 'upload-123';
|
|
|
- // const mockUploadUrls = ['url1', 'url2', 'url3'];
|
|
|
- // const mockSavedFile = {
|
|
|
- // id: 1,
|
|
|
- // ...mockFileData,
|
|
|
- // path: '1/test-uuid-123-large-file.zip',
|
|
|
- // uploadTime: new Date(),
|
|
|
- // createdAt: new Date(),
|
|
|
- // updatedAt: new Date()
|
|
|
- // } as File;
|
|
|
+ const mockUploadId = 'upload-123';
|
|
|
+ const mockUploadUrls = ['url1', 'url2', 'url3'];
|
|
|
+ const mockSavedFile = {
|
|
|
+ id: 1,
|
|
|
+ ...mockFileData,
|
|
|
+ path: '1/test-uuid-123-large-file.zip',
|
|
|
+ uploadTime: new Date(),
|
|
|
+ createdAt: new Date(),
|
|
|
+ updatedAt: new Date()
|
|
|
+ } as File;
|
|
|
|
|
|
- // vi.mocked(mockMinioService.createMultipartUpload).mockResolvedValue(mockUploadId);
|
|
|
- // vi.mocked(mockMinioService.generateMultipartUploadUrls).mockResolvedValue(mockUploadUrls);
|
|
|
- // vi.spyOn(fileService, 'create').mockResolvedValue(mockSavedFile);
|
|
|
+ const mockCreateMultipartUpload = vi.fn().mockResolvedValue(mockUploadId);
|
|
|
+ const mockGenerateMultipartUploadUrls = vi.fn().mockResolvedValue(mockUploadUrls);
|
|
|
|
|
|
- // const result = await fileService.createMultipartUploadPolicy(mockFileData, 3);
|
|
|
+ vi.mocked(MinioService).mockImplementation(() => ({
|
|
|
+ createMultipartUpload: mockCreateMultipartUpload,
|
|
|
+ generateMultipartUploadUrls: mockGenerateMultipartUploadUrls,
|
|
|
+ bucketName: 'd8dai'
|
|
|
+ } as unknown as MinioService));
|
|
|
|
|
|
- // expect(mockMinioService.createMultipartUpload).toHaveBeenCalledWith('d8dai', '1/test-uuid-123-large-file.zip');
|
|
|
- // expect(mockMinioService.generateMultipartUploadUrls).toHaveBeenCalledWith(
|
|
|
- // 'd8dai',
|
|
|
- // '1/test-uuid-123-large-file.zip',
|
|
|
- // mockUploadId,
|
|
|
- // 3
|
|
|
- // );
|
|
|
- // expect(result).toEqual({
|
|
|
- // file: mockSavedFile,
|
|
|
- // uploadId: mockUploadId,
|
|
|
- // uploadUrls: mockUploadUrls,
|
|
|
- // bucket: 'd8dai',
|
|
|
- // key: '1/test-uuid-123-large-file.zip'
|
|
|
- // });
|
|
|
- // });
|
|
|
+ const fileService = new FileService(mockDataSource);
|
|
|
+ vi.spyOn(fileService, 'create').mockResolvedValue(mockSavedFile);
|
|
|
|
|
|
- // it('should handle errors during multipart upload creation', async () => {
|
|
|
- // const mockFileData = {
|
|
|
- // name: 'large-file.zip',
|
|
|
- // uploadUserId: 1
|
|
|
- // };
|
|
|
+ const result = await fileService.createMultipartUploadPolicy(mockFileData, 3);
|
|
|
|
|
|
- // vi.mocked(mockMinioService.createMultipartUpload).mockRejectedValue(new Error('MinIO error'));
|
|
|
+ expect(mockCreateMultipartUpload).toHaveBeenCalledWith('d8dai', '1/test-uuid-123-large-file.zip');
|
|
|
+ expect(mockGenerateMultipartUploadUrls).toHaveBeenCalledWith(
|
|
|
+ 'd8dai',
|
|
|
+ '1/test-uuid-123-large-file.zip',
|
|
|
+ mockUploadId,
|
|
|
+ 3
|
|
|
+ );
|
|
|
+ expect(result).toEqual({
|
|
|
+ file: mockSavedFile,
|
|
|
+ uploadId: mockUploadId,
|
|
|
+ uploadUrls: mockUploadUrls,
|
|
|
+ bucket: 'd8dai',
|
|
|
+ key: '1/test-uuid-123-large-file.zip'
|
|
|
+ });
|
|
|
+ });
|
|
|
|
|
|
- // await expect(fileService.createMultipartUploadPolicy(mockFileData, 3)).rejects.toThrow('创建多部分上传策略失败');
|
|
|
- // expect(logger.error).toHaveBeenCalled();
|
|
|
- // });
|
|
|
- // });
|
|
|
+ it('should handle errors during multipart upload creation', async () => {
|
|
|
+ const mockFileData = {
|
|
|
+ name: 'large-file.zip',
|
|
|
+ uploadUserId: 1
|
|
|
+ };
|
|
|
+
|
|
|
+ const mockCreateMultipartUpload = vi.fn().mockRejectedValue(new Error('MinIO error'));
|
|
|
+
|
|
|
+ vi.mocked(MinioService).mockImplementation(() => ({
|
|
|
+ createMultipartUpload: mockCreateMultipartUpload,
|
|
|
+ bucketName: 'd8dai'
|
|
|
+ } as unknown as MinioService));
|
|
|
+
|
|
|
+ const fileService = new FileService(mockDataSource);
|
|
|
+
|
|
|
+ await expect(fileService.createMultipartUploadPolicy(mockFileData, 3)).rejects.toThrow('创建多部分上传策略失败');
|
|
|
+ expect(logger.error).toHaveBeenCalled();
|
|
|
+ });
|
|
|
+ });
|
|
|
|
|
|
// describe('completeMultipartUpload', () => {
|
|
|
// it('should complete multipart upload successfully', async () => {
|