Exemple #1
0
        public ActionResult Create(Models.Genre model)
        {
            if (ModelState.IsValid)
            {
                if (!genreService.ExistsGenre(model.Name))
                {
                    var dbModel = new Domain.Genre();
                    dbModel.InjectFrom(model);
                    genreService.AddGenre(dbModel);
                    TempData["message"] = string.Format("{0} has been saved", model.Name);
                }

                else
                {
                    ModelState.AddModelError("Name", "This genre is already in the database!!");

                    return(View(model));
                }
                //genreRepository.Add(dbModel);

                //transform the object
                //unitOfWork.Commit();
                return(RedirectToAction("Index"));
            }

            return(View(model));
        }
        public async Task DisconnectGenre_ValidRequest_ReturnsJsonResponseAndOk(int id, int genreID)
        {
            #region Arrange
            await DeleteDbContent();

            var client    = GetHttpClient();
            var dbContext = GetDbContext();

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

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

            dbContext.GenreMovies.Add(new Domain.GenreMovie
            {
                GenreID = genre.ID,
                MovieID = movie.ID
            });
            await dbContext.SaveChangesAsync();

            #endregion

            #region Act
            var response = await client.DeleteAsync($"/api/movie/{id}/genres/{genreID}");

            #endregion

            #region Assert
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            #endregion
        }
Exemple #3
0
        public async Task Read_ValidInput_ReturnsCorrectData(int id)
        {
            #region Arrange
            var dbContext = new ApplicationDbContext(_dbContextOptions);
            await dbContext.Database.EnsureDeletedAsync();

            var genre = new Domain.Genre
            {
                Name = "Name"
            };
            dbContext.Genres.Add(genre);
            await dbContext.SaveChangesAsync();

            var expectedGenre = new GenreModel
            {
                ID   = id,
                Name = genre.Name
            };

            var appGenre = new Genre(dbContext);
            #endregion

            #region Act
            var actualGenre = await appGenre.Read(id);

            #endregion

            #region Assert
            Assert.Equal(expectedGenre.ID, actualGenre.ID);
            Assert.Equal(expectedGenre.Name, actualGenre.Name);
            #endregion
        }
Exemple #4
0
        public async Task Update_InvalidInput_ReturnsNull(int id, string name)
        {
            #region Arrange
            var dbContext = new ApplicationDbContext(_dbContextOptions);
            await dbContext.Database.EnsureDeletedAsync();

            var genre = new Domain.Genre
            {
                Name = "Name"
            };
            dbContext.Genres.Add(genre);

            await dbContext.SaveChangesAsync();

            var newGenre = new AdminGenreModel
            {
                ID   = id,
                Name = name
            };

            var appGenre = new Genre(dbContext);
            #endregion

            #region Act
            var actualGenre = await appGenre.Update(newGenre);

            #endregion

            #region Assert
            Assert.Null(actualGenre);
            #endregion
        }
        public async Task DisconnectGenre_ValidInput_ReturnsTrue(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);

            var genreMovie = new Domain.GenreMovie
            {
                GenreID = genre.ID,
                MovieID = movie.ID
            };
            dbContext.GenreMovies.Add(genreMovie);

            await dbContext.SaveChangesAsync();

            var appMovie = new Movie(dbContext);
            #endregion

            #region Act
            var actual = await appMovie.DisconnectGenre(new AdminGenreMovieModel { GenreID = genreID, MovieID = id });

            #endregion

            #region Assert
            Assert.NotNull(actual);
            Assert.Equal(expectedID, actual.ID);
            #endregion
        }
        public void Execute(GenreDto request)
        {
            validator.ValidateAndThrow(request);

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

            context.Genres.Add(genre);
            context.SaveChanges();
        }
Exemple #7
0
        public ActionResult Edit(Models.Genre genre)
        {
            if (ModelState.IsValid)
            {
                var dbGenre = new Domain.Genre();
                dbGenre.InjectFrom(genre);
                genreRepository.Update(dbGenre);
                TempData["message"] = string.Format("{0} has been saved", genre.Name);
                unitOfWork.Commit();
            }
            else
            {
                return(View(genre));
            }

            return(RedirectToAction("Index"));
        }
