public static void AddRedis(this IServiceCollection services)
        {
            Redis.Default.DataFormater = new JsonFormater();
            Redis.Default.Host.AddWriteHost("redis");

            var personConsumer = new PersonConsumer();

            services.AddSingleton(personConsumer);
        }
        public async Task KeepWarm()
        {
            var keepWarm  = "{ 'Xerris.DotNet.Aws.keep-warm': true";
            var processor = new PersonConsumer(sqsClient.Object, SqsUrl, x => Task.FromResult(false));

            var message = new SQSEvent.SQSMessage {
                Body = keepWarm
            };
            await processor.Process(new[] { message });
        }
        public async Task CanProcess_ActionUnsuccesful_DoesNotRemoveSqsMessage()
        {
            var elvis = new PersonMessage {
                Id = Guid.NewGuid(), Name = "Elvis"
            };
            var processor = new PersonConsumer(sqsClient.Object, SqsUrl, x => Task.FromResult(false));

            var message = new SQSEvent.SQSMessage {
                Body = elvis.ToJson()
            };
            await processor.Process(new[] { message });

            sqsClient.Verify(x => x.DeleteMessageAsync(It.IsAny <DeleteMessageRequest>(), new CancellationToken()), Times.Never);
        }
        public void CanProcess_RemovedSqsMessage()
        {
            var elvis = new PersonMessage {
                Id = Guid.NewGuid(), Name = "Elvis"
            };
            var processor = new PersonConsumer(sqsClient.Object, SqsUrl, x =>
            {
                x.Done = true;
                return(Task.FromResult(true));
            });

            sqsClient.Setup(x => x.DeleteMessageAsync(It.IsAny <DeleteMessageRequest>(), new CancellationToken()));

            var message = new SQSEvent.SQSMessage {
                Body = elvis.ToJson()
            };

            processor.Process(new[] { message });
        }