Esempio n. 1
0
        public async Task <MovieModel> ConnectGenre(AdminGenreMovieModel adminGenreMovieModel)
        {
            var genre = await _applicationDbContext.Genres.FirstOrDefaultAsync(x => x.ID == adminGenreMovieModel.GenreID);

            var movie = await _applicationDbContext.Movies.FirstOrDefaultAsync(x => x.ID == adminGenreMovieModel.MovieID);

            if (genre != null && movie != null)
            {
                var doesConnectionExist = await _applicationDbContext.GenreMovies.FirstOrDefaultAsync(x => x.GenreID == genre.ID && x.MovieID == movie.ID);

                if (doesConnectionExist == null)
                {
                    var genreMovie = new Domain.GenreMovie
                    {
                        GenreID = adminGenreMovieModel.GenreID,
                        MovieID = adminGenreMovieModel.MovieID
                    };

                    _applicationDbContext.GenreMovies.Add(genreMovie);
                    await _applicationDbContext.SaveChangesAsync();

                    return(await Read(adminGenreMovieModel.MovieID));
                }

                return(GetMovieModelWithErrorID(genre, movie));
            }

            return(GetMovieModelWithErrorID(genre, movie));
        }
Esempio n. 2
0
        public async Task ConnectGenre_InvalidInput_ReturnsNull(int id, int genreID, int expectedID)
        {
            #region Arrange
            var dbContext = new ApplicationDbContext(_dbContextOptions);
            await dbContext.Database.EnsureDeletedAsync();

            var genre = new Domain.Genre();
            dbContext.Genres.Add(genre);

            var movie = new Domain.Movie();
            dbContext.Movies.Add(movie);

            if (expectedID == -4)
            {
                dbContext.GenreMovies.Add(new Domain.GenreMovie
                {
                    GenreID = genre.ID,
                    MovieID = movie.ID
                });
            }

            await dbContext.SaveChangesAsync();

            var newGenreMovie = new AdminGenreMovieModel
            {
                GenreID = genreID,
                MovieID = id
            };

            var appMovie = new Movie(dbContext);
            #endregion

            #region Act
            var actualMovie = await appMovie.ConnectGenre(newGenreMovie);

            #endregion

            #region Assert
            Assert.NotNull(actualMovie);
            Assert.Equal(expectedID, actualMovie.ID);
            #endregion
        }
Esempio n. 3
0
        public async Task <MovieModel> DisconnectGenre(AdminGenreMovieModel adminGenreMovieModel)
        {
            var genre = await _applicationDbContext.Genres.FirstOrDefaultAsync(c => c.ID == adminGenreMovieModel.GenreID);

            var movie = await _applicationDbContext.Movies.FirstOrDefaultAsync(c => c.ID == adminGenreMovieModel.MovieID);

            if (genre != null && movie != null)
            {
                var genreMovie = _applicationDbContext
                                 .GenreMovies
                                 .FirstOrDefault(c => c.GenreID == genre.ID && c.MovieID == movie.ID);

                if (genreMovie != null)
                {
                    _applicationDbContext.GenreMovies.Remove(genreMovie);
                    await _applicationDbContext.SaveChangesAsync();

                    return(new MovieModel());
                }
            }

            return(GetMovieModelWithErrorID(genre, movie));
        }
Esempio n. 4
0
        public async Task ConnectGenre_ValidInput_ReturnsCorrectData(int id, int genreID)
        {
            #region Arrange
            var dbContext = new ApplicationDbContext(_dbContextOptions);
            await dbContext.Database.EnsureDeletedAsync();

            var language = new Domain.Language
            {
                Name = "Name"
            };
            dbContext.Languages.Add(language);
            await dbContext.SaveChangesAsync();

            var genre = new Domain.Genre
            {
                Name = "Name"
            };

            var movie = new Domain.Movie
            {
                Description = "Description",
                LanguageID  = 1,
                Length      = 104,
                ReleaseDate = "04-10-2010",
                Name        = "Title"
            };

            dbContext.Genres.Add(genre);
            dbContext.Movies.Add(movie);
            await dbContext.SaveChangesAsync();

            var newGenreMovie = new AdminGenreMovieModel
            {
                GenreID = genreID,
                MovieID = id
            };

            var expectedMovie = new MovieModel
            {
                ID          = 1,
                Description = "Description",
                Genres      = new List <GenreModel>
                {
                    new GenreModel
                    {
                        ID   = 1,
                        Name = "Name"
                    }
                },
                Language = new LanguageModel
                {
                    ID   = 1,
                    Name = "Name"
                },
                Name        = "Title",
                Length      = 104,
                ReleaseDate = "04-10-2010"
            };

            var appMovie = new Movie(dbContext);
            #endregion

            #region Act
            var actualMovie = await appMovie.ConnectGenre(newGenreMovie);

            #endregion

            #region Assert
            Assert.Equal(expectedMovie.ID, actualMovie.ID);
            Assert.Equal(expectedMovie.Description, actualMovie.Description);
            Assert.Equal(expectedMovie.Genres.Count(), actualMovie.Genres.Count());
            Assert.Equal(expectedMovie.Genres.ToList()[0].ID, actualMovie.Genres.ToList()[0].ID);
            Assert.Equal(expectedMovie.Genres.ToList()[0].Name, actualMovie.Genres.ToList()[0].Name);
            Assert.Equal(expectedMovie.Language.ID, actualMovie.Language.ID);
            Assert.Equal(expectedMovie.Language.Name, actualMovie.Language.Name);
            Assert.Equal(expectedMovie.Length, actualMovie.Length);
            Assert.Equal(expectedMovie.ReleaseDate, actualMovie.ReleaseDate);
            Assert.Equal(expectedMovie.Name, actualMovie.Name);
            #endregion
        }