Ejemplo n.º 1
0
        public async Task FiltrarPorCampoIncorrectoDevuelvePeliculas()
        {
            var nameDb  = CreateDataTest();
            var mapper  = ConfigurationAutoMapper();
            var context = BuildContext(nameDb);

            //var mock = new Mock<ILogger<PeliculasController>>();

            var controller = new MoviesController(context, mapper, null);

            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var filterDTO = new MovieFilterDTO()
            {
                FieldToSort    = "abc",
                AscendingOrder = false
            };

            var response = await controller.Filter(filterDTO);

            var movies = response.Value;

            var contexto2 = BuildContext(nameDb);
            var moviesDb  = contexto2.Movies.ToList();

            Assert.AreEqual(moviesDb.Count, movies.Count);
            // Assert.AreEqual(1, Mock.Invocations.Count);
        }
Ejemplo n.º 2
0
        public async Task FiltrarPorTitulo()
        {
            var nameDb  = CreateDataTest();
            var context = BuildContext(nameDb);
            var mapper  = ConfigurationAutoMapper();

            var controller = new MoviesController(context, mapper, null);

            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var titleMovie = "Movie 1";

            var filterDTO = new MovieFilterDTO()
            {
                Title          = titleMovie,
                RecordsPerPage = 10
            };

            var response = await controller.Filter(filterDTO);

            var movies = response.Value;

            Assert.AreEqual(1, movies.Count);
            Assert.AreEqual(titleMovie, movies[0].Title);
        }
Ejemplo n.º 3
0
        public async Task FiltrarTituloDescendente()
        {
            var nameDb  = CreateDataTest();
            var mapper  = ConfigurationAutoMapper();
            var context = BuildContext(nameDb);

            var controller = new MoviesController(context, mapper, null);

            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var filterDTO = new MovieFilterDTO()
            {
                FieldToSort    = "title",
                AscendingOrder = true
            };

            var response = await controller.Filter(filterDTO);

            var movies = response.Value;

            var contexto2 = BuildContext(nameDb);
            var moviesDb  = contexto2.Movies.OrderByDescending(x => x.Title).ToList();

            Assert.AreEqual(moviesDb.Count, movies.Count);

            for (int i = 0; i < moviesDb.Count; i++)
            {
                var movieOfController = movies[i];
                var movieDb           = moviesDb[i];

                Assert.AreEqual(movieDb.Id, movieOfController.Id);
            }
        }
Ejemplo n.º 4
0
        public async Task <SearchContainer <SearchMovie> > SearchMovie(MovieFilterDTO movieFilter)
        {
            if (!string.IsNullOrEmpty(movieFilter.Name))
            {
                return(await SearchByMovieName(movieFilter));
            }

            return(await SearchMovieByPersonAndReleasedDate(movieFilter));
        }
Ejemplo n.º 5
0
        public IHttpActionResult GetMovies(MovieFilterDTO param)
        {
            if (param == null || param.IsEmpty())
            {
                return(BadRequest()); // 400
            }
            var movies = this._movieService.GetMovies(param);

            if (movies == null || movies.Count < 1)
            {
                return(NotFound()); // 404
            }
            return(Ok(movies));
        }
