Example #1
0
        public void GetMovieDetailsSuccess1()
        {
            /*
             * Assert that the GET movie endpoint receives a 200 response, verify response body
             * 1.  Send call to get endpoint 3/movie/{movieId}?api_key={apiKey}&language=en-US where movie id is 274
             * 2.  Assert that response code is 200
             * 3.  Assert that the movie title is correct
             */
            //new requests object
            APIs api = new APIs();
            //send get call with appropriate endpoint and apikey
            //var response = requests.Get(Endpoint: string.Format(@"3/movie/{0}?api_key={1}&language=en-US", "274", apiKey));
            var response = api.Movies.MovieDetails(MovieId: "274").Get();
            MovieDetailsResponse detailsObject = null;

            try
            {
                //deserialize json response
                detailsObject = JsonConvert.DeserializeObject <MovieDetailsResponse>(response.Content.ReadAsStringAsync().Result);
            }
            catch (JsonReaderException jsonEx)
            {
                //fail test if deserialization fails
                Assert.Fail(string.Format("Unable to deserialize response.  Exception: {0}"), jsonEx);
            }
            //assert that response has a 200 OK code
            Assert.AreEqual(200, (int)response.StatusCode);
            //assert that the movie title is correct in the response body
            Assert.AreEqual("The Silence of the Lambs", detailsObject.title);
        }
Example #2
0
        public async Task <MovieDetailsResponse> GetMovieById(int id)
        {
            var movieDetail = new MovieDetailsResponse();
            var movie       = await _repository.GetByIdAsync(id);

            movieDetail.Id               = movie.Id;
            movieDetail.Title            = movie.Title;
            movieDetail.Overview         = movie.Overview;
            movieDetail.Tagline          = movie.Tagline;
            movieDetail.Budget           = movie.Budget;
            movieDetail.Revenue          = movie.Revenue;
            movieDetail.ImdbUrl          = movie.ImdbUrl;
            movieDetail.TmdbUrl          = movie.TmdbUrl;
            movieDetail.PosterUrl        = movie.PosterUrl;
            movieDetail.BackdropUrl      = movie.BackdropUrl;
            movieDetail.OriginalLanguage = movie.OriginalLanguage;
            movieDetail.ReleaseDate      = movie.ReleaseDate;
            movieDetail.RunTime          = movie.RunTime;
            movieDetail.Price            = movie.Price;
            movieDetail.Genres           = new List <GenreModel>();
            foreach (var genre in movie.Genres)
            {
                movieDetail.Genres.Add(new GenreModel
                {
                    Id   = genre.Id,
                    Name = genre.Name
                });
            }

            movieDetail.Casts = new List <CastResponseModel>();
            foreach (var mc in movie.MovieCasts)
            {
                movieDetail.Casts.Add(new CastResponseModel
                {
                    Id          = mc.Cast.Id,
                    Name        = mc.Cast.Name,
                    Gender      = mc.Cast.Gender,
                    TmdbUrl     = mc.Cast.TmdbUrl,
                    ProfilePath = mc.Cast.ProfilePath,
                    Character   = mc.Character
                });
            }

            if (movie.Reviews.Any())
            {
                decimal rating = 0;
                foreach (var review in movie.Reviews)
                {
                    rating += review.Rating;
                }

                movieDetail.Rating = rating / movie.Reviews.Count();
            }

            return(movieDetail);
        }
Example #3
0
        public async Task <IEnumerable <MovieDetailsResponse> > GetTopGrossingMovies()
        {
            var movieDetails = new List <MovieDetailsResponse>();
            var movies       = await _repository.GetTopRevenueMovies();

            foreach (var movie in movies)
            {
                var movieCard = new MovieDetailsResponse
                {
                    Id        = movie.Id,
                    PosterUrl = movie.PosterUrl,
                    Revenue   = movie.Revenue,
                    Title     = movie.Title
                };
                movieDetails.Add(movieCard);
            }

            return(movieDetails);
        }
