Exemplo n.º 1
0
        public static WatchedMovieModel Map(MovieJMDBApi movie)
        {
            var watchedMovie = new WatchedMovie();

            foreach (var movieIter in movie.WatchedUsers)
            {
                if (movieIter.MovieJMDBApiId == movie.Id)
                {
                    watchedMovie = movieIter;
                }
            }
            return(new WatchedMovieModel
            {
                Id = movie.Id,
                Name = movie.Name,
                Actors = movie.MovieDetailsJMDBApi.Actors,
                Year = movie.MovieDetailsJMDBApi.Year,
                Director = movie.MovieDetailsJMDBApi.Director,
                Duration = movie.MovieDetailsJMDBApi.Duration,
                Genre = movie.MovieDetailsJMDBApi.Genre,
                Country = movie.MovieDetailsJMDBApi.Country,
                Poster = movie.Poster,
                Rate = watchedMovie.Rating,
                Comment = watchedMovie.Comment,
                DateTimeWatched = watchedMovie.WatchingDate,
                DateTimeAdded = watchedMovie.DateTimeAdded,
                UserId = watchedMovie.UserId,
                User = AutoMap <User, UserModel>(watchedMovie.User)
            });
        }
Exemplo n.º 2
0
        public MovieJMDBApi Add(long userId, MovieJMDBApi movie)
        {
            // user mora da postoji
            var user = _uow.Users.FirstOrDefault(a => a.Id == userId, "");

            ValidationHelper.ValidateNotNull(user);

            // film mora postojati u bazi da bi se dodala asocijativna klasa, ako ne postoji dodajemo ga
            // film postoji ako vec ima taj ID

            var movieExist = _uow.MoviesJMDBApi.FirstOrDefault(a => a.Id == movie.Id, ""); // ovo je izgenerisan id iz jmdb APIa a ne iz nase baze!

            if (movieExist != null)
            {
                //provera da li je vec unet film za tog usera:
                var exist = _uow.SavedMovies.FirstOrDefault(f => f.UserId == userId && f.MovieJMDBApiId == movie.Id, "");
                ValidationHelper.ValidateEntityExists(exist);

                SavedMovie savedMovie = new SavedMovie
                {
                    UserId         = userId,
                    MovieJMDBApiId = movie.Id,
                    SavingDate     = DateTime.Now
                };

                var savedMovieAdded = _uow.SavedMovies.Add(savedMovie, "");
                _uow.Save();
            }
            else
            {
                //moramo da ga dodamo a nakon toga i asocijativnu klasu
                var newMovie = _uow.MoviesJMDBApi.Add(movie, "");
                _uow.Save();

                //provera da li je vec unet film za tog usera:
                var exist = _uow.SavedMovies.FirstOrDefault(f => f.UserId == userId && f.MovieJMDBApiId == movie.Id, "");
                ValidationHelper.ValidateEntityExists(exist);

                // ako nije dodajemo ga
                SavedMovie savedMovie = new SavedMovie
                {
                    UserId         = userId,
                    MovieJMDBApiId = movie.Id,
                    SavingDate     = DateTime.Now
                };

                _uow.SavedMovies.Add(savedMovie, "");
                _uow.Save();
            }
            return(movie);
        }
        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);
        }
Exemplo n.º 4
0
 public static AddSavedMovieModel MapAdd(MovieJMDBApi movie, long userId)
 {
     return(new AddSavedMovieModel
     {
         Id = movie.Id,
         Name = movie.Name,
         Poster = movie.Poster,
         UserId = userId,
         Actors = movie.MovieDetailsJMDBApi.Actors,
         Genre = movie.MovieDetailsJMDBApi.Genre,
         Duration = movie.MovieDetailsJMDBApi.Duration,
         Year = movie.MovieDetailsJMDBApi.Year,
         Country = movie.MovieDetailsJMDBApi.Country,
         Director = movie.MovieDetailsJMDBApi.Director
                    // User = AutoMap<User, UserModel>(userMovie)
     });
 }
