2024-04-17 03:00:31 +05:30
|
|
|
import { ILoggerRepository } from 'src/interfaces/logger.interface';
|
2024-03-21 12:59:49 +01:00
|
|
|
import { IStorageRepository } from 'src/interfaces/storage.interface';
|
2024-03-21 00:07:30 +01:00
|
|
|
import { StorageService } from 'src/services/storage.service';
|
2024-04-17 03:00:31 +05:30
|
|
|
import { newLoggerRepositoryMock } from 'test/repositories/logger.repository.mock';
|
2024-03-20 19:32:04 +01:00
|
|
|
import { newStorageRepositoryMock } from 'test/repositories/storage.repository.mock';
|
2024-04-16 10:44:45 -04:00
|
|
|
import { Mocked } from 'vitest';
|
2023-02-25 09:12:03 -05:00
|
|
|
|
|
|
|
|
describe(StorageService.name, () => {
|
|
|
|
|
let sut: StorageService;
|
2024-04-16 10:44:45 -04:00
|
|
|
let storageMock: Mocked<IStorageRepository>;
|
2024-04-17 03:00:31 +05:30
|
|
|
let loggerMock: Mocked<ILoggerRepository>;
|
2023-02-25 09:12:03 -05:00
|
|
|
|
2024-03-05 23:23:06 +01:00
|
|
|
beforeEach(() => {
|
2023-02-25 09:12:03 -05:00
|
|
|
storageMock = newStorageRepositoryMock();
|
2024-04-17 03:00:31 +05:30
|
|
|
loggerMock = newLoggerRepositoryMock();
|
|
|
|
|
sut = new StorageService(storageMock, loggerMock);
|
2023-02-25 09:12:03 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should work', () => {
|
|
|
|
|
expect(sut).toBeDefined();
|
|
|
|
|
});
|
|
|
|
|
|
2024-08-15 16:12:41 -04:00
|
|
|
describe('onBootstrap', () => {
|
2023-05-28 21:48:07 -04:00
|
|
|
it('should create the library folder on initialization', () => {
|
2024-08-15 16:12:41 -04:00
|
|
|
sut.onBootstrap();
|
2023-05-28 21:48:07 -04:00
|
|
|
expect(storageMock.mkdirSync).toHaveBeenCalledWith('upload/library');
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2023-02-25 09:12:03 -05:00
|
|
|
describe('handleDeleteFiles', () => {
|
|
|
|
|
it('should handle null values', async () => {
|
|
|
|
|
await sut.handleDeleteFiles({ files: [undefined, null] });
|
|
|
|
|
|
|
|
|
|
expect(storageMock.unlink).not.toHaveBeenCalled();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should handle an error removing a file', async () => {
|
|
|
|
|
storageMock.unlink.mockRejectedValue(new Error('something-went-wrong'));
|
|
|
|
|
|
|
|
|
|
await sut.handleDeleteFiles({ files: ['path/to/something'] });
|
|
|
|
|
|
|
|
|
|
expect(storageMock.unlink).toHaveBeenCalledWith('path/to/something');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should remove the file', async () => {
|
|
|
|
|
await sut.handleDeleteFiles({ files: ['path/to/something'] });
|
|
|
|
|
|
|
|
|
|
expect(storageMock.unlink).toHaveBeenCalledWith('path/to/something');
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|