public async Task CreateGenre_ShouldReturn201AndAddEntryInDb()
        {
            // Arrange
            var databaseName = Guid.NewGuid().ToString();

            BuildGenreTestDatabase(databaseName);

            var createDbContext = BuildContext(databaseName);
            var verifyDbContext = BuildContext(databaseName);
            var mapper          = BuildMapper();
            var expectedName    = "Test Genre";
            var expectedCount   = createDbContext.Genres.Count() + 1;

            var createGenreDTO = new CreateGenreDTO()
            {
                Name = expectedName
            };

            var controller = new GenresController(createDbContext, mapper);

            // Act
            var response = await controller.Post(createGenreDTO);

            var result      = response as CreatedAtRouteResult;
            var actualName  = verifyDbContext.Genres.Find(expectedCount).Name;
            var actualCount = verifyDbContext.Genres.Count();

            // Assert
            Assert.AreEqual(StatusCodes.Status201Created, result.StatusCode);
            Assert.AreEqual(expectedName, actualName);
            Assert.AreEqual(expectedCount, actualCount);
        }
        public async Task ReplaceGenre_InvalidId_ShouldReturnNotFound()
        {
            // Arrange
            var databaseName = Guid.NewGuid().ToString();
            var dbContext    = BuildContext(databaseName);
            var mapper       = BuildMapper();

            var testGenresCount = dbContext.Genres.Count();
            var expectedName    = "New Genre Name";

            var createGenreDTO = new CreateGenreDTO()
            {
                Name = expectedName
            };

            var controller = new GenresController(dbContext, mapper);

            // Act
            var response = await controller.Put(testGenresCount + 1, createGenreDTO);

            var result = response as StatusCodeResult;

            // Assert
            Assert.AreEqual(StatusCodes.Status404NotFound, result.StatusCode);
        }
        public async Task ReplaceGenre_ValidId_ShouldReplaceGenre()
        {
            // Arrange
            var databaseName = Guid.NewGuid().ToString();

            BuildGenreTestDatabase(databaseName);
            var testDbContext   = BuildContext(databaseName);
            var verifyDbContext = BuildContext(databaseName);

            var mapper = BuildMapper();

            var expectedGenresCount = verifyDbContext.Genres.Count();
            var expectedName        = "New Genre Name";

            var createGenreDTO = new CreateGenreDTO()
            {
                Name = expectedName
            };

            var controller = new GenresController(testDbContext, mapper);

            // Act
            var response = await controller.Put(1, createGenreDTO);

            var result     = response as StatusCodeResult;
            var actualName = verifyDbContext.Genres.Find(1).Name;

            // Assert
            Assert.AreEqual(StatusCodes.Status204NoContent, result.StatusCode);
            Assert.AreEqual(expectedName, actualName);
        }
示例#4
0
        public async Task Create(CreateGenreDTO dto)
        {
            await _context.Genres.AddAsync(new Domain.Genre
            {
                Name = dto.Name
            });

            await _context.SaveChangesAsync();
        }
        public ActionResult <GenreDTO> Post([FromBody] CreateGenreDTO createGenreDTO)
        {
            var genre = mapper.Map <Genre>(createGenreDTO);

            context.Add(genre);
            context.SaveChanges();
            var genreDTO = mapper.Map <GenreDTO>(genre);

            return(new CreatedAtRouteResult("getGenre", new { id = genreDTO.Id }, genreDTO));
        }
示例#6
0
        public async Task <GenreDTO> CreateGenreAsync(CreateGenreDTO createGenreDTO)
        {
            var genre = new GenreEntity
            {
                Name = createGenreDTO.Name
            };

            await _DBContext.Genres.AddAsync(genre);

            await _DBContext.SaveChangesAsync();

            var genreDTO = _mapper.Map <GenreDTO>(genre);

            return(genreDTO);
        }
示例#7
0
 public IActionResult Post([FromBody] CreateGenreDTO request)
 {
     try
     {
         createGenre.Execute(request);
         return(StatusCode(201));
     }
     catch (EntityAlreadyExist e)
     {
         return(StatusCode(409, e.Message));
     }
     catch (Exception e)
     {
         return(StatusCode(500, "Greska"));
     }
 }
        public void Execute(CreateGenreDTO request)
        {
            if (context.Genres.Any(an => an.Name == request.Name))
            {
                throw new EntityAlreadyExist("Zanr vec postoji");
            }

            var genre = new Genre
            {
                CreatedAt = DateTime.Now,
                Name      = request.Name,
                IsDeleted = false
            };

            context.Genres.Add(genre);
            context.SaveChanges();
        }
示例#9
0
        public async Task <IActionResult> Post([FromBody] CreateGenreDTO dto)
        {
            var validator = new GenreFluentValidator(_context);
            var errors    = await validator.ValidateAsync(dto);

            if (!errors.IsValid)
            {
                return(UnprocessableEntity(ValidationFormatter.Format(errors)));
            }

            try {
                await _genreService.Create(dto);

                return(StatusCode(201));
            } catch (Exception) {
                return(StatusCode(500, new { ServerErrorResponse.Message }));
            }
        }
示例#10
0
        public async Task Update(int id, CreateGenreDTO dto)
        {
            var genre = await _context.Genres.FirstOrDefaultAsync(g => g.Id == id);

            if (genre == null)
            {
                throw new EntityNotFoundException("Genre");
            }

            if (genre.Name != dto.Name)
            {
                genre.Name = dto.Name;
            }

            _context.Entry(genre).State = EntityState.Modified;

            await _context.SaveChangesAsync();
        }
示例#11
0
        public async Task <IActionResult> Put(int id, [FromBody] CreateGenreDTO dto)
        {
            var validator = new GenreUpdateFluentValidator(_context, id);
            var errors    = await validator.ValidateAsync(dto);

            if (!errors.IsValid)
            {
                return(UnprocessableEntity(ValidationFormatter.Format(errors)));
            }

            try {
                await _genreService.Update(id, dto);

                return(NoContent());
            } catch (EntityNotFoundException e) {
                return(NotFound(new { e.Message }));
            } catch (Exception) {
                return(StatusCode(500, new { ServerErrorResponse.Message }));
            }
        }
示例#12
0
        public ActionResult CreateGenres(CreateGenreDTO genre)
        {
            _logger.LogInformation(MyLogEvents.InsertItem, "Create Genres");

            if (genre == null)
            {
                return(BadRequest());
            }

            var genreEntity = _mapper.Map <Genre>(genre);

            _unitOfWork.Genres.Add(genreEntity);

            _unitOfWork.Complete();

            var genreToReturn = _mapper.Map <GenreDTO>(genreEntity);

            return(CreatedAtRoute("GetGenresWithId", new { genreId = genreEntity.Id }, new ResponseDTO <GenreDTO>()
            {
                Code = ResponseCodes.Success, responseMessage = "list of genres successfully returned", returnObject = genreToReturn
            }));
        }
示例#13
0
 public async Task <ActionResult> Put(int id, [FromBody] CreateGenreDTO createGenreDTO)
 {
     return(await Put <CreateGenreDTO, Genre, GenreDTO>(id, createGenreDTO));
 }
示例#14
0
 public async Task <ActionResult> Post([FromBody] CreateGenreDTO createGenreDTO)
 {
     return(await Post <CreateGenreDTO, Genre, GenreDTO>(createGenreDTO));
 }