public async Task ThereAreNoMessages_ReturnNull(string who, string toWhom)
        {
            //arrange
            var messageHistory = new MessageHistroy(Constants.MessageHistoryKey, new List <string>()
            {
                who, toWhom
            }, new List <MessageEntity>());

            mockMessageHistoryRepository.Setup(x => x.GetMessageHistory(It.IsAny <string>(), It.IsAny <string>()))
            .Returns((string senderUserName, string receiverUsername) =>
            {
                return(Task.FromResult(messageHistory));
            });

            mockUserProvider.Setup(x => x.IsUserRegistered(It.IsAny <string>())).ReturnsAsync(true);

            var messageService = new MessageService(
                mockMessageQueueRepository.Object,
                mockMessageHistoryRepository.Object,
                mockUserProvider.Object,
                logger.Object);

            //act
            var result = await messageService.GetMessageHistory(who, toWhom);

            //assert
            Assert.True(result.Success);
            Assert.Equal(Messages.GetMessageHistory, result.Message);
            Assert.Equal(messageHistory, result.Data);
            mockMessageHistoryRepository.Verify(x => x.GetMessageHistory(It.IsAny <string>(), It.IsAny <string>()), Times.Once);
            mockUserProvider.Verify(x => x.IsUserRegistered(It.IsAny <string>()), Times.Once);
        }
示例#2
0
        public async Task <bool> UpdateMessageHistory(MessageHistroy messageHistory)
        {
            string messageHistoryJson = JsonConvert.SerializeObject(messageHistory);

            var isUpdated = await context.Redis.StringSetAsync(messageHistory.MessageHistoryKey, messageHistoryJson);

            if (!isUpdated)
            {
                return(false);
            }

            return(true);
        }
        public async Task UnblockedUser_ReturnTrue(string messageLine, string senderUsername, string receiverUsername)
        {
            //arrange
            mockMessageQueueRepository.Setup(x => x.GetMessageQueue(It.IsAny <string>(), It.IsAny <string>()))
            .Returns((string senderUserName, string receiverUsername) =>
            {
                var messageQueue = new MessageQueue(Constants.MessageQueueKey, senderUserName, receiverUsername, Constants.MessageLines);
                return(Task.FromResult(messageQueue));
            });

            mockMessageQueueRepository.Setup(x => x.UpdateMessageQueue(It.IsAny <MessageQueue>())).ReturnsAsync(true);

            var messageHistory = new MessageHistroy(Constants.MessageHistoryKey, new List <string>()
            {
                senderUsername, receiverUsername
            }, Constants.MessageEntities);

            mockMessageHistoryRepository.Setup(x => x.GetMessageHistory(It.IsAny <string>(), It.IsAny <string>()))
            .Returns((string senderUserName, string receiverUsername) =>
            {
                return(Task.FromResult(messageHistory));
            });

            mockUserProvider.Setup(x => x.IsUserRegistered(It.IsAny <string>())).ReturnsAsync(true);
            mockUserProvider.Setup(x => x.IsBlockedByUser(It.IsAny <string>())).ReturnsAsync(false);

            var messageService = new MessageService(
                mockMessageQueueRepository.Object,
                mockMessageHistoryRepository.Object,
                mockUserProvider.Object,
                logger.Object);

            //act
            var result = await messageService.AddMessage(messageLine, senderUsername, receiverUsername);

            //assert
            Assert.True(result.Success);
            Assert.Equal(Messages.MessageSended, result.Message);
            mockMessageQueueRepository.Verify(x => x.UpdateMessageQueue(It.IsAny <MessageQueue>()), Times.Once);
            mockMessageQueueRepository.Verify(x => x.GetMessageQueue(It.IsAny <string>(), It.IsAny <string>()), Times.Once);
            mockUserProvider.Verify(x => x.IsUserRegistered(It.IsAny <string>()), Times.Once);
            mockUserProvider.Verify(x => x.IsBlockedByUser(It.IsAny <string>()), Times.Once);
        }