public IActionResult CreateSubGenre([FromBody] SubGenreCreateDTO subGenreDto)
        {
            if (subGenreDto is null)
            {
                return(BadRequest(ModelState));
            }

            if (_genreRepo.SubGenreExist(subGenreDto.Name))
            {
                ModelState.AddModelError("", "SubGenre already exist!");
                return(StatusCode(404, ModelState));
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var genreObj = _mapper.Map <SubGenreModel>(subGenreDto);

            if (!_genreRepo.CreateSubGenre(genreObj))
            {
                ModelState.AddModelError("", $"Something wrong occured when trying to save record {genreObj.Name}");
                return(StatusCode(500, ModelState));
            }
            return(CreatedAtRoute("GetSubGenreById", new { genreId = genreObj.Id }, genreObj));
        }
        public void CreateSubGenre_Returns_CreatedAtRoute()
        {
            // Arrange
            var subGenreRepositoryMock = new Mock <ISubGenreRepository>();
            var subGenreIMapperMock    = new MapperConfiguration(config =>
            {
                config.AddProfile(new MovieMapper());
            });
            var subGenreMapper = subGenreIMapperMock.CreateMapper();
            SubGenresController subGenreApiController = new SubGenresController(subGenreRepositoryMock.Object, mapper: subGenreMapper);
            var genreModel = new GenreModel()
            {
                Name        = "Humor",
                DateCreated = DateTime.Parse("15 May 2015"),
                Id          = Guid.NewGuid()
            };
            var subGenreDto = new SubGenreCreateDTO()
            {
                Name        = "Humor",
                DateCreated = DateTime.Parse("15 May 2015"),
                GenreId     = genreModel.Id,
                Id          = Guid.NewGuid()
            };

            subGenreRepositoryMock.Setup(repo => repo.SubGenreExist(It.IsAny <string>())).Returns(false);
            subGenreRepositoryMock.Setup(repo => repo.CreateSubGenre(It.IsAny <SubGenreModel>())).Returns(true);
            // Act
            var subGenreResult       = subGenreApiController.CreateSubGenre(subGenreDto);
            var createdAtRouteResult = subGenreResult as CreatedAtRouteResult;

            // Assert
            Assert.True(createdAtRouteResult.StatusCode is StatusCodes.Status201Created);
        }