Exemple #8
0
        public async Task <GenreModel> Create(AdminGenreModel adminGenreModel)
        {
            if (_genreValidation.IsInputValid(adminGenreModel))
            {
                var genre = new Domain.Genre
                {
                    Name = adminGenreModel.Name
                };

                _applicationDbContext.Genres.Add(genre);

                await _applicationDbContext.SaveChangesAsync();

                return(await Read(genre.ID));
            }

            return(null);
        }
        public async Task DisconnectGenre_InvalidRequest_ReturnsJsonResponseAndNotFoundWithErrors(int id, int genreID, IEnumerable <string> expectedErrorNames, IEnumerable <string> expectedErrorMessages)
        {
            #region Arrange
            await DeleteDbContent();

            var client    = GetHttpClient();
            var dbContext = GetDbContext();

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

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

            if (id != 1 && genreID != 1)
            {
                dbContext.GenreMovies.Add(new Domain.GenreMovie
                {
                    GenreID = genre.ID,
                    MovieID = movie.ID
                });
            }
            await dbContext.SaveChangesAsync();

            #endregion

            #region Act
            var response = await client.DeleteAsync($"/api/movie/{id}/genres/{genreID}");

            var responseBody = await response.Content.ReadAsStreamAsync();

            var actualMovie = await JsonSerializer.DeserializeAsync <JsonElement>(responseBody);

            var errorProp = actualMovie.GetProperty("errors");
            var errors    = errorProp.EnumerateObject();
            #endregion

            #region Assert
            Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
            Assert.Equal(expectedErrorNames.Count(), errors.Count());
            Assert.All(expectedErrorNames, errorName => Assert.Contains(errorName, errors.Select(prop => prop.Name)));
            Assert.All(expectedErrorMessages, errorMessage => Assert.Contains(errorMessage, errors.Select(prop => prop.Value[0].ToString())));
            #endregion
        }
        public async Task Read_ValidRequest_ReturnsJsonResponseAndOk(int id)
        {
            #region Arrange
            await DeleteDbContent();

            var client    = GetHttpClient();
            var dbContext = GetDbContext();

            var genre = new Domain.Genre
            {
                Name = "Name"
            };
            dbContext.Genres.Add(genre);
            await dbContext.SaveChangesAsync();

            var expectedGenre = new GenreModel
            {
                ID   = genre.ID,
                Name = genre.Name
            };
            #endregion

            #region Act
            var response = await client.GetAsync($"/api/genre/{id}");

            var responseBody = await response.Content.ReadAsStreamAsync();

            var actualGenre = await JsonSerializer.DeserializeAsync <GenreModel>(responseBody);

            #endregion

            #region Assert
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            Assert.Equal(expectedGenre.ID, actualGenre.ID);
            Assert.Equal(expectedGenre.Name, actualGenre.Name);
            #endregion
        }
        public async Task Read_ValidInput_ReturnsCorrectData(int id)
        {
            #region Arrange
            var dbContext = new ApplicationDbContext(_dbContextOptions);
            await dbContext.Database.EnsureDeletedAsync();

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

            var movie = new Domain.Movie
            {
                Description = "Description",
                Genres      = new List <Domain.GenreMovie>
                {
                    new Domain.GenreMovie
                    {
                        GenreID = genre.ID
                    }
                },
                LanguageID  = language.ID,
                Length      = 104,
                ReleaseDate = "04-10-2010",
                Name        = "Title"
            };
            dbContext.Movies.Add(movie);
            await dbContext.SaveChangesAsync();

            var expectedMovie = new MovieModel
            {
                ID          = id,
                Description = movie.Description,
                Genres      = new List <GenreModel>
                {
                    new GenreModel
                    {
                        ID   = genre.ID,
                        Name = genre.Name
                    }
                },
                Language = new LanguageModel
                {
                    ID   = language.ID,
                    Name = language.Name
                },
                Length      = movie.Length,
                ReleaseDate = movie.ReleaseDate,
                Name        = movie.Name
            };

            var appMovie = new Movie(dbContext);
            #endregion

            #region Act
            var actualMovie = await appMovie.Read(id);

            #endregion

            #region Assert
            Assert.Equal(expectedMovie.ID, actualMovie.ID);
            Assert.Equal(expectedMovie.Description, actualMovie.Description);
            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
        }