Ejemplo n.º 1
0
        public async Task Given_A_BanlistFormat_If_Format_Is_Not_Found_Format_Should_Be_Null()
        {
            // Arrange
            _banlistService.LatestBanlistByFormatAcronym(Arg.Any <string>()).Returns(new BanlistCardSearchResult {
                Cards = new List <BanlistCardSearch>()
            });

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

            // Assert
            result.Format.Should().BeNull();
        }
        public async Task <LatestBanlistOutputModel> Handle(LatestBanlistQuery request, CancellationToken cancellationToken)
        {
            var response = new LatestBanlistOutputModel();

            var banlistCardSearchResult = await _banlistService.LatestBanlistByFormatAcronym(request.Format.ToString());

            if (banlistCardSearchResult.Cards.Any())
            {
                var groupedCards =
                    banlistCardSearchResult
                    .Cards
                    .GroupBy(c => c.Limit)
                    .Select(nc => nc)
                    .ToList();

                var forbiddenCards   = groupedCards.SingleOrDefault(grp => grp.Key == LimitConstants.Forbidden);
                var limnitCards      = groupedCards.SingleOrDefault(grp => grp.Key == LimitConstants.Limited);
                var semiLimitedCards = groupedCards.SingleOrDefault(grp => grp.Key == LimitConstants.SemiLimited);
                var unlimitedCards   = groupedCards.SingleOrDefault(grp => grp.Key == LimitConstants.Unlimited);

                response.Format      = request.Format.ToString().ToUpper();
                response.ReleaseDate = banlistCardSearchResult.ReleaseDate.ToString(BanlistConstants.ReleaseDateFormat);

                if (forbiddenCards != null)
                {
                    response.Forbidden = forbiddenCards.Select(card => CardSearchMapperHelper.MapToCardOutputModel(_mapper, card)).ToList();
                }

                if (limnitCards != null)
                {
                    response.Limited = limnitCards.Select(card => CardSearchMapperHelper.MapToCardOutputModel(_mapper, card)).ToList();
                }

                if (semiLimitedCards != null)
                {
                    response.SemiLimited = semiLimitedCards.Select(card => CardSearchMapperHelper.MapToCardOutputModel(_mapper, card)).ToList();
                }

                if (unlimitedCards != null)
                {
                    response.Unlimited = unlimitedCards.Select(card => CardSearchMapperHelper.MapToCardOutputModel(_mapper, card)).ToList();
                }
            }

            return(response);
        }