public async Task ShouldDeleteConversationCorrectly() { const long conversationId = 1; const long messageId = 1; var firedEventsCount = 0; var initiator = new User { Id = 1 }; var invited = new List <User> { new User { Id = 2 }, new User { Id = 3 } }; var conversationUsers = invited.Union(new List <User> { initiator }).Select(u => new ConversationUser() { ConversationId = conversationId, UserId = u.Id }).ToList(); var conversationUserRepository = new TestRepository <ConversationUser>(conversationUsers); var blackListRepository = new TestRepository <BlackList>(); var chatActionRepository = new TestRepository <ChatAction>(new List <ChatAction>() { new ChatAction() { ConversationId = conversationId } }); var messageRepository = new TestRepository <Message>(new List <Message>() { new Message() { Id = messageId, ConversationId = conversationId, SenderId = initiator.Id, Text = "test" } });; var attachmentRepository = new TestRepository <Attachment>(new List <Attachment>() { new Attachment { Id = 1, MessageId = messageId } }); var blackListService = new BlackListService(blackListRepository, _mapper); var conversationUserService = new ConversationUserService(conversationUserRepository, _mapper); var messageService = new MessageService(messageRepository, attachmentRepository, _timeProvider, _attachmentContentProvider, blackListService, conversationUserService, _mapper); var conversation = new Conversation { Id = conversationId, OwnerId = initiator.Id, Users = conversationUsers }; var conversationRepository = new TestRepository <Conversation>(new List <Conversation>() { conversation }); var conversationService = new ConversationService(conversationRepository, conversationUserRepository, chatActionRepository, blackListService, messageService, _timeProvider, _mapper); conversationService.OnConversationDeleted += (c) => firedEventsCount++; await conversationService.DeleteConversationAsync(initiator.Id, conversation.Id); Assert.Empty(conversationRepository.All()); Assert.Empty(messageRepository.All()); Assert.Empty(attachmentRepository.All()); Assert.Empty(conversationUserRepository.All()); Assert.Equal(1, firedEventsCount); }