Пример #1
0
        public async Task ShouldDeleteMessage()
        {
            var firedEventsCount           = 0;
            var blackListRepository        = new TestRepository <BlackList>();
            var messageRepository          = new TestRepository <Message>();
            var conversationRepository     = new TestRepository <Conversation>();
            var conversationUserRepository = new TestRepository <ConversationUser>();
            var attachmentRepository       = new TestRepository <Attachment>();
            var timeProvider = new TestTimeProvider();
            var attachmentContentProvider = new TestAttachmentContentProvider();
            var conversationUserService   = new ConversationUserService(conversationUserRepository, _mapper);
            var blackListService          = new BlackListService(blackListRepository, _mapper);
            var messageService            = new MessageService(messageRepository, attachmentRepository, timeProvider, attachmentContentProvider, blackListService, conversationUserService, _mapper);
            var sender = new User()
            {
                Id = 1
            };
            var conversation = new Conversation()
            {
                Id = 1
            };

            messageService.OnMessagesDeleted += (m) => firedEventsCount++;

            var result = await messageService.SendMessageAsync(sender.Id,
                                                               conversation.Id, "test", new AttachmentDto[] { new AttachmentDto {
                                                                                                                  Id = 1, MessageId = 0
                                                                                                              } });

            await messageService.DeleteByIdsAsync(sender.Id, result.Entity.Id);

            Assert.Empty(messageRepository.All());
            Assert.Empty(attachmentRepository.All());
            Assert.Equal(1, firedEventsCount);
        }
Пример #2
0
        public async Task ShouldCreateConversationUser()
        {
            var firedEventsCount           = 0;
            var conversationUserRepository = new TestRepository <ConversationUser>();
            var conversationUserService    = new ConversationUserService(conversationUserRepository, _mapper);

            var conversationId = 1;
            var userId         = 1;

            conversationUserService.OnUserAdded += (cu) => firedEventsCount++;

            await conversationUserService.AddUserAsync(conversationId, userId);

            Assert.Contains(conversationUserRepository.All(), (cu) => cu.ConversationId == conversationId && cu.UserId == userId);
            Assert.Equal(1, firedEventsCount);
        }
Пример #3
0
        public async Task ShouldCreateConversationCorrectly()
        {
            var firedEventsCount           = 0;
            var conversationRepository     = new TestRepository <Conversation>();
            var conversationUserRepository = new TestRepository <ConversationUser>();
            var blackListRepository        = new TestRepository <BlackList>();
            var chatActionRepository       = new TestRepository <ChatAction>();
            var messageRepository          = new TestRepository <Message>();
            var attachmentRepository       = new TestRepository <Attachment>();

            var blackListService        = new BlackListService(blackListRepository, _mapper);
            var conversationUserService = new ConversationUserService(conversationUserRepository, _mapper);


            var messageService      = new MessageService(messageRepository, attachmentRepository, _timeProvider, _attachmentContentProvider, blackListService, conversationUserService, _mapper);
            var conversationService = new ConversationService(conversationRepository, conversationUserRepository, chatActionRepository, blackListService, messageService, _timeProvider, _mapper);

            conversationService.OnConversationCreated += (conversationService) => firedEventsCount++;

            var initiator = new User {
                Id = 1, Username = "******"
            };
            var invited = new List <User>
            {
                new User
                {
                    Id       = 2,
                    Username = "******"
                },
                new User
                {
                    Id       = 3,
                    Username = "******"
                }
            };

            var response = await conversationService.CreateConversationAsync(initiator.Id, invited.Select(u => u.Id));

            Assert.Contains(conversationRepository.All(), c => c.Id == response.Entity.Id);
            Assert.Contains(chatActionRepository.All(), c => c.Type == ChatActionType.NewChat && c.ConversationId == response.Entity.Id);
            Assert.Contains(invited.Union(new User[] { initiator }), u => conversationUserRepository.Any(cu => cu.ConversationId == response.Entity.Id && cu.UserId == u.Id));
            Assert.Equal(1, firedEventsCount);
        }
Пример #4
0
        public async Task ShouldDeleteConversationUser()
        {
            var firedEventsCount           = 0;
            var conversationId             = 1;
            var userId                     = 1;
            var conversationUserRepository = new TestRepository <ConversationUser>();
            var conversationUserService    = new ConversationUserService(conversationUserRepository, _mapper);

            conversationUserService.OnUserDeleted += (cu) => firedEventsCount++;

            await conversationUserRepository.CreateAsync(new ConversationUser()
            {
                UserId = 1, ConversationId = 1
            });

            await conversationUserService.DeleteUserAsync(conversationId, userId);

            Assert.Empty(conversationUserRepository.All());
            Assert.Equal(1, firedEventsCount);
        }
Пример #5
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);
        }
Пример #6
0
        public async Task ShouldNotSendToBlockedUser()
        {
            var firedEventsCount = 0;
            var senderId         = 1;
            var blockerId        = 2;
            var conversationId   = 1;
            var sender           = new User()
            {
                Id = senderId
            };
            var conversation = new Conversation()
            {
                Id = conversationId
            };
            var conversationUsers = new List <ConversationUser>()
            {
                new ConversationUser()
                {
                    ConversationId = conversationId,
                    UserId         = senderId
                },
                new ConversationUser()
                {
                    ConversationId = conversationId,
                    UserId         = blockerId
                }
            };

            var blackListRepository = new TestRepository <BlackList>(new List <BlackList>()
            {
                new BlackList()
                {
                    InitiatorId = blockerId, BlockedId = senderId
                }
            });
            var messageRepository    = new TestRepository <Message>();
            var attachmentRepository = new TestRepository <Attachment>();

            var timeProvider = new TestTimeProvider();
            var attachmentContentProvider = new TestAttachmentContentProvider();

            var blackListService        = new BlackListService(blackListRepository, _mapper);
            var conversationUserService = new ConversationUserService(new TestRepository <ConversationUser>(conversationUsers), _mapper);

            var messageService = new MessageService(messageRepository,
                                                    attachmentRepository,
                                                    timeProvider,
                                                    attachmentContentProvider,
                                                    blackListService,
                                                    conversationUserService,
                                                    _mapper);

            messageService.OnMessageSent += (m) => firedEventsCount++;


            await messageService.SendMessageAsync(sender.Id, conversation.Id, "test", new AttachmentDto[] { new AttachmentDto {
                                                                                                                Id = 1, MessageId = 1
                                                                                                            } });

            Assert.Empty(messageRepository.All());
            Assert.Empty(attachmentRepository.All());
            Assert.Equal(0, firedEventsCount);
        }