예제 #1
0
        public async Task Given_A_banlistType_Should_Invoke_Process_Method_Twice()
        {
            // Arrange
            const int expected = 2;

            _banlistUrlDataSource
            .GetBanlists(Arg.Any <BanlistType>(), Arg.Any <string>())
            .Returns
            (
                new Dictionary <int, List <int> >
            {
                [2017] = new List <int> {
                    1, 2
                }
            }
            );
            _articleProcessor
            .Process(Arg.Any <string>(), Arg.Any <UnexpandedArticle>())
            .Returns(new ArticleTaskResult {
                IsSuccessfullyProcessed = true
            });

            // Act
            await _sut.Process(BanlistType.Tcg);

            // Assert
            await _articleProcessor.Received(expected).Process(Arg.Any <string>(), Arg.Any <UnexpandedArticle>());
        }
예제 #2
0
        public async Task <ArticleBatchTaskResult> Process(BanlistType banlistType)
        {
            var response = new ArticleBatchTaskResult();

            const string baseBanlistUrl       = "http://yugioh.wikia.com/wiki/July_1999_Lists";
            var          banListArticleIds    = _banlistUrlDataSource.GetBanlists(banlistType, baseBanlistUrl);
            var          articleItemProcessor = _articleHandler.Handler(ArticleCategory.ForbiddenAndLimited);

            foreach (var banListArticleId in banListArticleIds)
            {
                _logger.Info($"{banlistType.ToString().ToUpper()} banlists for the year: {banListArticleId.Key}");

                foreach (var articleId in banListArticleId.Value)
                {
                    _logger.Info($"{banlistType.ToString().ToUpper()} banlist articleId: {articleId}");

                    var articleResult = await articleItemProcessor.ProcessItem(new UnexpandedArticle { Id = articleId });

                    if (articleResult.IsSuccessfullyProcessed)
                    {
                        response.Processed += 1;
                    }
                }
            }

            return(response);
        }
예제 #3
0
        public async Task <ArticleBatchTaskResult> Process(BanlistType banlistType)
        {
            var response = new ArticleBatchTaskResult();

            const string baseBanlistUrl    = "http://yugioh.fandom.com/wiki/July_1999_Lists";
            var          banListArticleIds = _banlistUrlDataSource.GetBanlists(banlistType, baseBanlistUrl);

            foreach (var(year, banlistIds) in banListArticleIds)
            {
                _logger.LogInformation("{@BanlistType} banlists for the year: {@Year}", banlistType.ToString().ToUpper(), year);

                foreach (var articleId in banlistIds)
                {
                    _logger.LogInformation("{@BanlistType} banlist articleId: {@ArticleId}", banlistType.ToString().ToUpper(), articleId);

                    var articleResult = await _articleProcessor.Process(ArticleCategory.ForbiddenAndLimited, new UnexpandedArticle { Id = articleId });

                    if (articleResult.IsSuccessfullyProcessed)
                    {
                        response.Processed += 1;
                    }
                }
            }

            return(response);
        }