public async Task AmazonSqsService_Should_Receive_Messages_From_A_Queue()
        {
            var guid        = Guid.NewGuid();
            var queueName   = $"{guid}.fifo";
            var dlQueueName = $"{guid}-DLQ.fifo";

            CreateQueueResponse createQueueResponse = await CreateQueue(queueName, dlQueueName);

            var    commentModel    = new Fixture().Create <CommentModel>();
            string serializedModel = JsonSerializer.Serialize(commentModel);

            var sendMessageRequest = new SendMessageRequest
            {
                QueueUrl               = createQueueResponse.QueueUrl,
                MessageGroupId         = commentModel.MovieId.ToString(),
                MessageDeduplicationId = Guid.NewGuid().ToString(),
                MessageBody            = serializedModel
            };

            await AmazonSqs.SendMessageAsync(sendMessageRequest);

            var req = new ReceiveMessageRequest
            {
                MaxNumberOfMessages = 1,
                QueueUrl            = createQueueResponse.QueueUrl
            };

            ReceiveMessageResponse receiveMessages = await AmazonSqs.ReceiveMessageAsync(req);

            Assert.Equal(HttpStatusCode.OK, receiveMessages.HttpStatusCode);

            Message currentMessage = receiveMessages.Messages.FirstOrDefault();

            Assert.NotNull(currentMessage);

            var deserializedComment = JsonSerializer.Deserialize <CommentModel>(currentMessage.Body);

            Assert.True(commentModel.DeepEquals(deserializedComment));
        }
        public async Task AmazonSqsService_Should_Send_A_Message_To_A_Queue()
        {
            var guid        = Guid.NewGuid();
            var queueName   = $"{guid}.fifo";
            var dlQueueName = $"{guid}-DLQ.fifo";

            CreateQueueResponse createQueueResponse = await CreateQueue(queueName, dlQueueName);

            var    commentModel    = new Fixture().Create <CommentModel>();
            string serializedModel = JsonSerializer.Serialize(commentModel);

            var sendMessageRequest = new SendMessageRequest
            {
                QueueUrl               = createQueueResponse.QueueUrl,
                MessageGroupId         = commentModel.MovieId.ToString(),
                MessageDeduplicationId = Guid.NewGuid().ToString(),
                MessageBody            = serializedModel
            };

            SendMessageResponse messageResponse = await AmazonSqs.SendMessageAsync(sendMessageRequest);

            Assert.Equal(HttpStatusCode.OK, messageResponse.HttpStatusCode);
        }