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