public async void SendMessage_Scenario_SendsMessage()
        {
            // arrange
            var expectedMessage = new PlayerCreatedMessage();

            var sqsConfig = new AmazonSQSConfig();

            sqsConfig.ServiceURL = "https://sqs.us-east-1.amazonaws.com";

            var _sqsClient = new Mock <AmazonSQSClient>(sqsConfig);

            _sqsClient.Setup(
                sqs => sqs.SendMessageAsync(It.IsAny <SendMessageRequest>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new SendMessageResponse());

            var messageRepository = new MessageRepository <PlayerCreatedMessage>(_sqsClient.Object);

            // act
            await messageRepository.SendMessage(expectedMessage);

            // assert
            _sqsClient.Verify(
                sqs => sqs.SendMessageAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <CancellationToken>()),
                Times.Once);
        }
        public async void SendMessage_Scenario_SendsMessageToRepository()
        {
            // arrange
            var _messageRepository = new Mock <IMessageRepository <PlayerCreatedMessage> >();

            var messageService = new MessageService <PlayerCreatedMessage>(_messageRepository.Object);

            var message = new PlayerCreatedMessage();

            // Act
            await messageService.SendMessage(message);

            // Assert
            _messageRepository.Verify(
                sqs => sqs.SendMessage(It.Is <PlayerCreatedMessage>(m => m.MessageType == MessageType.PlayerCreated)),
                Times.Once);
        }