public async void Request_With_No_Id_Should_Return_Invalid_Input()
        {
           // ARRANGE
           var validator = new CreateChatMessageCommandValidator();
           var chatMessageRepositoryMock = new Mock<IChatMessageRepository>();
           var loggerMock = new Mock<ILogger>();

           var handler = new CreateChatMessageCommandHandler(
               chatMessageRepositoryMock.Object,
               loggerMock.Object,
               validator
           );

           // ACT
           var response = await handler.Handle(new CreateChatMessageCommand(){ChatMessage = new Domain.Models.ChatMessage()}, new CancellationToken());

           // ASSERT
           Assert.Equal(CommandResultTypeEnum.InvalidInput, response.Type);
        }
        public async void Should_Return_Unprocessable_If_No_Rows_Affected()
        {
            // ARRANGE
            var validator = new CreateChatMessageCommandValidator();
            var chatMessageRepositoryMock = new Mock<IChatMessageRepository>();
            var loggerMock = new Mock<ILogger>();

            var handler = new CreateChatMessageCommandHandler(
                chatMessageRepositoryMock.Object,
                loggerMock.Object,
                validator
            );

            chatMessageRepositoryMock.Setup(x => x.InsertChatMessage(It.IsAny<Domain.Models.ChatMessage>())).ReturnsAsync(0);

            // ACT
            var response = await handler.Handle(new CreateChatMessageCommand() { ChatMessage = new Domain.Models.ChatMessage() { ChatMessageId = "1" } }, new CancellationToken());

            // ASSERT
            Assert.Equal(CommandResultTypeEnum.UnprocessableEntity, response.Type);
            chatMessageRepositoryMock.Verify(x => x.InsertChatMessage(It.IsAny<Domain.Models.ChatMessage>()), Times.Once);
        }