public void Given_A_YugiohBanlist_If_Format_Is_Not_Found_Should_Throw_ArgumentException() { // Arrange var yugiohBanlist = new YugiohBanlist(); _banlistRepository.Add(Arg.Any <Banlist>()).Returns(new Banlist()); // Act Func <Task <Banlist> > act = () => _sut.Add(yugiohBanlist); // Assert act.Should().Throw <ArgumentException>(); }
public async Task Given_A_YugiohBanlist_Should_Invoke_BanlistCardService_Update_Method_Once() { // Arrange const int expected = 1; var yugiohBanlist = new YugiohBanlist(); _formatRepository.FormatByAcronym(Arg.Any <string>()).Returns(new Format()); _banlistRepository.Add(Arg.Any <Banlist>()).Returns(new Banlist()); // Act await _sut.Add(yugiohBanlist); // Assert await _banlistCardService.Received(expected).Update(Arg.Any <long>(), Arg.Any <List <YugiohBanlistSection> >()); }
public async Task Given_A_YugiohBanlist_Should_Invoke_FormatByAcronym_Method_Once() { // Arrange const int expected = 1; var yugiohBanlist = new YugiohBanlist(); _formatRepository.FormatByAcronym(Arg.Any <string>()).Returns(new Format()); _banlistRepository.Add(Arg.Any <Banlist>()).Returns(new Banlist()); // Act await _sut.Add(yugiohBanlist); // Assert await _formatRepository.Received(expected).FormatByAcronym(Arg.Any <string>()); }
public async Task Given_A_YugiohBanlist_Should_Invoke_GetBanlistById_Method_Once() { // Arrange const int expected = 1; var yugiohBanlist = new YugiohBanlist { BanlistType = BanlistType.Tcg }; _formatRepository.FormatByAcronym(Arg.Any <string>()).Returns(new Format()); _banlistRepository.Update(Arg.Any <Banlist>()).Returns(new Banlist()); _banlistRepository.GetBanlistById(Arg.Any <int>()).Returns(new Banlist()); // Act await _sut.Update(yugiohBanlist); // Assert await _banlistRepository.Received(expected).GetBanlistById(Arg.Any <int>()); }
public async Task <Banlist> Add(YugiohBanlist yugiohBanlist) { var format = await _formatRepository.FormatByAcronym(yugiohBanlist.BanlistType.ToString()); if (format == null) { throw new ArgumentException($"Format with acronym '{yugiohBanlist.BanlistType.ToString()}' not found."); } var newBanlist = _mapper.Map <Banlist>(yugiohBanlist); newBanlist.FormatId = format.Id; newBanlist = await _banlistRepository.Add(newBanlist); newBanlist.BanlistCard = await _banlistCardService.Update(newBanlist.Id, yugiohBanlist.Sections); return(newBanlist); }
public async Task <Banlist> AddOrUpdate(YugiohBanlist yugiohBanlist) { var format = await _formatService.FormatByAcronym(yugiohBanlist.BanlistType.ToString()); if (format == null) { throw new ArgumentException($"Format with acronym '{yugiohBanlist.BanlistType.ToString()}' not found."); } var banlist = await _banlistService.BanlistById(yugiohBanlist.ArticleId); if (banlist == null) { var addCommand = new AddBanlistCommand { Id = yugiohBanlist.ArticleId, FormatId = format.Id, Name = yugiohBanlist.Title, ReleaseDate = yugiohBanlist.StartDate }; banlist = await _banlistService.Add(addCommand); } else { var updateCommand = new UpdateBanlistCommand { Id = yugiohBanlist.ArticleId, FormatId = format.Id, Name = yugiohBanlist.Title, ReleaseDate = yugiohBanlist.StartDate }; banlist = await _banlistService.Update(updateCommand); } var banlistCards = await _banlistCardsService.MapToBanlistCards(banlist.Id, yugiohBanlist.Sections); banlist.Cards = await _banlistService.Update(banlist.Id, new UpdateBanlistCardsCommand { BanlistCards = banlistCards }); return(banlist); }
public async Task <Banlist> Update(YugiohBanlist yugiohBanlist) { var format = await _formatRepository.FormatByAcronym(yugiohBanlist.BanlistType.ToString()); if (format == null) { throw new ArgumentException($"Format with acronym '{yugiohBanlist.BanlistType.ToString()}' not found."); } var banlistToupdate = await _banlistRepository.GetBanlistById(yugiohBanlist.ArticleId); banlistToupdate.FormatId = format.Id; banlistToupdate.Name = yugiohBanlist.Title; banlistToupdate.ReleaseDate = yugiohBanlist.StartDate; banlistToupdate.Updated = DateTime.UtcNow; banlistToupdate = await _banlistRepository.Update(banlistToupdate); banlistToupdate.BanlistCard = await _banlistCardService.Update(banlistToupdate.Id, yugiohBanlist.Sections); return(banlistToupdate); }
public async Task <ArticleProcessed> Process(Article article) { var response = new ArticleProcessed { Article = article }; var articleDetailsList = await _wikiArticle.Details((int)article.Id); var(_, expandedArticle) = articleDetailsList.Items.First(); var banlistArticleSummary = BanlistHelpers.ExtractBanlistArticleDetails(expandedArticle.Id, expandedArticle.Abstract); if (banlistArticleSummary != null) { const char beginChar = '「'; const char endChar = '」'; var banlist = new YugiohBanlist { ArticleId = banlistArticleSummary.ArticleId, Title = expandedArticle.Title, BanlistType = banlistArticleSummary.BanlistType, StartDate = banlistArticleSummary.StartDate }; var banlistContentResult = await _wikiArticle.Simple(banlistArticleSummary.ArticleId); _logger.LogInformation($"{banlist.BanlistType.ToString()}, {banlist.Title}, {banlist.StartDate}"); foreach (var section in banlistContentResult.Sections) { // skip references section if (section.Title.ToLower() == "references") { continue; } // new section var ybls = new YugiohBanlistSection { Title = StringHelpers.RemoveBetween(section.Title, beginChar, endChar).Trim(), Content = ContentResultHelpers.GetSectionContentList(section).OrderBy(c => c).ToList() }; // remove invalid characters if (ybls.Content.Any()) { ybls.Content = ybls.Content.Select(c => StringHelpers.RemoveBetween(c, beginChar, endChar)).ToList(); } banlist.Sections.Add(ybls); } response.Banlist = banlist; var publishBanlistResult = await _banlistDataQueue.Publish(new ArticleProcessed { Article = article, Banlist = banlist }); response.IsSuccessful = publishBanlistResult.IsSuccessful; } return(response); }
public async Task <ArticleTaskResult> ProcessItem(UnexpandedArticle item) { var response = new ArticleTaskResult { Article = item }; var articleDetailsList = await _wikiArticle.Details(item.Id); var articleDetails = articleDetailsList.Items.First(); var banlistArticleSummary = BanlistHelpers.ExtractBanlistArticleDetails(articleDetails.Value.Id, articleDetails.Value.Abstract); if (banlistArticleSummary != null) { const char beginChar = '「'; const char endChar = '」'; var banlist = new YugiohBanlist { ArticleId = banlistArticleSummary.ArticleId, Title = articleDetails.Value.Title, BanlistType = banlistArticleSummary.BanlistType, StartDate = banlistArticleSummary.StartDate }; var banlistContentResult = await _wikiArticle.Simple(banlistArticleSummary.ArticleId); foreach (var section in banlistContentResult.Sections) { // skip references section if (section.Title.ToLower() == "references") { continue; } // new section var ybls = new YugiohBanlistSection { Title = StringHelpers.RemoveBetween(section.Title, beginChar, endChar).Trim(), Content = ContentResultHelpers.GetSectionContentList(section).OrderBy(c => c).ToList() }; // remove invalid characters if (ybls.Content.Any()) { ybls.Content = ybls.Content.Select(c => StringHelpers.RemoveBetween(c, beginChar, endChar)).ToList(); } banlist.Sections.Add(ybls); } await _banlistService.AddOrUpdate(banlist); response.Data = banlist; response.IsSuccessfullyProcessed = true; } return(response); }