Esempio n. 1
0
        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
        }
Esempio n. 3
0
        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
        }
Esempio n. 5
0
        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
        }
Esempio n. 7
0
 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
        }
Esempio n. 9
0
 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;
 }
Esempio n. 10
0
        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
        }
Esempio n. 13
0
        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));
        }
Esempio n. 15
0
        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 });
        }
Esempio n. 16
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);
            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
        }
Esempio n. 17
0
        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
        }