Exemplo n.º 5
0
 public static WatchedMovieModel MapFriend(MovieJMDBApi movie, WatchedMovie watchedMovie)
 {
     return(new WatchedMovieModel
     {
         Id = movie.Id,
         Name = movie.Name,
         Actors = movie.MovieDetailsJMDBApi.Actors,
         Year = movie.MovieDetailsJMDBApi.Year,
         Director = movie.MovieDetailsJMDBApi.Director,
         Duration = movie.MovieDetailsJMDBApi.Duration,
         Genre = movie.MovieDetailsJMDBApi.Genre,
         Country = movie.MovieDetailsJMDBApi.Country,
         Poster = movie.Poster,
         Rate = watchedMovie.Rating,
         Comment = watchedMovie.Comment,
         DateTimeWatched = watchedMovie.WatchingDate,
         DateTimeAdded = watchedMovie.DateTimeAdded,
         UserId = watchedMovie.UserId,
         User = AutoMap <User, UserModel>(watchedMovie.User)
     });
 }
Exemplo n.º 6
0
        public static SavedMovieModel Map(MovieJMDBApi movie, long userId)
        {
            var      userMovie     = new User();
            DateTime dateTimeSaved = new DateTime();

            foreach (var movie1 in movie.SavedUsers)
            {
                if (movie1.UserId == userId)
                {
                    userMovie     = movie1.User;
                    dateTimeSaved = movie1.SavingDate;
                    break;
                }
            }
            return(new SavedMovieModel
            {
                Id = movie.Id,
                Name = movie.Name,
                Poster = movie.Poster,
                DateTimeSaved = dateTimeSaved,
                UserId = userId,
                User = AutoMap <User, UserModel>(userMovie)
            });
        }
        public void UpdateMovie()
        {
            WatchedMovie watchedMoiveForUpdate = new WatchedMovie
            {
                //user can update comment, rate OR date waching, only one, two, or all of them
                Comment = "Updated comment",
                Rating  = 2
            };

            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
            };

            WatchedMovie watchedMoive = new WatchedMovie
            {
                UserId         = 1,
                MovieJMDBApiId = "tt123",
                Comment        = "comment",
                Rating         = 5,
                WatchingDate   = "22.02.2020.",
                DateTimeAdded  = DateTime.Now,
                MovieJMDBApi   = movieAPI,
                User           = fakeUser
            };

            string movieId       = "tt123";
            long   currentUserId = 1;

            _uowMock.Setup(uow => uow.Users.GetById(currentUserId)).Returns(fakeUser);
            _uowMock.Setup(uow => uow.MoviesJMDBApi.GetById(movieId)).Returns(movieAPI);
            _uowMock.Setup(uow => uow.WatchedMovies.FirstOrDefault(f => f.MovieJMDBApiId == movieId && f.UserId == currentUserId, ""))
            .Returns(watchedMoive);

            _uowMock.Setup(uow => uow.WatchedMovies.Update(watchedMoive, currentUserId, watchedMoive.MovieJMDBApiId))
            .Returns(watchedMoive);
            _uowMock.Setup(uow => uow.Save()).Callback(() => {
                watchedMoive.Comment = "Updated comment";
                watchedMoive.Rating  = 2;
            });

            var result = _manager.Update(watchedMoive, movieId, currentUserId);

            _uowMock.Verify(uow => uow.WatchedMovies.Update(watchedMoive, currentUserId, watchedMoive.MovieJMDBApiId), Times.Once());
            _uowMock.Verify(uow => uow.Save(), Times.Once());

            Assert.IsNotNull(result);
        }
        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);
        }
        public void AddSavedMovieSavedMovieExist()
        {
            var movieToAdd = new MovieJMDBApi
            {
                Id = "tt999",
                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
            };

            SavedMovie savedMovie = new SavedMovie
            {
                UserId         = 1,
                MovieJMDBApiId = "tt999",
                SavingDate     = DateTime.Now,
                User           = fakeUser,
                MovieJMDBApi   = new MovieJMDBApi
                {
                    Id = "tt999",
                    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 = new List <SavedMovie> {
                        new SavedMovie {
                            MovieJMDBApi   = movieToAdd,
                            MovieJMDBApiId = "tt999",
                            SavingDate     = DateTime.Now,
                            User           = fakeUser,
                            UserId         = 1
                        }
                    },
                    WatchedUsers = null
                }
            };

            _uowMock.Setup(uow => uow.Users.FirstOrDefault(x => x.Id == 1, ""))
            .Returns(fakeUser);

            _uowMock.Setup(uow => uow.MoviesJMDBApi.FirstOrDefault(m => m.Id == movieToAdd.Id, ""))
            .Returns(movieToAdd);

            _uowMock.Setup(uow => uow.SavedMovies.FirstOrDefault(m => m.UserId == 1 && m.MovieJMDBApiId == movieToAdd.Id, ""))
            .Returns(savedMovie);


            Exception ex = Assert.Throws <ValidationException>(delegate { _manager.Add(1, movieToAdd); });

            Assert.That(ex.Message, Is.EqualTo("SavedMovie currently exists!"));
        }
        public void AddSavedMovieMovieJMDBApiNotExixstInDb()
        {
            var movieToAdd = new MovieJMDBApi
            {
                Id = "tt999",
                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
            };

            _uowMock.Setup(uow => uow.Users.FirstOrDefault(x => x.Id == 1, ""))
            .Returns(fakeUser);

            _uowMock.Setup(uow => uow.MoviesJMDBApi.FirstOrDefault(m => m.Id == movieToAdd.Id, ""))
            .Returns((MovieJMDBApi)null);

            _uowMock.Setup(uow => uow.MoviesJMDBApi.Add(movieToAdd, ""))
            .Returns(movieToAdd);

            _uowMock.Setup(uow => uow.SavedMovies.FirstOrDefault(m => m.UserId == 1 && m.MovieJMDBApiId == "tt999", ""))
            .Returns((SavedMovie)null);

            SavedMovie savedMovie = new SavedMovie
            {
                UserId         = 1,
                MovieJMDBApiId = movieToAdd.Id,
                SavingDate     = DateTime.Now
            };

            SavedMovie addedSavedMovie = new SavedMovie
            {
                UserId         = 1,
                MovieJMDBApiId = "tt999",
                SavingDate     = DateTime.Now,
                User           = fakeUser,
                MovieJMDBApi   = new MovieJMDBApi
                {
                    Id = "tt999",
                    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 = new List <SavedMovie> {
                        new SavedMovie {
                            MovieJMDBApi   = movieToAdd,
                            MovieJMDBApiId = "tt999",
                            SavingDate     = DateTime.Now,
                            User           = fakeUser,
                            UserId         = 1
                        }
                    },
                    WatchedUsers = null
                }
            };

            _uowMock.Setup(uow => uow.SavedMovies.Add(savedMovie, ""))
            .Returns(addedSavedMovie);

            var result = _manager.Add(1, movieToAdd);

            // _uowMock.Verify(uow => uow.SavedMovies.Add(savedMovie, ""), Times.Once());
            _uowMock.Verify(uow => uow.MoviesJMDBApi.Add(movieToAdd, ""), Times.Once());
            _uowMock.Verify(uow => uow.Save(), Times.Exactly(2));

            Assert.AreEqual(movieToAdd.Id, result.Id);
            Assert.AreEqual(movieToAdd.MovieDetailsJMDBApi, result.MovieDetailsJMDBApi);
        }
        public void Setup()
        {
            _uowMock             = new Mock <IUnitOfWork>();
            _propertyMappingMock = new Mock <IPropertyMappingService>();
            _propertyCheckerMock = new Mock <IPropertyCheckerService>();

            _manager = new SavedMoviesManager(_propertyMappingMock.Object, _propertyCheckerMock.Object, _uowMock.Object);

            fakeUser = new User
            {
                Id       = 1,
                Name     = "user",
                Surname  = "user",
                Password = "******",
                Picture  = "picture",
                Email    = "email",
                NotificationsReceived = null,
                NotificationsSent     = null,
                FriendsReceived       = null,
                FriendsSent           = null,
                SavedMovies           = null,
                WatchedMovies         = null
            };

            fakeMovieJMDBApi = new MovieJMDBApi
            {
                Id = "tt123",
                MovieDetailsJMDBApi = new MovieDetailsJMDBApi
                {
                    Actors   = "actors",
                    Country  = "SRB",
                    Director = "Director",
                    Duration = 111,
                    Genre    = "comedy",
                    Name     = "Movie 1",
                    Year     = 2021
                },
                Name         = "Movie 1",
                Poster       = "poster 1",
                SavedUsers   = null,
                WatchedUsers = null
            };

            fakeSavedMovie = new SavedMovie
            {
                UserId         = 1,
                User           = fakeUser,
                MovieJMDBApiId = "tt123",
                MovieJMDBApi   = fakeMovieJMDBApi,
                SavingDate     = new DateTime(2020, 5, 5)
            };

            fakeListResult = new List <SavedMovie>
            {
                fakeSavedMovie,
                new SavedMovie
                {
                    UserId         = 1,
                    MovieJMDBApiId = "tt999",
                    SavingDate     = new DateTime(2020, 6, 6),
                    User           = fakeUser,
                    MovieJMDBApi   = new MovieJMDBApi
                    {
                        Id = "tt999",
                        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
                    }
                }
            };
        }