public void SendingMessageToUser_WhenUserExists_ShouldSendMessage()
        {
            // Arrange
            string username = "******";
            var    message  = new DirectMessageResponse("Sender", username, "Hello!", true);

            var logger = Substitute.For <ILogger <MessageSenderService> >();

            var userService = Substitute.For <IUserService>();

            userService.TryGetUserByName(Arg.Is(username), out Arg.Any <ChatUser>())
            .Returns(args =>
            {
                args[1] = new ChatUser(username);
                return(true);
            });

            var networkServer = Substitute.For <INetworkServer>();

            var messageSenderService = new MessageSenderService(logger, userService, networkServer);

            // Act
            bool result = messageSenderService.SendMessageToUser(username, message);

            // Arrange
            Assert.True(result);
            networkServer.Received(1).SendMessage(username, Arg.Any <byte[]>());
        }
Example #2
0
        public void DirectMessageResponse_WhenSerializedAndDeserialized_ShouldBeEqual()
        {
            // Arrange
            Message message = new DirectMessageResponse("user", "user2", "Lorem ipsum", true);

            // Act / Assert
            this.SerializeDeserializeAndCompare(message);
        }
Example #3
0
 private void DisplayMessageToUser(DirectMessageResponse directMessage)
 {
     Console.WriteLineFormatted(
         "{0} to {1}: {2}",
         Color.Gray,
         new Formatter(directMessage.Sender, Color.LimeGreen),
         new Formatter("you", Color.Red),
         new Formatter(directMessage.Text, Color.Lime));
 }
Example #4
0
 private void DisplayDirectMessage(DirectMessageResponse directMessage)
 {
     if (directMessage.IsPrivate)
     {
         this.DisplayPrivateMessage(directMessage);
     }
     else if (directMessage.Recipient == this.username)
     {
         this.DisplayMessageToUser(directMessage);
     }
     else
     {
         this.DisplayMessageToOther(directMessage);
     }
 }
        public override void HandleMessage(string username, DirectMessageRequest message)
        {
            if (this.userService.TryGetUserByName(username, out ChatUser sender))
            {
                if (this.userService.TryGetUserByName(message.Recipient, out ChatUser recipient))
                {
                    var messageResponse = new DirectMessageResponse(sender.Username, recipient.Username, message.Text, message.IsPrivate);

                    if (message.IsPrivate)
                    {
                        this.messageSenderService.SendMessageToUser(recipient.Username, messageResponse);
                    }
                    else
                    {
                        this.messageSenderService.SendMessageToEveryoneElse(sender.Username, messageResponse);
                    }
                }
                else
                {
                    this.messageSenderService.NotifyUser(username, $"User {message.Recipient} is not online.", NotificationLevel.Warning);
                }
            }
        }