public MovieJMDBApi Add(MovieDetailsJMDBApi movie, long userId, string comment, int rate, string date, string poster, string movieAPIid) { var user = _uow.Users.FirstOrDefault(a => a.Id == userId, ""); ValidationHelper.ValidateNotNull(user); var watchedMovie = _uow.WatchedMovies.FirstOrDefault(f => f.UserId == userId && f.MovieJMDBApiId == movieAPIid, "MovieJMDBApi"); ValidationHelper.ValidateEntityExists(watchedMovie); var movieAPI = _uow.MoviesJMDBApi.FirstOrDefault(a => a.Id == movieAPIid, ""); if (movieAPI == null) { MovieJMDBApi add = new MovieJMDBApi { Id = movieAPIid, Name = movie.Name, Poster = poster, MovieDetailsJMDBApi = movie }; _uow.MoviesJMDBApi.Add(add); _uow.Save(); } WatchedMovie watchedMoive = new WatchedMovie { UserId = userId, MovieJMDBApiId = movieAPIid, Comment = comment, Rating = rate, WatchingDate = date, DateTimeAdded = DateTime.Now }; var watchedMovieAdded = _uow.WatchedMovies.Add(watchedMoive, ""); _uow.Save(); var savedMovie = _uow.SavedMovies.FirstOrDefault(m => m.MovieJMDBApiId == movieAPIid && m.UserId == userId); if (savedMovie != null) { _uow.SavedMovies.Delete(savedMovie); _uow.Save(); } ; return(watchedMovieAdded.MovieJMDBApi); }
public void AddMovie() { var movieToAdd = new MovieDetailsJMDBApi() { Actors = "Actors", Country = "USA", Director = "Director", Duration = 111, Genre = "Action", Name = "Movie 99", Year = 2020 }; var movieAPI = new MovieJMDBApi { Id = "tt123", MovieDetailsJMDBApi = new MovieDetailsJMDBApi { Actors = "Actors", Country = "USA", Director = "Director", Duration = 111, Genre = "Action", Name = "Movie 99", Year = 2020 }, Name = "Movie 99", Poster = "poster 9", SavedUsers = null, WatchedUsers = null }; long currentUserId = 1; string comment = "comment"; int rate = 5; string date = "22.02.2020."; string movieId = "tt123"; string poster = "poster"; WatchedMovie watchedMoive = new WatchedMovie { UserId = 1, MovieJMDBApiId = "tt123", Comment = "comment", Rating = 5, WatchingDate = "22.02.2020.", DateTimeAdded = DateTime.Now, MovieJMDBApi = movieAPI, User = fakeUser }; _uowMock.Setup(uow => uow.Users.FirstOrDefault(a => a.Id == currentUserId, "")).Returns(fakeUser); _uowMock.Setup(uow => uow.WatchedMovies.FirstOrDefault(f => f.UserId == currentUserId && f.MovieJMDBApiId == movieId, "MovieJMDBApi")) .Returns((WatchedMovie)null); _uowMock.Setup(uow => uow.MoviesJMDBApi.FirstOrDefault(a => a.Id == movieId, "")).Returns(movieAPI); _uowMock.Setup(uow => uow.SavedMovies.FirstOrDefault(a => a.MovieJMDBApiId == movieId && a.UserId == currentUserId, "")) .Returns((SavedMovie)null); _uowMock.Setup(uow => uow.WatchedMovies.Add(It.Is <WatchedMovie>(m => m.UserId == 1), "")).Returns(watchedMoive); var result = _manager.Add(movieToAdd, currentUserId, comment, rate, date, poster, movieId); _uowMock.Verify(uow => uow.WatchedMovies.Add(It.Is <WatchedMovie>(m => m.UserId == 1), ""), Times.Once()); _uowMock.Verify(uow => uow.Save(), Times.Once()); Assert.NotNull(result); Assert.AreEqual(movieAPI, result); }