Example #4
0
        public async Task <PaginationResponse <MovieDetailsResponse> > GetMoviesByGenreId(int genreId, int pageNumber = 0,
                                                                                          int pageSize = 30)
        {
            var movies = await _repository.GetMoviesByGenreId(genreId, pageNumber, pageSize);

            var movieResponses = new PaginationResponse <MovieDetailsResponse>
            {
                PageNumber = pageNumber,
                PageSize   = pageSize,
                Data       = new List <MovieDetailsResponse>()
            };

            foreach (var movie in movies.Data)
            {
                var movieDetail = new MovieDetailsResponse();
                movieDetail.Id               = movie.Id;
                movieDetail.Title            = movie.Title;
                movieDetail.Overview         = movie.Overview;
                movieDetail.Tagline          = movie.Tagline;
                movieDetail.Budget           = movie.Budget;
                movieDetail.Revenue          = movie.Revenue;
                movieDetail.ImdbUrl          = movie.ImdbUrl;
                movieDetail.TmdbUrl          = movie.TmdbUrl;
                movieDetail.PosterUrl        = movie.PosterUrl;
                movieDetail.BackdropUrl      = movie.BackdropUrl;
                movieDetail.OriginalLanguage = movie.OriginalLanguage;
                movieDetail.ReleaseDate      = movie.ReleaseDate;
                movieDetail.RunTime          = movie.RunTime;
                movieDetail.Price            = movie.Price;

                movieDetail.Genres = new List <GenreModel>();

                foreach (var genre in movie.Genres)
                {
                    movieDetail.Genres.Add(new GenreModel
                    {
                        Id   = genre.Id,
                        Name = genre.Name
                    });
                }

                movieDetail.Casts = new List <CastResponseModel>();
                foreach (var mc in movie.MovieCasts)
                {
                    movieDetail.Casts.Add(new CastResponseModel
                    {
                        Id          = mc.Cast.Id,
                        Name        = mc.Cast.Name,
                        Gender      = mc.Cast.Gender,
                        TmdbUrl     = mc.Cast.TmdbUrl,
                        ProfilePath = mc.Cast.ProfilePath,
                        Character   = mc.Character
                    });
                }

                if (movie.Reviews.Any())
                {
                    decimal rating = 0;
                    foreach (var review in movie.Reviews)
                    {
                        rating += review.Rating;
                    }

                    movieDetail.Rating = rating / movie.Reviews.Count();
                }

                movieResponses.Data.Add(movieDetail);
            }

            return(movieResponses);
        }
Example #5
0
        public async Task <MovieDetailsResponse> BuyMovie(int id)
        {
            var movie = await _repository.GetByIdAsync(id);

            if (movie == null)
            {
                return(null);
            }
            var purchase = new Purchase
            {
                UserId         = _currentUser.UserId,
                TotalPrice     = movie.Price,
                MovieId        = id,
                PurchaseNumber = Guid.NewGuid()
            };

            await _purchaseRepository.AddAsync(purchase);

            if (purchase.Id > 0)
            {
                var movieDetail = new MovieDetailsResponse();
                movieDetail.Id               = movie.Id;
                movieDetail.Title            = movie.Title;
                movieDetail.Overview         = movie.Overview;
                movieDetail.Tagline          = movie.Tagline;
                movieDetail.Budget           = movie.Budget;
                movieDetail.Revenue          = movie.Revenue;
                movieDetail.ImdbUrl          = movie.ImdbUrl;
                movieDetail.TmdbUrl          = movie.TmdbUrl;
                movieDetail.PosterUrl        = movie.PosterUrl;
                movieDetail.BackdropUrl      = movie.BackdropUrl;
                movieDetail.OriginalLanguage = movie.OriginalLanguage;
                movieDetail.ReleaseDate      = movie.ReleaseDate;
                movieDetail.RunTime          = movie.RunTime;
                movieDetail.Price            = movie.Price;
                movieDetail.Genres           = new List <GenreModel>();
                foreach (var genre in movie.Genres)
                {
                    movieDetail.Genres.Add(new GenreModel
                    {
                        Id   = genre.Id,
                        Name = genre.Name
                    });
                }

                movieDetail.Casts = new List <CastResponseModel>();
                foreach (var mc in movie.MovieCasts)
                {
                    movieDetail.Casts.Add(new CastResponseModel
                    {
                        Id          = mc.Cast.Id,
                        Name        = mc.Cast.Name,
                        Gender      = mc.Cast.Gender,
                        TmdbUrl     = mc.Cast.TmdbUrl,
                        ProfilePath = mc.Cast.ProfilePath,
                        Character   = mc.Character
                    });
                }

                if (movie.Reviews.Any())
                {
                    decimal rating = 0;
                    foreach (var review in movie.Reviews)
                    {
                        rating += review.Rating;
                    }

                    movieDetail.Rating = rating / movie.Reviews.Count();
                }

                return(movieDetail);
            }

            return(null);
        }