public async Task <DeckDetailOutputModel> Handle(DeckByIdQuery request, CancellationToken cancellationToken) { var deckResult = await _deckService.GetDeckById(request.DeckId); if (deckResult != null) { var response = DeckDetailOutputModel.From(deckResult); if (!string.IsNullOrWhiteSpace(response.YoutubeUrl)) { response.VideoId = YoutubeHelpers.ExtractVideoId(response.YoutubeUrl); } // we duplicate card based on quantity property, also maintain order var mainList = deckResult.MainDeck.SelectMany(c => Enumerable.Repeat(c, c.Quantity)).OrderBy(c => c.SortOrder).ToList(); var extraList = deckResult.ExtraDeck.SelectMany(c => Enumerable.Repeat(c, c.Quantity)).OrderBy(c => c.SortOrder).ToList(); var sideList = deckResult.SideDeck.SelectMany(c => Enumerable.Repeat(c, c.Quantity)).OrderBy(c => c.SortOrder).ToList(); // we map to cardoutputmodel response.MainDeck = mainList.Select(card => CardMapperHelper.MapToCardOutputModel(_mapper, card)).ToList(); response.ExtraDeck = extraList.Select(card => CardMapperHelper.MapToCardOutputModel(_mapper, card)).ToList(); response.SideDeck = sideList.Select(card => CardMapperHelper.MapToCardOutputModel(_mapper, card)).ToList(); return(response); } return(null); }
public void Given_An_Invalid_DeckCardDetail_Should_Throw_ArgumentOutOfRangeException() { // Arrange var deckCardSearch = new DeckCardDetail(); // Act Action act = () => CardMapperHelper.MapToCardOutputModel(_mapper, deckCardSearch); // Assert act.Should().Throw <ArgumentOutOfRangeException>(); }
public void Given_A_Trap_DeckCardDetail_Should_Return_Monster_CardDetailOutputModel() { // Arrange var deckCardDetail = new DeckCardDetail { CategoryId = 23424, Category = "Trap", SubCategories = "Normal" }; // Act var result = CardMapperHelper.MapToCardOutputModel(_mapper, deckCardDetail); // Assert result.Types.Should().Contain("Trap"); }
public void Given_A_Monster_DeckCardDetail_Should_Return_Monster_CardDetailOutputModel() { // Arrange var deckCardDetail = new DeckCardDetail { CategoryId = 23424, Category = "Monster", SubCategories = "Normal,Fairy", AttributeId = 43, Attribute = "Light", TypeId = 234, Type = "Ritual" }; // Act var result = CardMapperHelper.MapToCardOutputModel(_mapper, deckCardDetail); // Assert result.Types.Should().Contain("Monster"); }