示例#1
0
        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);
        }