public async Task <ActionResult> CreateNewMovieWithHisTags([FromBody] CreateMovieModel movieModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } MovieDomainModel domainModel = new MovieDomainModel { Current = movieModel.Current, Rating = movieModel.Rating, Title = movieModel.Title, Year = movieModel.Year }; MovieCreateTagDomainModel movieCreateTagDomainModel = new MovieCreateTagDomainModel { Duration = movieModel.Duration, tagsForMovieToAdd = movieModel.listOfTags }; MovieDomainModel createMovie; try { createMovie = await _movieService.AddMovie(domainModel, movieCreateTagDomainModel); } catch (DbUpdateException e) { ErrorResponseModel errorResponse = new ErrorResponseModel { ErrorMessage = e.InnerException.Message ?? e.Message, StatusCode = System.Net.HttpStatusCode.BadRequest }; return(BadRequest(errorResponse)); } if (createMovie == null) { ErrorResponseModel errorResponse = new ErrorResponseModel { ErrorMessage = Messages.MOVIE_CREATION_ERROR, StatusCode = System.Net.HttpStatusCode.InternalServerError }; return(StatusCode((int)System.Net.HttpStatusCode.InternalServerError, errorResponse)); } return(Created("movies//" + createMovie.Id, createMovie)); }
public void MovieService_AddMovie_ReturnNull() { //Arrange MovieDomainModel movieDomainModel = _movieDomainModel; MovieCreateTagDomainModel movieCreate = new MovieCreateTagDomainModel(); Movie movie = null; _mockMoviesRepository = new Mock <IMoviesRepository>(); _mockMoviesRepository.Setup(x => x.Insert(It.IsAny <Movie>())).Returns(movie); MovieService movieController = new MovieService(_mockMoviesRepository.Object, _mockProjectionsRepository.Object, _mockMovieTagsRepository.Object, _mockTicketRepository.Object, _mockTagRepository.Object); //Act var resultAction = movieController.AddMovie(movieDomainModel, movieCreate).ConfigureAwait(false).GetAwaiter().GetResult(); //Assert Assert.IsNull(resultAction); }
public void MovieService_AddMovie_ReturnMovieDomainModel() { //Arrange MovieDomainModel movieDomainModel = _movieDomainModel; MovieCreateTagDomainModel movieCreate = new MovieCreateTagDomainModel(); Movie movie = _movie; //MovieDomainModel repositoryResponse = _mov; _mockMoviesRepository = new Mock <IMoviesRepository>(); _mockMoviesRepository.Setup(x => x.Insert(It.IsAny <Movie>())).Returns(movie); MovieService movieController = new MovieService(_mockMoviesRepository.Object, _mockProjectionsRepository.Object, _mockMovieTagsRepository.Object, _mockTicketRepository.Object, _mockTagRepository.Object); //Act var resultAction = movieController.AddMovie(movieDomainModel, movieCreate).ConfigureAwait(false).GetAwaiter().GetResult(); //Assert Assert.IsNotNull(resultAction); Assert.IsInstanceOfType(resultAction, typeof(MovieDomainModel)); Assert.AreEqual(resultAction.Rating, movieDomainModel.Rating); Assert.AreEqual(resultAction.Id, movieDomainModel.Id); }
public async Task <MovieDomainModel> AddMovie(MovieDomainModel newMovie, MovieCreateTagDomainModel movieCreateTagDomainModel) { Movie movieToCreate = new Movie() { Title = newMovie.Title, Current = newMovie.Current, Year = newMovie.Year, Rating = newMovie.Rating }; var data = _moviesRepository.Insert(movieToCreate); if (data == null) { return(null); } if (movieCreateTagDomainModel.Duration > 0) { var durationIntToString = movieCreateTagDomainModel.Duration.ToString(); Tag durationTag = new Tag { Name = durationIntToString, Type = "duration", }; var newTagAdded = _tagRepository.Insert(durationTag); MovieTag movieTag = new MovieTag() { MovieId = data.Id, Tag = newTagAdded }; _movieTagsRepository.Insert(movieTag); } if (movieCreateTagDomainModel.tagsForMovieToAdd != null && movieCreateTagDomainModel.tagsForMovieToAdd.Count > 0) { foreach (var item in movieCreateTagDomainModel.tagsForMovieToAdd) { var findTag = _tagRepository.GetByIdName(item); if (findTag != null) { MovieTag moviTagToAdd = new MovieTag { MovieId = data.Id, TagId = findTag.Id }; _movieTagsRepository.Insert(moviTagToAdd); } } } _moviesRepository.Save(); MovieDomainModel domainModel = new MovieDomainModel() { Id = data.Id, Title = data.Title, Current = data.Current, Year = data.Year, Rating = data.Rating ?? 0 }; return(domainModel); }