/// <summary>
        /// Send message(s) by adding Message object(s) to message queue and return server ack(s)
        /// </summary>
        public Task <GetMessageStatusResponse> SendMessage(SendMessageRequest request)
        {
            request.ValidateSendMessageRequest(_users);

            var response = new GetMessageStatusResponse {
            };

            if (request.RecipientType == RecipientType.Single)
            {
                var message       = new Message(request.SenderId, request.RecipientId, request.Content);
                var messageStatus = SendSingleMessage(message);
                response.MessageStatuses.Add(messageStatus);
                return(Task.FromResult(response));
            }

            foreach (var user in _users)
            {
                if (request.SenderId != user)
                {
                    var message       = new Message(request.SenderId, user, request.Content);
                    var messageStatus = SendSingleMessage(message);
                    response.MessageStatuses.Add(messageStatus);
                }
            }

            return(Task.FromResult(response));
        }
        [InlineData("1")]   // The recipient is '0' and the sender is '1'
        public void Given_Valid_Recipient_Return_True(string recipientId)
        {
            var sendMessageRequest = new SendMessageRequest
            {
                SenderId      = "0",
                RecipientType = recipientId == "All" ? RecipientType.All : RecipientType.Single,
                RecipientId   = recipientId,
                Content       = "some message"
            };

            var result = sendMessageRequest.ValidateSendMessageRequest(_twoUsers);

            result.Should().BeTrue();
        }
        public void Given_Message_Of_Valid_Length_Return_True()
        {
            var sendMessageRequest = new SendMessageRequest
            {
                SenderId      = "0",
                RecipientType = RecipientType.Single,
                RecipientId   = "1",
                Content       = "this is less than 100 characters"
            };

            var result = sendMessageRequest.ValidateSendMessageRequest(_twoUsers);

            result.Should().BeTrue();
        }
        public void Given_A_Sender_Is_Specified_Return_True()
        {
            var sendMessageRequest = new SendMessageRequest
            {
                SenderId      = "0",
                RecipientType = RecipientType.Single,
                RecipientId   = "1",
                Content       = "some message"
            };

            var result = sendMessageRequest.ValidateSendMessageRequest(_twoUsers);

            result.Should().BeTrue();
        }