public async Task Adding_new_message_to_chat_test()
        {
            var     chatViewModelTestRepository = new Mock <IMessageRepository>();
            var     chat            = _fixture.Create <Chat>();
            var     navigateRequest = _fixture.Create <NavigateRequest>();
            Message message         = null;

            // here the callback is taking the same parameter from CreateMessage
            chatViewModelTestRepository.Setup(s => s.CreateMessage(It.IsAny <Message>()))
            .Callback <Message>(c => message = c)
            .Returns(() =>
            {
                return(Task.Run(() => { }));
            });

            var sut = new ChatViewModel(
                new Mock <INavigateRequestRepository>().Object,
                null,
                chatViewModelTestRepository.Object,
                null);

            await sut.PrepareAsync(new ChatParameters { Chat = chat, NavigateRequest = navigateRequest });

            var messageText = "Test";

            sut.ActiveMessage = messageText;

            await sut.CreateNewMessage();

            chatViewModelTestRepository.Verify(v => v.CreateMessage(It.Is <Message>(i => i == message)));
            Assert.AreEqual(chat.FirebaseKey, message.ChatFirebaseKey);
            Assert.AreEqual(chat.ActiveUser.EmailAddress, message.SenderEmail);
            Assert.AreEqual(messageText, message.Text);
            // TODO: verify that the timestamp is in correct date format, for now just make sure it is a string
            Assert.IsInstanceOfType(message.TimeStamp, typeof(String));
        }