public async Task AddDeck_Adds_And_Returns_New_Deck()
        {
            //Arrange
            DeckRequest newDeckRequest = new DeckRequest()
            {
                Name = "ASP.NET Core"
            };
            var mockRepository = new Mock <IFlashcardDataRepository>();

            mockRepository.Setup(x => x.AddDeck(newDeckRequest.Name)).Returns((string deckName) =>
            {
                Deck deck = new Deck
                {
                    Id   = GetFakeDecks().Count + 1,
                    Name = deckName
                };

                return(Task.FromResult <Deck>(deck));
            });


            DecksController decksController = new DecksController(mockRepository.Object, iMapper);
            //Act
            var result = await decksController.AddDeck(newDeckRequest);

            //Assert
            var okObjectResult = Assert.IsType <CreatedAtActionResult>(result);
            var returnDeck     = Assert.IsType <DeckResponseDto>(okObjectResult.Value);

            Assert.Equal("ASP.NET Core", returnDeck.Name);
            Assert.IsType <int>(returnDeck.Id);
            Assert.True(returnDeck.Id > 0);
        }
        public async Task <IActionResult> AddDeck([FromBody] DeckRequest deckRequest)
        {
            Deck _newDeck = await _flashcardDataRepository.AddDeck(deckRequest.Name);

            DeckResponseDto _deckResponseDto = _mapper.Map <DeckResponseDto>(_newDeck);

            return(CreatedAtAction(nameof(GetDeckById), new { id = _deckResponseDto.Id }, _deckResponseDto));
        }
        public ActionResult Post([FromBody] DeckRequest deckRequest)
        {
            if (deckCollection.ContainsKey(deckRequest.Name))
            {
                return(Conflict());
            }

            Deck deck = new Deck(deckRequest.Name, deckRequest.Quantity);

            deck.FillTheDeck();
            if (deck.CardsInDeck == null)
            {
                return(Conflict());
            }

            deckCollection.Add(deckRequest.Name, deck);
            return(Ok());
        }