|
@@ -1,5 +1,6 @@
|
|
|
-import { albumStub, authStub, newAlbumRepositoryMock, newAssetRepositoryMock } from '../../test';
|
|
|
+import { albumStub, authStub, newAlbumRepositoryMock, newAssetRepositoryMock, newJobRepositoryMock } from '../../test';
|
|
|
import { IAssetRepository } from '../asset';
|
|
|
+import { IJobRepository, JobName } from '../job';
|
|
|
import { IAlbumRepository } from './album.repository';
|
|
|
import { AlbumService } from './album.service';
|
|
|
|
|
@@ -7,19 +8,21 @@ describe(AlbumService.name, () => {
|
|
|
let sut: AlbumService;
|
|
|
let albumMock: jest.Mocked<IAlbumRepository>;
|
|
|
let assetMock: jest.Mocked<IAssetRepository>;
|
|
|
+ let jobMock: jest.Mocked<IJobRepository>;
|
|
|
|
|
|
beforeEach(async () => {
|
|
|
albumMock = newAlbumRepositoryMock();
|
|
|
assetMock = newAssetRepositoryMock();
|
|
|
+ jobMock = newJobRepositoryMock();
|
|
|
|
|
|
- sut = new AlbumService(albumMock, assetMock);
|
|
|
+ sut = new AlbumService(albumMock, assetMock, jobMock);
|
|
|
});
|
|
|
|
|
|
it('should work', () => {
|
|
|
expect(sut).toBeDefined();
|
|
|
});
|
|
|
|
|
|
- describe('get list of albums', () => {
|
|
|
+ describe('getAll', () => {
|
|
|
it('gets list of albums for auth user', async () => {
|
|
|
albumMock.getOwned.mockResolvedValue([albumStub.empty, albumStub.sharedWithUser]);
|
|
|
albumMock.getAssetCountForIds.mockResolvedValue([
|
|
@@ -28,7 +31,7 @@ describe(AlbumService.name, () => {
|
|
|
]);
|
|
|
albumMock.getInvalidThumbnail.mockResolvedValue([]);
|
|
|
|
|
|
- const result = await sut.getAllAlbums(authStub.admin, {});
|
|
|
+ const result = await sut.getAll(authStub.admin, {});
|
|
|
expect(result).toHaveLength(2);
|
|
|
expect(result[0].id).toEqual(albumStub.empty.id);
|
|
|
expect(result[1].id).toEqual(albumStub.sharedWithUser.id);
|
|
@@ -39,7 +42,7 @@ describe(AlbumService.name, () => {
|
|
|
albumMock.getAssetCountForIds.mockResolvedValue([{ albumId: albumStub.oneAsset.id, assetCount: 1 }]);
|
|
|
albumMock.getInvalidThumbnail.mockResolvedValue([]);
|
|
|
|
|
|
- const result = await sut.getAllAlbums(authStub.admin, { assetId: albumStub.oneAsset.id });
|
|
|
+ const result = await sut.getAll(authStub.admin, { assetId: albumStub.oneAsset.id });
|
|
|
expect(result).toHaveLength(1);
|
|
|
expect(result[0].id).toEqual(albumStub.oneAsset.id);
|
|
|
expect(albumMock.getByAssetId).toHaveBeenCalledTimes(1);
|
|
@@ -50,7 +53,7 @@ describe(AlbumService.name, () => {
|
|
|
albumMock.getAssetCountForIds.mockResolvedValue([{ albumId: albumStub.sharedWithUser.id, assetCount: 0 }]);
|
|
|
albumMock.getInvalidThumbnail.mockResolvedValue([]);
|
|
|
|
|
|
- const result = await sut.getAllAlbums(authStub.admin, { shared: true });
|
|
|
+ const result = await sut.getAll(authStub.admin, { shared: true });
|
|
|
expect(result).toHaveLength(1);
|
|
|
expect(result[0].id).toEqual(albumStub.sharedWithUser.id);
|
|
|
expect(albumMock.getShared).toHaveBeenCalledTimes(1);
|
|
@@ -61,7 +64,7 @@ describe(AlbumService.name, () => {
|
|
|
albumMock.getAssetCountForIds.mockResolvedValue([{ albumId: albumStub.empty.id, assetCount: 0 }]);
|
|
|
albumMock.getInvalidThumbnail.mockResolvedValue([]);
|
|
|
|
|
|
- const result = await sut.getAllAlbums(authStub.admin, { shared: false });
|
|
|
+ const result = await sut.getAll(authStub.admin, { shared: false });
|
|
|
expect(result).toHaveLength(1);
|
|
|
expect(result[0].id).toEqual(albumStub.empty.id);
|
|
|
expect(albumMock.getNotShared).toHaveBeenCalledTimes(1);
|
|
@@ -73,7 +76,7 @@ describe(AlbumService.name, () => {
|
|
|
albumMock.getAssetCountForIds.mockResolvedValue([{ albumId: albumStub.oneAsset.id, assetCount: 1 }]);
|
|
|
albumMock.getInvalidThumbnail.mockResolvedValue([]);
|
|
|
|
|
|
- const result = await sut.getAllAlbums(authStub.admin, {});
|
|
|
+ const result = await sut.getAll(authStub.admin, {});
|
|
|
|
|
|
expect(result).toHaveLength(1);
|
|
|
expect(result[0].assetCount).toEqual(1);
|
|
@@ -89,7 +92,7 @@ describe(AlbumService.name, () => {
|
|
|
albumMock.save.mockResolvedValue(albumStub.oneAssetValidThumbnail);
|
|
|
assetMock.getFirstAssetForAlbumId.mockResolvedValue(albumStub.oneAssetInvalidThumbnail.assets[0]);
|
|
|
|
|
|
- const result = await sut.getAllAlbums(authStub.admin, {});
|
|
|
+ const result = await sut.getAll(authStub.admin, {});
|
|
|
|
|
|
expect(result).toHaveLength(1);
|
|
|
expect(albumMock.getInvalidThumbnail).toHaveBeenCalledTimes(1);
|
|
@@ -105,10 +108,47 @@ describe(AlbumService.name, () => {
|
|
|
albumMock.save.mockResolvedValue(albumStub.emptyWithValidThumbnail);
|
|
|
assetMock.getFirstAssetForAlbumId.mockResolvedValue(null);
|
|
|
|
|
|
- const result = await sut.getAllAlbums(authStub.admin, {});
|
|
|
+ const result = await sut.getAll(authStub.admin, {});
|
|
|
|
|
|
expect(result).toHaveLength(1);
|
|
|
expect(albumMock.getInvalidThumbnail).toHaveBeenCalledTimes(1);
|
|
|
expect(albumMock.save).toHaveBeenCalledTimes(1);
|
|
|
});
|
|
|
+
|
|
|
+ describe('create', () => {
|
|
|
+ it('creates album', async () => {
|
|
|
+ albumMock.create.mockResolvedValue(albumStub.empty);
|
|
|
+
|
|
|
+ await expect(sut.create(authStub.admin, { albumName: 'Empty album' })).resolves.toEqual({
|
|
|
+ albumName: 'Empty album',
|
|
|
+ albumThumbnailAssetId: null,
|
|
|
+ assetCount: 0,
|
|
|
+ assets: [],
|
|
|
+ createdAt: expect.anything(),
|
|
|
+ id: 'album-1',
|
|
|
+ owner: {
|
|
|
+ createdAt: '2021-01-01',
|
|
|
+ email: 'admin@test.com',
|
|
|
+ firstName: 'admin_first_name',
|
|
|
+ id: 'admin_id',
|
|
|
+ isAdmin: true,
|
|
|
+ lastName: 'admin_last_name',
|
|
|
+ oauthId: '',
|
|
|
+ profileImagePath: '',
|
|
|
+ shouldChangePassword: false,
|
|
|
+ storageLabel: 'admin',
|
|
|
+ updatedAt: '2021-01-01',
|
|
|
+ },
|
|
|
+ ownerId: 'admin_id',
|
|
|
+ shared: false,
|
|
|
+ sharedUsers: [],
|
|
|
+ updatedAt: expect.anything(),
|
|
|
+ });
|
|
|
+
|
|
|
+ expect(jobMock.queue).toHaveBeenCalledWith({
|
|
|
+ name: JobName.SEARCH_INDEX_ALBUM,
|
|
|
+ data: { ids: [albumStub.empty.id] },
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
});
|