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