fix existing tests
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
import { BadRequestException } from '@nestjs/common';
|
import { BadRequestException } from '@nestjs/common';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import { BulkIdErrorReason } from 'src/dtos/asset-ids.response.dto';
|
import { BulkIdErrorReason } from 'src/dtos/asset-ids.response.dto';
|
||||||
|
import { AlbumUserRole } from 'src/entities/album-user.entity';
|
||||||
|
import { IAlbumUserRepository } from 'src/interfaces/album-user.interface';
|
||||||
import { IAlbumRepository } from 'src/interfaces/album.interface';
|
import { IAlbumRepository } from 'src/interfaces/album.interface';
|
||||||
import { IAssetRepository } from 'src/interfaces/asset.interface';
|
import { IAssetRepository } from 'src/interfaces/asset.interface';
|
||||||
import { IUserRepository } from 'src/interfaces/user.interface';
|
import { IUserRepository } from 'src/interfaces/user.interface';
|
||||||
@@ -9,6 +11,7 @@ import { albumStub } from 'test/fixtures/album.stub';
|
|||||||
import { authStub } from 'test/fixtures/auth.stub';
|
import { authStub } from 'test/fixtures/auth.stub';
|
||||||
import { userStub } from 'test/fixtures/user.stub';
|
import { userStub } from 'test/fixtures/user.stub';
|
||||||
import { IAccessRepositoryMock, newAccessRepositoryMock } from 'test/repositories/access.repository.mock';
|
import { IAccessRepositoryMock, newAccessRepositoryMock } from 'test/repositories/access.repository.mock';
|
||||||
|
import { newAlbumUserRepositoryMock } from 'test/repositories/album-user.repository.mock';
|
||||||
import { newAlbumRepositoryMock } from 'test/repositories/album.repository.mock';
|
import { newAlbumRepositoryMock } from 'test/repositories/album.repository.mock';
|
||||||
import { newAssetRepositoryMock } from 'test/repositories/asset.repository.mock';
|
import { newAssetRepositoryMock } from 'test/repositories/asset.repository.mock';
|
||||||
import { newUserRepositoryMock } from 'test/repositories/user.repository.mock';
|
import { newUserRepositoryMock } from 'test/repositories/user.repository.mock';
|
||||||
@@ -19,14 +22,16 @@ describe(AlbumService.name, () => {
|
|||||||
let albumMock: jest.Mocked<IAlbumRepository>;
|
let albumMock: jest.Mocked<IAlbumRepository>;
|
||||||
let assetMock: jest.Mocked<IAssetRepository>;
|
let assetMock: jest.Mocked<IAssetRepository>;
|
||||||
let userMock: jest.Mocked<IUserRepository>;
|
let userMock: jest.Mocked<IUserRepository>;
|
||||||
|
let albumUserMock: jest.Mocked<IAlbumUserRepository>;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
accessMock = newAccessRepositoryMock();
|
accessMock = newAccessRepositoryMock();
|
||||||
albumMock = newAlbumRepositoryMock();
|
albumMock = newAlbumRepositoryMock();
|
||||||
assetMock = newAssetRepositoryMock();
|
assetMock = newAssetRepositoryMock();
|
||||||
userMock = newUserRepositoryMock();
|
userMock = newUserRepositoryMock();
|
||||||
|
albumUserMock = newAlbumUserRepositoryMock();
|
||||||
|
|
||||||
sut = new AlbumService(accessMock, albumMock, assetMock, userMock);
|
sut = new AlbumService(accessMock, albumMock, assetMock, userMock, albumUserMock);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should work', () => {
|
it('should work', () => {
|
||||||
@@ -188,7 +193,7 @@ describe(AlbumService.name, () => {
|
|||||||
ownerId: authStub.admin.user.id,
|
ownerId: authStub.admin.user.id,
|
||||||
albumName: albumStub.empty.albumName,
|
albumName: albumStub.empty.albumName,
|
||||||
description: albumStub.empty.description,
|
description: albumStub.empty.description,
|
||||||
sharedUsers: [{ id: 'user-id' }],
|
sharedUsers: [{ user: { id: 'user-id' } }],
|
||||||
assets: [{ id: '123' }],
|
assets: [{ id: '123' }],
|
||||||
albumThumbnailAssetId: '123',
|
albumThumbnailAssetId: '123',
|
||||||
});
|
});
|
||||||
@@ -355,11 +360,17 @@ describe(AlbumService.name, () => {
|
|||||||
albumMock.getById.mockResolvedValue(_.cloneDeep(albumStub.sharedWithAdmin));
|
albumMock.getById.mockResolvedValue(_.cloneDeep(albumStub.sharedWithAdmin));
|
||||||
albumMock.update.mockResolvedValue(albumStub.sharedWithAdmin);
|
albumMock.update.mockResolvedValue(albumStub.sharedWithAdmin);
|
||||||
userMock.get.mockResolvedValue(userStub.user2);
|
userMock.get.mockResolvedValue(userStub.user2);
|
||||||
|
albumUserMock.create.mockResolvedValue({
|
||||||
|
userId: userStub.user2.id,
|
||||||
|
user: userStub.user2,
|
||||||
|
albumId: albumStub.sharedWithAdmin.id,
|
||||||
|
album: albumStub.sharedWithAdmin,
|
||||||
|
role: AlbumUserRole.Editor,
|
||||||
|
});
|
||||||
await sut.addUsers(authStub.user1, albumStub.sharedWithAdmin.id, { sharedUserIds: [authStub.user2.user.id] });
|
await sut.addUsers(authStub.user1, albumStub.sharedWithAdmin.id, { sharedUserIds: [authStub.user2.user.id] });
|
||||||
expect(albumMock.update).toHaveBeenCalledWith({
|
expect(albumUserMock.create).toHaveBeenCalledWith({
|
||||||
id: albumStub.sharedWithAdmin.id,
|
userId: authStub.user2.user.id,
|
||||||
updatedAt: expect.any(Date),
|
albumId: albumStub.sharedWithAdmin.id,
|
||||||
sharedUsers: [userStub.admin, { id: authStub.user2.user.id }],
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -380,11 +391,10 @@ describe(AlbumService.name, () => {
|
|||||||
sut.removeUser(authStub.admin, albumStub.sharedWithUser.id, userStub.user1.id),
|
sut.removeUser(authStub.admin, albumStub.sharedWithUser.id, userStub.user1.id),
|
||||||
).resolves.toBeUndefined();
|
).resolves.toBeUndefined();
|
||||||
|
|
||||||
expect(albumMock.update).toHaveBeenCalledTimes(1);
|
expect(albumUserMock.delete).toHaveBeenCalledTimes(1);
|
||||||
expect(albumMock.update).toHaveBeenCalledWith({
|
expect(albumUserMock.delete).toHaveBeenCalledWith({
|
||||||
id: albumStub.sharedWithUser.id,
|
albumId: albumStub.sharedWithUser.id,
|
||||||
updatedAt: expect.any(Date),
|
userId: userStub.user1.id,
|
||||||
sharedUsers: [],
|
|
||||||
});
|
});
|
||||||
expect(albumMock.getById).toHaveBeenCalledWith(albumStub.sharedWithUser.id, { withAssets: false });
|
expect(albumMock.getById).toHaveBeenCalledWith(albumStub.sharedWithUser.id, { withAssets: false });
|
||||||
});
|
});
|
||||||
@@ -396,7 +406,7 @@ describe(AlbumService.name, () => {
|
|||||||
sut.removeUser(authStub.user1, albumStub.sharedWithMultiple.id, authStub.user2.user.id),
|
sut.removeUser(authStub.user1, albumStub.sharedWithMultiple.id, authStub.user2.user.id),
|
||||||
).rejects.toBeInstanceOf(BadRequestException);
|
).rejects.toBeInstanceOf(BadRequestException);
|
||||||
|
|
||||||
expect(albumMock.update).not.toHaveBeenCalled();
|
expect(albumUserMock.delete).not.toHaveBeenCalled();
|
||||||
expect(accessMock.album.checkOwnerAccess).toHaveBeenCalledWith(
|
expect(accessMock.album.checkOwnerAccess).toHaveBeenCalledWith(
|
||||||
authStub.user1.user.id,
|
authStub.user1.user.id,
|
||||||
new Set([albumStub.sharedWithMultiple.id]),
|
new Set([albumStub.sharedWithMultiple.id]),
|
||||||
@@ -408,11 +418,10 @@ describe(AlbumService.name, () => {
|
|||||||
|
|
||||||
await sut.removeUser(authStub.user1, albumStub.sharedWithUser.id, authStub.user1.user.id);
|
await sut.removeUser(authStub.user1, albumStub.sharedWithUser.id, authStub.user1.user.id);
|
||||||
|
|
||||||
expect(albumMock.update).toHaveBeenCalledTimes(1);
|
expect(albumUserMock.delete).toHaveBeenCalledTimes(1);
|
||||||
expect(albumMock.update).toHaveBeenCalledWith({
|
expect(albumUserMock.delete).toHaveBeenCalledWith({
|
||||||
id: albumStub.sharedWithUser.id,
|
albumId: albumStub.sharedWithUser.id,
|
||||||
updatedAt: expect.any(Date),
|
userId: authStub.user1.user.id,
|
||||||
sharedUsers: [],
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -421,11 +430,10 @@ describe(AlbumService.name, () => {
|
|||||||
|
|
||||||
await sut.removeUser(authStub.user1, albumStub.sharedWithUser.id, 'me');
|
await sut.removeUser(authStub.user1, albumStub.sharedWithUser.id, 'me');
|
||||||
|
|
||||||
expect(albumMock.update).toHaveBeenCalledTimes(1);
|
expect(albumUserMock.delete).toHaveBeenCalledTimes(1);
|
||||||
expect(albumMock.update).toHaveBeenCalledWith({
|
expect(albumUserMock.delete).toHaveBeenCalledWith({
|
||||||
id: albumStub.sharedWithUser.id,
|
albumId: albumStub.sharedWithUser.id,
|
||||||
updatedAt: expect.any(Date),
|
userId: authStub.user1.user.id,
|
||||||
sharedUsers: [],
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -511,6 +519,7 @@ describe(AlbumService.name, () => {
|
|||||||
expect(accessMock.album.checkSharedAlbumAccess).toHaveBeenCalledWith(
|
expect(accessMock.album.checkSharedAlbumAccess).toHaveBeenCalledWith(
|
||||||
authStub.user1.user.id,
|
authStub.user1.user.id,
|
||||||
new Set(['album-123']),
|
new Set(['album-123']),
|
||||||
|
AlbumUserRole.Viewer,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -521,6 +530,7 @@ describe(AlbumService.name, () => {
|
|||||||
expect(accessMock.album.checkSharedAlbumAccess).toHaveBeenCalledWith(
|
expect(accessMock.album.checkSharedAlbumAccess).toHaveBeenCalledWith(
|
||||||
authStub.admin.user.id,
|
authStub.admin.user.id,
|
||||||
new Set(['album-123']),
|
new Set(['album-123']),
|
||||||
|
AlbumUserRole.Viewer,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Vendored
+35
-3
@@ -1,3 +1,4 @@
|
|||||||
|
import { AlbumUserRole } from 'src/entities/album-user.entity';
|
||||||
import { AlbumEntity, AssetOrder } from 'src/entities/album.entity';
|
import { AlbumEntity, AssetOrder } from 'src/entities/album.entity';
|
||||||
import { assetStub } from 'test/fixtures/asset.stub';
|
import { assetStub } from 'test/fixtures/asset.stub';
|
||||||
import { authStub } from 'test/fixtures/auth.stub';
|
import { authStub } from 'test/fixtures/auth.stub';
|
||||||
@@ -34,7 +35,15 @@ export const albumStub = {
|
|||||||
updatedAt: new Date(),
|
updatedAt: new Date(),
|
||||||
deletedAt: null,
|
deletedAt: null,
|
||||||
sharedLinks: [],
|
sharedLinks: [],
|
||||||
sharedUsers: [userStub.user1],
|
sharedUsers: [
|
||||||
|
{
|
||||||
|
user: userStub.user1,
|
||||||
|
album: undefined as unknown as AlbumEntity,
|
||||||
|
role: AlbumUserRole.Editor,
|
||||||
|
userId: userStub.user1.id,
|
||||||
|
albumId: 'album-2',
|
||||||
|
},
|
||||||
|
],
|
||||||
isActivityEnabled: true,
|
isActivityEnabled: true,
|
||||||
order: AssetOrder.DESC,
|
order: AssetOrder.DESC,
|
||||||
}),
|
}),
|
||||||
@@ -51,7 +60,22 @@ export const albumStub = {
|
|||||||
updatedAt: new Date(),
|
updatedAt: new Date(),
|
||||||
deletedAt: null,
|
deletedAt: null,
|
||||||
sharedLinks: [],
|
sharedLinks: [],
|
||||||
sharedUsers: [userStub.user1, userStub.user2],
|
sharedUsers: [
|
||||||
|
{
|
||||||
|
user: userStub.user1,
|
||||||
|
album: undefined as unknown as AlbumEntity,
|
||||||
|
role: AlbumUserRole.Editor,
|
||||||
|
userId: userStub.user1.id,
|
||||||
|
albumId: 'album-3',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
user: userStub.user2,
|
||||||
|
album: undefined as unknown as AlbumEntity,
|
||||||
|
role: AlbumUserRole.Editor,
|
||||||
|
userId: userStub.user2.id,
|
||||||
|
albumId: 'album-3',
|
||||||
|
},
|
||||||
|
],
|
||||||
isActivityEnabled: true,
|
isActivityEnabled: true,
|
||||||
order: AssetOrder.DESC,
|
order: AssetOrder.DESC,
|
||||||
}),
|
}),
|
||||||
@@ -68,7 +92,15 @@ export const albumStub = {
|
|||||||
updatedAt: new Date(),
|
updatedAt: new Date(),
|
||||||
deletedAt: null,
|
deletedAt: null,
|
||||||
sharedLinks: [],
|
sharedLinks: [],
|
||||||
sharedUsers: [userStub.admin],
|
sharedUsers: [
|
||||||
|
{
|
||||||
|
user: userStub.admin,
|
||||||
|
album: undefined as unknown as AlbumEntity,
|
||||||
|
role: AlbumUserRole.Editor,
|
||||||
|
userId: userStub.admin.id,
|
||||||
|
albumId: 'album-3',
|
||||||
|
},
|
||||||
|
],
|
||||||
isActivityEnabled: true,
|
isActivityEnabled: true,
|
||||||
order: AssetOrder.DESC,
|
order: AssetOrder.DESC,
|
||||||
}),
|
}),
|
||||||
|
|||||||
+1
@@ -103,6 +103,7 @@ const albumResponse: AlbumResponseDto = {
|
|||||||
ownerId: 'admin_id',
|
ownerId: 'admin_id',
|
||||||
owner: mapUser(userStub.admin),
|
owner: mapUser(userStub.admin),
|
||||||
sharedUsers: [],
|
sharedUsers: [],
|
||||||
|
sharedUsersV2: [],
|
||||||
shared: false,
|
shared: false,
|
||||||
hasSharedLink: false,
|
hasSharedLink: false,
|
||||||
assets: [],
|
assets: [],
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
import { IAlbumUserRepository } from 'src/interfaces/album-user.interface';
|
||||||
|
|
||||||
|
export const newAlbumUserRepositoryMock = (): jest.Mocked<IAlbumUserRepository> => {
|
||||||
|
return {
|
||||||
|
create: jest.fn(),
|
||||||
|
delete: jest.fn(),
|
||||||
|
update: jest.fn(),
|
||||||
|
};
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user