Exemple #1
0
        public void CreateDeckAndDeleteDeck()
        {
            //-- Arrange
            var newDeck = new DeckForCreationDto
            {
                Name = "test deck"
            };

            //-- Act
            var response = _decks.CreateDeck(newDeck, jsonMediaType).Result as CreatedAtRouteResult;

            var newDeckId   = (int)response.RouteValues["deckId"];
            var createdDeck = _flashCardRepository.GetDeck(newDeckId);

            //-- Assert
            Assert.IsNotNull(response);
            Assert.AreEqual("test deck", createdDeck.Name);


            /*--------- delete the deck ------------*/
            //-- Act
            _decks.DeleteDeck(newDeckId);

            var getResponse = _decks.GetDecks(jsonMediaType).Result as OkObjectResult;
            var getResult   = getResponse.Value as IEnumerable <DeckDto>;

            //-- Assert
            Assert.AreEqual(3, getResult.Count());
        }
        public ActionResult <DeckDto> CreateDeck(DeckForCreationDto deck,
                                                 [FromHeader(Name = "Accept")] string mediaType)
        {
            if (!MediaTypeHeaderValue.TryParse(mediaType,
                                               out MediaTypeHeaderValue parsedMediaType))
            {
                return(BadRequest());
            }

            var includeLinks = parsedMediaType.SubTypeWithoutSuffix
                               .EndsWith("hateoas", StringComparison.InvariantCultureIgnoreCase);

            var deckEntity = _mapper.Map <Entities.Deck>(deck);

            _flashCardRepository.AddDeck(deckEntity);
            _flashCardRepository.Save();

            var deckToReturn = _mapper.Map <DeckDto>(deckEntity);

            if (!includeLinks)
            {
                return(CreatedAtRoute(nameof(GetDeck),
                                      new { deckId = deckToReturn.Id },
                                      deckToReturn));
            }

            var links         = CreateLinksForDeck(deckToReturn.Id);
            var deckWithLinks = new DeckDtoWithLinks(deckToReturn, links);

            return(CreatedAtRoute(nameof(GetDeck),
                                  new { deckId = deckToReturn.Id },
                                  deckWithLinks));
        }
Exemple #3
0
        public void CreateDeckWithCards()
        {
            //-- Arrange
            var newDeck = new DeckForCreationDto
            {
                Name  = "test deck",
                Cards = new List <CardForCreationDto>()
                {
                    new CardForCreationDto
                    {
                        Title       = "card1",
                        Description = "card1-description"
                    },
                    new CardForCreationDto
                    {
                        Title       = "card2",
                        Description = "card2-description"
                    },
                    new CardForCreationDto
                    {
                        Title       = "card3",
                        Description = "card3-description"
                    }
                }
            };

            //-- Act
            var response = _decks.CreateDeck(newDeck, jsonMediaType).Result as CreatedAtRouteResult;

            //-- Assert
            Assert.IsNotNull(response);

            // check if the right deck was created
            //-- Arrange
            var newDeckId   = (int)response.RouteValues["deckId"];
            var createdDeck = _flashCardRepository.GetDeck(newDeckId);

            Assert.AreEqual("test deck", createdDeck.Name);
            Assert.AreEqual(3, createdDeck.Cards.Count());

            // delete the deck
            //-- Act
            _decks.DeleteDeck(newDeckId);
        }