public async Task <MovieModel> Create(AdminMovieModel adminMovieModel) { if (_movieValidation.IsInputValid(adminMovieModel)) { var language = await _applicationDbContext.Languages.FirstOrDefaultAsync(x => x.ID == adminMovieModel.LanguageID); if (language != null) { var movie = new Domain.Movie { Description = adminMovieModel.Description, LanguageID = adminMovieModel.LanguageID, Length = adminMovieModel.Length, ReleaseDate = adminMovieModel.ReleaseDate.ToString("dd-MM-yyyy"), Name = adminMovieModel.Name }; _applicationDbContext.Movies.Add(movie); await _applicationDbContext.SaveChangesAsync(); return(await Read(movie.ID)); } return(new MovieModel()); } return(null); }
public async Task DisconnectMovie_ValidInput_ReturnsTrue(int id, int movieID, int expectedID) { #region Arrange var dbContext = new ApplicationDbContext(_dbContextOptions); await dbContext.Database.EnsureDeletedAsync(); var company = new Domain.Company(); dbContext.Companies.Add(company); var movie = new Domain.Movie(); dbContext.Movies.Add(movie); var companyMovie = new Domain.CompanyMovie { CompanyID = company.ID, MovieID = movie.ID }; dbContext.CompanyMovies.Add(companyMovie); await dbContext.SaveChangesAsync(); var appCompany = new Company(dbContext); #endregion #region Act var actual = await appCompany.DisconnectMovie(new AdminCompanyMovieModel { CompanyID = id, MovieID = movieID }); #endregion #region Assert Assert.NotNull(actual); Assert.Equal(expectedID, actual.ID); #endregion }
public override void Handle(CreateMovieCommand command) { Return(ValidateCommand(command)); var location = new Domain.Movie(Guid.NewGuid(), command.Title, command.ReleaseDate, command.RunningTimeMinutes); _repository.Save(location); }
public async Task DisconnectMovie_ValidRequest_ReturnsJsonResponseAndOk(int id, int movieID) { #region Arrange await DeleteDbContent(); var client = GetHttpClient(); var dbContext = GetDbContext(); var company = new Domain.Company(); dbContext.Companies.Add(company); var movie = new Domain.Movie(); dbContext.Movies.Add(movie); await dbContext.SaveChangesAsync(); dbContext.CompanyMovies.Add(new Domain.CompanyMovie { CompanyID = company.ID, MovieID = movie.ID }); await dbContext.SaveChangesAsync(); #endregion #region Act var response = await client.DeleteAsync($"/api/company/{id}/movies/{movieID}"); #endregion #region Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); #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 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 static void MapFrom(this Domain.Movie movie, CreateEdit.Command request) { movie.Id = request.Id ?? 0; movie.Title = request.Title; movie.Runtime = request.Runtime; movie.RottenTomatoRating = request.RottenTomatoRating; movie.ImdbRating = request.ImdbRating; }
public async Task Update_InvalidRequest_ReturnsJsonResponseAndBadRequestWithErrors(int id, string description, int languageID, int length, string releaseDate, string name, IEnumerable <string> expectedErrorNames, IEnumerable <string> expectedErrorMessages) { #region Arrange await DeleteDbContent(); var client = GetHttpClient(); var dbContext = GetDbContext(); var language = new Domain.Language { Name = "Name" }; dbContext.Languages.Add(language); dbContext.Languages.Add(new Domain.Language { Name = "New Name" }); await dbContext.SaveChangesAsync(); var movie = new Domain.Movie { Description = "Description", LanguageID = language.ID, Length = 104, ReleaseDate = "04-10-2010", Name = "Name" }; dbContext.Movies.Add(movie); await dbContext.SaveChangesAsync(); var newMovie = new AdminMovieModel { Description = description, LanguageID = languageID, Length = length, ReleaseDate = DateTime.Parse(releaseDate), Name = name }; #endregion #region Act var response = await client.PutAsJsonAsync($"/api/movie/{id}", newMovie); 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.BadRequest, 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 MovieDto(Domain.Movie movie) { id = movie.Id; kpId = movie.KpId; reviews = movie.Reviews.Select(x => x.Id).ToList(); poster = movie.Poster.Value; genres = movie.Genres.Select(x => x.Value).ToList(); rating = movie.Rating.Value; title = movie.Title.Value; year = movie.Year.Value; }
public async Task Update_InvalidInput_ReturnsNull(int id, string description, int languageID, int length, string releaseDate, string title) { #region Arrange var dbContext = new ApplicationDbContext(_dbContextOptions); await dbContext.Database.EnsureDeletedAsync(); var language = new Domain.Language { Name = "Name" }; dbContext.Languages.Add(language); dbContext.Languages.Add(new Domain.Language { Name = "New Name" }); var movie = new Domain.Movie { Description = "Description", LanguageID = language.ID, Length = 104, ReleaseDate = "04-10-2010", Name = "Title" }; dbContext.Movies.Add(movie); await dbContext.SaveChangesAsync(); var newMovie = new AdminMovieModel { ID = id, Description = description, LanguageID = languageID, Length = length, ReleaseDate = DateTime.Parse(releaseDate), Name = title }; var appMovie = new Movie(dbContext); #endregion #region Act var actualMovie = await appMovie.Update(newMovie); #endregion #region Assert Assert.Null(actualMovie); #endregion }
public async Task <IActionResult> OnGetAsync(int?id) { if (!id.HasValue) { return(NotFound()); } Movie = await Context.Movies.FirstOrDefaultAsync(m => m.Id == id); if (Movie == null) { return(NotFound()); } return(Page()); }
public async Task DisconnectMovie_InvalidRequest_ReturnsJsonResponseAndNotFoundWithErrors(int id, int movieID, IEnumerable <string> expectedErrorNames, IEnumerable <string> expectedErrorMessages) { #region Arrange await DeleteDbContent(); var client = GetHttpClient(); var dbContext = GetDbContext(); var company = new Domain.Company(); dbContext.Companies.Add(company); var movie = new Domain.Movie(); dbContext.Movies.Add(movie); if (id != 1 && movieID != 1) { dbContext.CompanyMovies.Add(new Domain.CompanyMovie { CompanyID = company.ID, MovieID = movie.ID }); } await dbContext.SaveChangesAsync(); #endregion #region Act var response = await client.DeleteAsync($"/api/company/{id}/movies/{movieID}"); var responseBody = await response.Content.ReadAsStreamAsync(); var actualCompany = await JsonSerializer.DeserializeAsync <JsonElement>(responseBody); var errorProp = actualCompany.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 }
private async Task <object[]> CreateMovieAndPerson(ApplicationDbContext dbContext) { var movie = new Domain.Movie { Name = "Title" }; var person = new Domain.Person { FirstName = "First Name", LastName = "Last Name" }; dbContext.Movies.Add(movie); dbContext.Persons.Add(person); await dbContext.SaveChangesAsync(); return(new object[] { movie, person }); }
public async Task <IActionResult> OnPostAsync(int?id) { const string INDEX = "./Index"; if (id == null) { return(NotFound()); } Movie = await Context.Movies.FindAsync(id); if (Movie == null) { return(RedirectToPage(INDEX)); } Context.Movies.Remove(Movie); await Context.SaveChangesAsync(); return(RedirectToPage(INDEX)); }
private async Task <object[]> CreatePersonAndMovie() { var dbContent = GetDbContext(); var movie = new Domain.Movie { Name = "Title" }; var person = new Domain.Person { FirstName = "First Name", LastName = "Last Name" }; dbContent.Movies.Add(movie); dbContent.Persons.Add(person); await dbContent.SaveChangesAsync(); return(new object[] { movie, person }); }
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 }
public void AddMovie(Domain.Movie movie) { var model = new MovieModel(movie); _context.Movies.Add(model); }
public async Task Update_ValidRequest_ReturnsJsonResponseAndOk(int id, string description, int languageID, int length, string releaseDate, string name) { #region Arrange await DeleteDbContent(); var client = GetHttpClient(); var dbContext = GetDbContext(); var language = new Domain.Language { Name = "Name" }; dbContext.Languages.Add(language); var language2 = new Domain.Language { Name = "New Name" }; dbContext.Languages.Add(language2); await dbContext.SaveChangesAsync(); var movie = new Domain.Movie { Description = "Description", LanguageID = language.ID, Length = 104, ReleaseDate = "04-10-2010", Name = "Name" }; dbContext.Movies.Add(movie); await dbContext.SaveChangesAsync(); var newMovie = new AdminMovieModel { ID = id, Description = description, LanguageID = languageID, Length = length, ReleaseDate = DateTime.Parse(releaseDate), Name = name }; var expectedMovie = new MovieModel { ID = id, Description = description, Language = new LanguageModel { ID = language2.ID, Name = language2.Name }, Length = length, ReleaseDate = releaseDate, Name = name }; #endregion #region Act var response = await client.PutAsJsonAsync($"/api/movie/{id}", newMovie); var responseBody = await response.Content.ReadAsStreamAsync(); var actualMovie = await JsonSerializer.DeserializeAsync <MovieModel>(responseBody); #endregion #region Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(expectedMovie.ID, actualMovie.ID); Assert.Equal(expectedMovie.Description, actualMovie.Description); 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 }