public async Task <CardInformationConsumerResult> Handle(CardInformationConsumer request, CancellationToken cancellationToken)
        {
            var cardInformationResult = new CardInformationConsumerResult();

            var validationResults = _validator.Validate(request);

            if (validationResults.IsValid)
            {
                var cardSectionData = JsonConvert.DeserializeObject <CardSectionMessage>(request.Message);

                _logger.LogInformation("Processing category {@Category} '{@Name}'", request.Category, cardSectionData.Name);
                var results = await _cardSectionProcessor.Process(request.Category, cardSectionData);

                _logger.LogInformation("Finished processing category {@Category} '{@Name}'", request.Category, cardSectionData.Name);

                if (!results.IsSuccessful)
                {
                    cardInformationResult.Errors.AddRange(results.Errors);
                }
            }
            else
            {
                cardInformationResult.Errors = validationResults.Errors.Select(err => err.ErrorMessage).ToList();
            }

            return(cardInformationResult);
        }
        public async Task Given_A_Valid_CardInformationConsumer_IsSuccessful_Should_Be_True()
        {
            // Arrange
            var cardInformationConsumer = new CardInformationConsumer
            {
                Category = "category",
                Message  = "{\"Id\":703544,\"CorrelationId\":\"3e2bf3ca-d903-440c-8cd5-be61c95ae1fc\",\"Title\":\"Tenyi\",\"Url\":\"https://yugioh.fandom.com/wiki/Card_Tips:Tenyi\"}"
            };

            _validator.Validate(Arg.Any <CardInformationConsumer>())
            .Returns(new CardInformationConsumerValidator().Validate(cardInformationConsumer));
            _cardSectionProcessor.Process(Arg.Any <string>(), Arg.Any <CardSectionMessage>()).Returns(new CardSectionDataTaskResult <CardSectionMessage>());

            // Act
            var result = await _sut.Handle(cardInformationConsumer, CancellationToken.None);

            // Assert
            result.IsSuccessful.Should().BeTrue();
        }