Ejemplo n.º 6
0
        public async Task <ActionResult <List <MovieDTO> > > Filter([FromQuery] MovieFilterDTO movieFilterDto)
        {
            try
            {
                var moviesDbQueryable = this.context.Movies.AsQueryable();

                if (movieFilterDto == null)
                {
                    return(BadRequest());
                }

                if (!string.IsNullOrWhiteSpace(movieFilterDto.Title))
                {
                    movieFilterDto.Title = movieFilterDto.Title.ToUpper();
                    moviesDbQueryable    = moviesDbQueryable.Where(x => x.Title.ToUpper().Contains(movieFilterDto.Title));
                }
                if (movieFilterDto.InTheaters)
                {
                    moviesDbQueryable = moviesDbQueryable.Where(x => x.InTheaters);
                }
                if (movieFilterDto.NextReleases)
                {
                    var today = DateTime.Today;
                    moviesDbQueryable = moviesDbQueryable.Where(x => x.PremiereDate > today);
                }
                if (movieFilterDto.GenderId != 0)
                {
                    moviesDbQueryable = moviesDbQueryable.Where(x => x.MoviesGenders.Select(y => y.GenderId).Contains(movieFilterDto.GenderId));
                }


                if (!string.IsNullOrWhiteSpace(movieFilterDto.FieldToSort))
                {
                    var order = movieFilterDto.AscendingOrder ? "ascending" : "descending";
                    moviesDbQueryable = moviesDbQueryable.OrderBy($"{movieFilterDto.FieldToSort} {order}");
                }
                await HttpContext.InsertParametersPagination(moviesDbQueryable, movieFilterDto.RecordsPerPage);

                var movies = await moviesDbQueryable.Paginate(movieFilterDto.Pagination).ToListAsync();

                return(this.mapper.Map <List <MovieDTO> >(movies));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex));
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Get list of movies based on the param
        /// </summary>
        /// <param name="param">Filters</param>
        /// <returns>List of MovieDTO</returns>
        public List <MovieDTO> GetMovies(MovieFilterDTO param)
        {
            IEnumerable <MovieDTO> filterdMovies = this.Movies;

            if (!string.IsNullOrEmpty(param.Title))
            {
                filterdMovies = filterdMovies.Where(x => x.Title == param.Title);
            }
            if (!string.IsNullOrEmpty(param.Genres))
            {
                filterdMovies = filterdMovies.Where(x => x.Genres == param.Genres);
            }
            if (param.YearOfRelease != null)
            {
                filterdMovies = filterdMovies.Where(x => x.YearOfRelease == param.YearOfRelease);
            }

            return(filterdMovies.OrderByDescending(x => x.YearOfRelease).ToList());
        }
Ejemplo n.º 8
0
        public async Task FilterInCinemas()
        {
            var nameDb  = CreateDataTest();
            var context = BuildContext(nameDb);
            var mapper  = ConfigurationAutoMapper();

            var controller = new MoviesController(context, mapper, null);

            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var filterDTO = new MovieFilterDTO()
            {
                InTheaters = true
            };

            var response = await controller.Filter(filterDTO);

            var movies = response.Value;

            Assert.AreEqual(1, movies.Count);
            Assert.AreEqual("Movie in theaters", movies[0].Title);
        }
Ejemplo n.º 9
0
        public async Task FilterByGender()
        {
            var nameDb  = CreateDataTest();
            var mapper  = ConfigurationAutoMapper();
            var context = BuildContext(nameDb);

            var controller = new MoviesController(context, mapper, null);

            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var genderId = context.Genders.Select(x => x.Id).First();

            var filterDTO = new MovieFilterDTO()
            {
                GenderId = genderId
            };

            var response = await controller.Filter(filterDTO);

            var movies = response.Value;

            Assert.AreEqual(1, movies.Count);
            Assert.AreEqual("Movie with Gender", movies[0].Title);
        }
Ejemplo n.º 10
0
        private async Task <SearchContainer <SearchMovie> > SearchMovieByPersonAndReleasedDate(MovieFilterDTO movieFilter)
        {
            var discoverQuery = _client.DiscoverMoviesAsync();

            if (!string.IsNullOrEmpty(movieFilter.Persons))
            {
                var personIds = movieFilter.Persons.Split(',')
                                .Select(int.Parse)
                                .ToList();

                discoverQuery.IncludeWithAllOfPeople(personIds);
            }

            if (movieFilter.ReleaseDateAfter != null)
            {
                discoverQuery.WherePrimaryReleaseDateIsAfter(movieFilter.ReleaseDateAfter.Value);
            }

            if (movieFilter.ReleaseDateBefore != null)
            {
                discoverQuery.WherePrimaryReleaseDateIsBefore(movieFilter.ReleaseDateBefore.Value);
            }

            var result = await discoverQuery.Query(movieFilter.NumberPage.Value);

            return(result);
        }
Ejemplo n.º 11
0
 private async Task <SearchContainer <SearchMovie> > SearchByMovieName(MovieFilterDTO movieFilter)
 {
     return(await _client.SearchMovieAsync(movieFilter.Name));
 }
Ejemplo n.º 12
0
 public async Task <ActionResult <SearchContainer <SearchMovie> > > SearchMovie([FromBody] MovieFilterDTO filter)
 {
     return(Ok(await _movieRepository.SearchMovie(filter)));
 }