|
@@ -1,21 +1,19 @@
|
|
-import { DomainEventPublisherInterface, NotificationRequestedEvent } from '@standardnotes/domain-events'
|
|
|
|
-import { Uuid, Timestamps } from '@standardnotes/domain-core'
|
|
|
|
|
|
+import { Uuid, Timestamps, Result } from '@standardnotes/domain-core'
|
|
|
|
|
|
import { SharedVaultRepositoryInterface } from '../../SharedVault/SharedVaultRepositoryInterface'
|
|
import { SharedVaultRepositoryInterface } from '../../SharedVault/SharedVaultRepositoryInterface'
|
|
import { SharedVaultInviteRepositoryInterface } from '../../SharedVault/User/Invite/SharedVaultInviteRepositoryInterface'
|
|
import { SharedVaultInviteRepositoryInterface } from '../../SharedVault/User/Invite/SharedVaultInviteRepositoryInterface'
|
|
import { SharedVaultUserRepositoryInterface } from '../../SharedVault/User/SharedVaultUserRepositoryInterface'
|
|
import { SharedVaultUserRepositoryInterface } from '../../SharedVault/User/SharedVaultUserRepositoryInterface'
|
|
import { DeleteSharedVault } from './DeleteSharedVault'
|
|
import { DeleteSharedVault } from './DeleteSharedVault'
|
|
-import { DomainEventFactoryInterface } from '../../Event/DomainEventFactoryInterface'
|
|
|
|
import { SharedVault } from '../../SharedVault/SharedVault'
|
|
import { SharedVault } from '../../SharedVault/SharedVault'
|
|
import { SharedVaultUser } from '../../SharedVault/User/SharedVaultUser'
|
|
import { SharedVaultUser } from '../../SharedVault/User/SharedVaultUser'
|
|
import { SharedVaultUserPermission } from '../../SharedVault/User/SharedVaultUserPermission'
|
|
import { SharedVaultUserPermission } from '../../SharedVault/User/SharedVaultUserPermission'
|
|
|
|
+import { RemoveUserFromSharedVault } from '../RemoveUserFromSharedVault/RemoveUserFromSharedVault'
|
|
|
|
|
|
describe('DeleteSharedVault', () => {
|
|
describe('DeleteSharedVault', () => {
|
|
let sharedVaultRepository: SharedVaultRepositoryInterface
|
|
let sharedVaultRepository: SharedVaultRepositoryInterface
|
|
let sharedVaultUserRepository: SharedVaultUserRepositoryInterface
|
|
let sharedVaultUserRepository: SharedVaultUserRepositoryInterface
|
|
let sharedVaultInviteRepository: SharedVaultInviteRepositoryInterface
|
|
let sharedVaultInviteRepository: SharedVaultInviteRepositoryInterface
|
|
- let domainEventPublisher: DomainEventPublisherInterface
|
|
|
|
- let domainEventFactory: DomainEventFactoryInterface
|
|
|
|
|
|
+ let removeUserFromSharedVault: RemoveUserFromSharedVault
|
|
let sharedVault: SharedVault
|
|
let sharedVault: SharedVault
|
|
let sharedVaultUser: SharedVaultUser
|
|
let sharedVaultUser: SharedVaultUser
|
|
|
|
|
|
@@ -24,8 +22,7 @@ describe('DeleteSharedVault', () => {
|
|
sharedVaultRepository,
|
|
sharedVaultRepository,
|
|
sharedVaultUserRepository,
|
|
sharedVaultUserRepository,
|
|
sharedVaultInviteRepository,
|
|
sharedVaultInviteRepository,
|
|
- domainEventPublisher,
|
|
|
|
- domainEventFactory,
|
|
|
|
|
|
+ removeUserFromSharedVault,
|
|
)
|
|
)
|
|
|
|
|
|
beforeEach(() => {
|
|
beforeEach(() => {
|
|
@@ -47,18 +44,12 @@ describe('DeleteSharedVault', () => {
|
|
}).getValue()
|
|
}).getValue()
|
|
sharedVaultUserRepository = {} as jest.Mocked<SharedVaultUserRepositoryInterface>
|
|
sharedVaultUserRepository = {} as jest.Mocked<SharedVaultUserRepositoryInterface>
|
|
sharedVaultUserRepository.findBySharedVaultUuid = jest.fn().mockResolvedValue([sharedVaultUser])
|
|
sharedVaultUserRepository.findBySharedVaultUuid = jest.fn().mockResolvedValue([sharedVaultUser])
|
|
- sharedVaultUserRepository.removeBySharedVaultUuid = jest.fn()
|
|
|
|
|
|
|
|
sharedVaultInviteRepository = {} as jest.Mocked<SharedVaultInviteRepositoryInterface>
|
|
sharedVaultInviteRepository = {} as jest.Mocked<SharedVaultInviteRepositoryInterface>
|
|
sharedVaultInviteRepository.removeBySharedVaultUuid = jest.fn()
|
|
sharedVaultInviteRepository.removeBySharedVaultUuid = jest.fn()
|
|
|
|
|
|
- domainEventPublisher = {} as jest.Mocked<DomainEventPublisherInterface>
|
|
|
|
- domainEventPublisher.publish = jest.fn()
|
|
|
|
-
|
|
|
|
- domainEventFactory = {} as jest.Mocked<DomainEventFactoryInterface>
|
|
|
|
- domainEventFactory.createNotificationRequestedEvent = jest
|
|
|
|
- .fn()
|
|
|
|
- .mockReturnValue({} as jest.Mocked<NotificationRequestedEvent>)
|
|
|
|
|
|
+ removeUserFromSharedVault = {} as jest.Mocked<RemoveUserFromSharedVault>
|
|
|
|
+ removeUserFromSharedVault.execute = jest.fn().mockReturnValue(Result.ok())
|
|
})
|
|
})
|
|
|
|
|
|
it('should remove shared vault', async () => {
|
|
it('should remove shared vault', async () => {
|
|
@@ -71,9 +62,8 @@ describe('DeleteSharedVault', () => {
|
|
|
|
|
|
expect(result.isFailed()).toBeFalsy()
|
|
expect(result.isFailed()).toBeFalsy()
|
|
expect(sharedVaultRepository.remove).toHaveBeenCalled()
|
|
expect(sharedVaultRepository.remove).toHaveBeenCalled()
|
|
- expect(sharedVaultUserRepository.removeBySharedVaultUuid).toHaveBeenCalled()
|
|
|
|
expect(sharedVaultInviteRepository.removeBySharedVaultUuid).toHaveBeenCalled()
|
|
expect(sharedVaultInviteRepository.removeBySharedVaultUuid).toHaveBeenCalled()
|
|
- expect(domainEventPublisher.publish).toHaveBeenCalled()
|
|
|
|
|
|
+ expect(removeUserFromSharedVault.execute).toHaveBeenCalled()
|
|
})
|
|
})
|
|
|
|
|
|
it('should return error when shared vault does not exist', async () => {
|
|
it('should return error when shared vault does not exist', async () => {
|
|
@@ -87,9 +77,8 @@ describe('DeleteSharedVault', () => {
|
|
|
|
|
|
expect(result.isFailed()).toBeTruthy()
|
|
expect(result.isFailed()).toBeTruthy()
|
|
expect(sharedVaultRepository.remove).not.toHaveBeenCalled()
|
|
expect(sharedVaultRepository.remove).not.toHaveBeenCalled()
|
|
- expect(sharedVaultUserRepository.removeBySharedVaultUuid).not.toHaveBeenCalled()
|
|
|
|
expect(sharedVaultInviteRepository.removeBySharedVaultUuid).not.toHaveBeenCalled()
|
|
expect(sharedVaultInviteRepository.removeBySharedVaultUuid).not.toHaveBeenCalled()
|
|
- expect(domainEventPublisher.publish).not.toHaveBeenCalled()
|
|
|
|
|
|
+ expect(removeUserFromSharedVault.execute).not.toHaveBeenCalled()
|
|
})
|
|
})
|
|
|
|
|
|
it('should return error when shared vault uuid is invalid', async () => {
|
|
it('should return error when shared vault uuid is invalid', async () => {
|
|
@@ -102,9 +91,8 @@ describe('DeleteSharedVault', () => {
|
|
|
|
|
|
expect(result.isFailed()).toBeTruthy()
|
|
expect(result.isFailed()).toBeTruthy()
|
|
expect(sharedVaultRepository.remove).not.toHaveBeenCalled()
|
|
expect(sharedVaultRepository.remove).not.toHaveBeenCalled()
|
|
- expect(sharedVaultUserRepository.removeBySharedVaultUuid).not.toHaveBeenCalled()
|
|
|
|
expect(sharedVaultInviteRepository.removeBySharedVaultUuid).not.toHaveBeenCalled()
|
|
expect(sharedVaultInviteRepository.removeBySharedVaultUuid).not.toHaveBeenCalled()
|
|
- expect(domainEventPublisher.publish).not.toHaveBeenCalled()
|
|
|
|
|
|
+ expect(removeUserFromSharedVault.execute).not.toHaveBeenCalled()
|
|
})
|
|
})
|
|
|
|
|
|
it('should return error when originator uuid is invalid', async () => {
|
|
it('should return error when originator uuid is invalid', async () => {
|
|
@@ -117,9 +105,8 @@ describe('DeleteSharedVault', () => {
|
|
|
|
|
|
expect(result.isFailed()).toBeTruthy()
|
|
expect(result.isFailed()).toBeTruthy()
|
|
expect(sharedVaultRepository.remove).not.toHaveBeenCalled()
|
|
expect(sharedVaultRepository.remove).not.toHaveBeenCalled()
|
|
- expect(sharedVaultUserRepository.removeBySharedVaultUuid).not.toHaveBeenCalled()
|
|
|
|
expect(sharedVaultInviteRepository.removeBySharedVaultUuid).not.toHaveBeenCalled()
|
|
expect(sharedVaultInviteRepository.removeBySharedVaultUuid).not.toHaveBeenCalled()
|
|
- expect(domainEventPublisher.publish).not.toHaveBeenCalled()
|
|
|
|
|
|
+ expect(removeUserFromSharedVault.execute).not.toHaveBeenCalled()
|
|
})
|
|
})
|
|
|
|
|
|
it('should return error when originator of the delete request is not the owner of the shared vault', async () => {
|
|
it('should return error when originator of the delete request is not the owner of the shared vault', async () => {
|
|
@@ -139,8 +126,22 @@ describe('DeleteSharedVault', () => {
|
|
|
|
|
|
expect(result.isFailed()).toBeTruthy()
|
|
expect(result.isFailed()).toBeTruthy()
|
|
expect(sharedVaultRepository.remove).not.toHaveBeenCalled()
|
|
expect(sharedVaultRepository.remove).not.toHaveBeenCalled()
|
|
- expect(sharedVaultUserRepository.removeBySharedVaultUuid).not.toHaveBeenCalled()
|
|
|
|
expect(sharedVaultInviteRepository.removeBySharedVaultUuid).not.toHaveBeenCalled()
|
|
expect(sharedVaultInviteRepository.removeBySharedVaultUuid).not.toHaveBeenCalled()
|
|
- expect(domainEventPublisher.publish).not.toHaveBeenCalled()
|
|
|
|
|
|
+ expect(removeUserFromSharedVault.execute).not.toHaveBeenCalled()
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ it('should return error if removing user from shared vault fails', async () => {
|
|
|
|
+ removeUserFromSharedVault.execute = jest.fn().mockReturnValue(Result.fail('failed'))
|
|
|
|
+ const useCase = createUseCase()
|
|
|
|
+
|
|
|
|
+ const result = await useCase.execute({
|
|
|
|
+ sharedVaultUuid: '00000000-0000-0000-0000-000000000000',
|
|
|
|
+ originatorUuid: '00000000-0000-0000-0000-000000000000',
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ expect(result.isFailed()).toBeTruthy()
|
|
|
|
+ expect(sharedVaultRepository.remove).not.toHaveBeenCalled()
|
|
|
|
+ expect(sharedVaultInviteRepository.removeBySharedVaultUuid).not.toHaveBeenCalled()
|
|
|
|
+ expect(removeUserFromSharedVault.execute).toHaveBeenCalled()
|
|
})
|
|
})
|
|
})
|
|
})
|