|
@@ -1,6 +1,6 @@
|
|
|
import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';
|
|
import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';
|
|
|
import { DataSource } from 'typeorm';
|
|
import { DataSource } from 'typeorm';
|
|
|
-import { FileServiceMt } from '../../src/services/file.service';
|
|
|
|
|
|
|
+import { FileService } from '../../src/services/file.service';
|
|
|
import { File } from '../../src/entities/file.entity';
|
|
import { File } from '../../src/entities/file.entity';
|
|
|
import { MinioService } from '../../src/services/minio.service';
|
|
import { MinioService } from '../../src/services/minio.service';
|
|
|
import { logger } from '@d8d/shared-utils';
|
|
import { logger } from '@d8d/shared-utils';
|
|
@@ -18,7 +18,7 @@ vi.mock('uuid', () => ({
|
|
|
v4: () => 'test-uuid-123'
|
|
v4: () => 'test-uuid-123'
|
|
|
}));
|
|
}));
|
|
|
|
|
|
|
|
-describe('FileServiceMt', () => {
|
|
|
|
|
|
|
+describe('FileService', () => {
|
|
|
let mockDataSource: DataSource;
|
|
let mockDataSource: DataSource;
|
|
|
|
|
|
|
|
beforeEach(() => {
|
|
beforeEach(() => {
|
|
@@ -66,7 +66,7 @@ describe('FileServiceMt', () => {
|
|
|
generateUploadPolicy: mockGenerateUploadPolicy
|
|
generateUploadPolicy: mockGenerateUploadPolicy
|
|
|
} as unknown as MinioService));
|
|
} as unknown as MinioService));
|
|
|
|
|
|
|
|
- const fileService = new FileServiceMt(mockDataSource);
|
|
|
|
|
|
|
+ const fileService = new FileService(mockDataSource);
|
|
|
|
|
|
|
|
// Mock GenericCrudService methods
|
|
// Mock GenericCrudService methods
|
|
|
vi.spyOn(fileService, 'create').mockResolvedValue(mockSavedFile as File);
|
|
vi.spyOn(fileService, 'create').mockResolvedValue(mockSavedFile as File);
|
|
@@ -96,7 +96,7 @@ describe('FileServiceMt', () => {
|
|
|
generateUploadPolicy: mockGenerateUploadPolicy
|
|
generateUploadPolicy: mockGenerateUploadPolicy
|
|
|
} as unknown as MinioService));
|
|
} as unknown as MinioService));
|
|
|
|
|
|
|
|
- const fileService = new FileServiceMt(mockDataSource);
|
|
|
|
|
|
|
+ const fileService = new FileService(mockDataSource);
|
|
|
|
|
|
|
|
await expect(fileService.createFile(mockFileData)).rejects.toThrow('文件创建失败');
|
|
await expect(fileService.createFile(mockFileData)).rejects.toThrow('文件创建失败');
|
|
|
expect(logger.error).toHaveBeenCalled();
|
|
expect(logger.error).toHaveBeenCalled();
|
|
@@ -120,7 +120,7 @@ describe('FileServiceMt', () => {
|
|
|
bucketName: 'd8dai'
|
|
bucketName: 'd8dai'
|
|
|
} as unknown as MinioService));
|
|
} as unknown as MinioService));
|
|
|
|
|
|
|
|
- const fileService = new FileServiceMt(mockDataSource);
|
|
|
|
|
|
|
+ const fileService = new FileService(mockDataSource);
|
|
|
vi.spyOn(fileService.repository, 'findOne').mockResolvedValue(mockFile);
|
|
vi.spyOn(fileService.repository, 'findOne').mockResolvedValue(mockFile);
|
|
|
vi.spyOn(fileService, 'delete').mockResolvedValue(true);
|
|
vi.spyOn(fileService, 'delete').mockResolvedValue(true);
|
|
|
|
|
|
|
@@ -150,7 +150,7 @@ describe('FileServiceMt', () => {
|
|
|
bucketName: 'd8dai'
|
|
bucketName: 'd8dai'
|
|
|
} as unknown as MinioService));
|
|
} as unknown as MinioService));
|
|
|
|
|
|
|
|
- const fileService = new FileServiceMt(mockDataSource);
|
|
|
|
|
|
|
+ const fileService = new FileService(mockDataSource);
|
|
|
vi.spyOn(fileService.repository, 'findOne').mockResolvedValue(mockFile);
|
|
vi.spyOn(fileService.repository, 'findOne').mockResolvedValue(mockFile);
|
|
|
vi.spyOn(fileService, 'delete').mockResolvedValue(true);
|
|
vi.spyOn(fileService, 'delete').mockResolvedValue(true);
|
|
|
|
|
|
|
@@ -166,7 +166,7 @@ describe('FileServiceMt', () => {
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
it('should throw error when file not found', async () => {
|
|
it('should throw error when file not found', async () => {
|
|
|
- const fileService = new FileServiceMt(mockDataSource);
|
|
|
|
|
|
|
+ const fileService = new FileService(mockDataSource);
|
|
|
vi.spyOn(fileService.repository, 'findOne').mockResolvedValue(null);
|
|
vi.spyOn(fileService.repository, 'findOne').mockResolvedValue(null);
|
|
|
|
|
|
|
|
await expect(fileService.deleteFile(999)).rejects.toThrow('文件不存在');
|
|
await expect(fileService.deleteFile(999)).rejects.toThrow('文件不存在');
|
|
@@ -189,7 +189,7 @@ describe('FileServiceMt', () => {
|
|
|
bucketName: 'd8dai'
|
|
bucketName: 'd8dai'
|
|
|
} as unknown as MinioService));
|
|
} as unknown as MinioService));
|
|
|
|
|
|
|
|
- const fileService = new FileServiceMt(mockDataSource);
|
|
|
|
|
|
|
+ const fileService = new FileService(mockDataSource);
|
|
|
vi.spyOn(fileService, 'getById').mockResolvedValue(mockFile);
|
|
vi.spyOn(fileService, 'getById').mockResolvedValue(mockFile);
|
|
|
|
|
|
|
|
const result = await fileService.getFileUrl(1);
|
|
const result = await fileService.getFileUrl(1);
|
|
@@ -200,7 +200,7 @@ describe('FileServiceMt', () => {
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
it('should throw error when file not found', async () => {
|
|
it('should throw error when file not found', async () => {
|
|
|
- const fileService = new FileServiceMt(mockDataSource);
|
|
|
|
|
|
|
+ const fileService = new FileService(mockDataSource);
|
|
|
vi.spyOn(fileService, 'getById').mockResolvedValue(null);
|
|
vi.spyOn(fileService, 'getById').mockResolvedValue(null);
|
|
|
|
|
|
|
|
await expect(fileService.getFileUrl(999)).rejects.toThrow('文件不存在');
|
|
await expect(fileService.getFileUrl(999)).rejects.toThrow('文件不存在');
|
|
@@ -224,7 +224,7 @@ describe('FileServiceMt', () => {
|
|
|
bucketName: 'd8dai'
|
|
bucketName: 'd8dai'
|
|
|
} as unknown as MinioService));
|
|
} as unknown as MinioService));
|
|
|
|
|
|
|
|
- const fileService = new FileServiceMt(mockDataSource);
|
|
|
|
|
|
|
+ const fileService = new FileService(mockDataSource);
|
|
|
vi.spyOn(fileService, 'getById').mockResolvedValue(mockFile);
|
|
vi.spyOn(fileService, 'getById').mockResolvedValue(mockFile);
|
|
|
|
|
|
|
|
const result = await fileService.getFileDownloadUrl(1);
|
|
const result = await fileService.getFileDownloadUrl(1);
|
|
@@ -242,7 +242,7 @@ describe('FileServiceMt', () => {
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
it('should throw error when file not found', async () => {
|
|
it('should throw error when file not found', async () => {
|
|
|
- const fileService = new FileServiceMt(mockDataSource);
|
|
|
|
|
|
|
+ const fileService = new FileService(mockDataSource);
|
|
|
vi.spyOn(fileService, 'getById').mockResolvedValue(null);
|
|
vi.spyOn(fileService, 'getById').mockResolvedValue(null);
|
|
|
|
|
|
|
|
await expect(fileService.getFileDownloadUrl(999)).rejects.toThrow('文件不存在');
|
|
await expect(fileService.getFileDownloadUrl(999)).rejects.toThrow('文件不存在');
|
|
@@ -277,7 +277,7 @@ describe('FileServiceMt', () => {
|
|
|
bucketName: 'd8dai'
|
|
bucketName: 'd8dai'
|
|
|
} as unknown as MinioService));
|
|
} as unknown as MinioService));
|
|
|
|
|
|
|
|
- const fileService = new FileServiceMt(mockDataSource);
|
|
|
|
|
|
|
+ const fileService = new FileService(mockDataSource);
|
|
|
vi.spyOn(fileService, 'create').mockResolvedValue(mockSavedFile);
|
|
vi.spyOn(fileService, 'create').mockResolvedValue(mockSavedFile);
|
|
|
|
|
|
|
|
const result = await fileService.createMultipartUploadPolicy(mockFileData, 3);
|
|
const result = await fileService.createMultipartUploadPolicy(mockFileData, 3);
|
|
@@ -311,7 +311,7 @@ describe('FileServiceMt', () => {
|
|
|
bucketName: 'd8dai'
|
|
bucketName: 'd8dai'
|
|
|
} as unknown as MinioService));
|
|
} as unknown as MinioService));
|
|
|
|
|
|
|
|
- const fileService = new FileServiceMt(mockDataSource);
|
|
|
|
|
|
|
+ const fileService = new FileService(mockDataSource);
|
|
|
|
|
|
|
|
await expect(fileService.createMultipartUploadPolicy(mockFileData, 3)).rejects.toThrow('创建多部分上传策略失败');
|
|
await expect(fileService.createMultipartUploadPolicy(mockFileData, 3)).rejects.toThrow('创建多部分上传策略失败');
|
|
|
expect(logger.error).toHaveBeenCalled();
|
|
expect(logger.error).toHaveBeenCalled();
|
|
@@ -354,7 +354,7 @@ describe('FileServiceMt', () => {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
mockDataSource.getRepository = vi.fn().mockReturnValue(mockRepository);
|
|
mockDataSource.getRepository = vi.fn().mockReturnValue(mockRepository);
|
|
|
- const fileService = new FileServiceMt(mockDataSource);
|
|
|
|
|
|
|
+ const fileService = new FileService(mockDataSource);
|
|
|
|
|
|
|
|
const result = await fileService.completeMultipartUpload(uploadData);
|
|
const result = await fileService.completeMultipartUpload(uploadData);
|
|
|
|
|
|
|
@@ -395,7 +395,7 @@ describe('FileServiceMt', () => {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
mockDataSource.getRepository = vi.fn().mockReturnValue(mockRepository);
|
|
mockDataSource.getRepository = vi.fn().mockReturnValue(mockRepository);
|
|
|
- const fileService = new FileServiceMt(mockDataSource);
|
|
|
|
|
|
|
+ const fileService = new FileService(mockDataSource);
|
|
|
|
|
|
|
|
await expect(fileService.completeMultipartUpload(uploadData)).rejects.toThrow('文件记录不存在');
|
|
await expect(fileService.completeMultipartUpload(uploadData)).rejects.toThrow('文件记录不存在');
|
|
|
});
|
|
});
|
|
@@ -427,7 +427,7 @@ describe('FileServiceMt', () => {
|
|
|
completeMultipartUpload: mockCompleteMultipartUpload
|
|
completeMultipartUpload: mockCompleteMultipartUpload
|
|
|
} as unknown as MinioService));
|
|
} as unknown as MinioService));
|
|
|
|
|
|
|
|
- const fileService = new FileServiceMt(mockDataSource);
|
|
|
|
|
|
|
+ const fileService = new FileService(mockDataSource);
|
|
|
|
|
|
|
|
await expect(fileService.completeMultipartUpload(uploadData)).rejects.toThrow('完成分片上传失败');
|
|
await expect(fileService.completeMultipartUpload(uploadData)).rejects.toThrow('完成分片上传失败');
|
|
|
expect(logger.error).toHaveBeenCalled();
|
|
expect(logger.error).toHaveBeenCalled();
|