Exemplo n.º 1
0
        public async Task FilterWrongOrderingFieldStillReturnsMovies()
        {
            //Preparation
            var databaseName = CreateTestsData();
            var mapper       = BuildMap();
            var context      = BuildContext(databaseName);

            var context2 = BuildContext(databaseName);

            var mock = new Mock <ILogger <MoviesController> >();

            var filterMovieDto = new FilterMoviesDto()
            {
                OrderingField  = "invalid field",
                AscendingOrder = false,
                RecordsPerPage = 10
            };

            //Testing
            var controller = new MoviesController(context, mapper, null, mock.Object);

            controller.ControllerContext.HttpContext = new DefaultHttpContext();
            var response = await controller.Filter(filterMovieDto);

            //Verification
            var result       = response.Value;
            var moviesFromDb = context2.Movies.ToList();

            Assert.AreEqual(moviesFromDb.Count, result.Count);
            Assert.AreEqual(1, mock.Invocations.Count);
        }
Exemplo n.º 2
0
        public async Task FilterByInTheaters()
        {
            //Preparation
            var databaseName = CreateTestsData();
            var context      = BuildContext(databaseName);
            var mapper       = BuildMap();

            var filterMovieDto = new FilterMoviesDto()
            {
                InTheaters     = true,
                RecordsPerPage = 10
            };

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

            controller.ControllerContext.HttpContext = new DefaultHttpContext();
            var response = await controller.Filter(filterMovieDto);

            //Verification
            var result = response.Value;

            Assert.AreEqual(1, result.Count);
            Assert.AreEqual("In theater movie", result[0].Title);
        }
Exemplo n.º 3
0
        public async Task FilterByGenre()
        {
            //Preparation
            var databaseName = CreateTestsData();
            var context      = BuildContext(databaseName);
            var mapper       = BuildMap();

            var genreId = context.Genres.Select(x => x.Id).First();

            var filterMovieDto = new FilterMoviesDto()
            {
                GenreId        = genreId,
                RecordsPerPage = 10
            };

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

            controller.ControllerContext.HttpContext = new DefaultHttpContext();
            var response = await controller.Filter(filterMovieDto);

            //Verification
            var result = response.Value;

            Assert.AreEqual(1, result.Count);
            Assert.AreEqual("Movie with Genre", result[0].Title);
        }
        public async Task FilterOrderyByWrongFieldStillReturnsMovies()
        {
            var databaseName = CreateTestData();
            var mapper       = BuildMap();
            var context      = BuildContext(databaseName);

            var mock       = new Mock <ILogger <MoviesController> >();
            var controller = new MoviesController(context, mapper, null, mock.Object);

            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var filterDTO = new FilterMoviesDto()
            {
                OrderingField  = "abcd",
                AscendingOrder = false,
                RecordsPerPage = 10
            };

            var response = await controller.Filter(filterDTO);

            var result = response.Result as OkObjectResult;
            var movies = result.Value as List <MovieDto>;

            var context2     = BuildContext(databaseName);
            var moviesFromDb = context2.Movies.ToList();

            Assert.AreEqual(moviesFromDb.Count, movies.Count);
            Assert.AreEqual(1, mock.Invocations.Count);
        }
        public async Task FilterOrderByTitleDescending()
        {
            var databaseName = CreateTestData();
            var mapper       = BuildMap();
            var context      = BuildContext(databaseName);

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

            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var filterDTO = new FilterMoviesDto()
            {
                OrderingField  = "title",
                AscendingOrder = false,
                RecordsPerPage = 10
            };

            var response = await controller.Filter(filterDTO);

            var result = response.Result as OkObjectResult;
            var movies = result.Value as List <MovieDto>;

            var context2     = BuildContext(databaseName);
            var moviesFromDb = context2.Movies.OrderByDescending(x => x.Title).ToList();

            Assert.AreEqual(moviesFromDb.Count, movies.Count);
            for (int i = 0; i < moviesFromDb.Count; i++)
            {
                var movieFromController = movies[i];
                var movieFromDb         = moviesFromDb[i];

                Assert.AreEqual(movieFromDb.Id, movieFromController.Id);
            }
        }
        public async Task FilterByGenre()
        {
            var databaseName = CreateTestData();
            var mapper       = BuildMap();
            var context      = BuildContext(databaseName);

            var genreId = context.Genres.Select(x => x.Id).First();

            var context2 = BuildContext(databaseName);

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

            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var filterDTO = new FilterMoviesDto()
            {
                GenreId        = genreId,
                RecordsPerPage = 10
            };

            var response = await controller.Filter(filterDTO);

            var result = response.Result as OkObjectResult;
            var movies = result.Value as List <MovieDto>;

            Assert.AreEqual(1, movies.Count);
            Assert.AreEqual("Movie With Genre", movies[0].Title);
        }
Exemplo n.º 7
0
        public async Task <ActionResult <List <MovieDto> > > Filter([FromQuery] FilterMoviesDto filterMoviesDto)
        {
            var moviesQueryable = context.Movies.AsQueryable();

            if (!string.IsNullOrEmpty(filterMoviesDto.Title))
            {
                moviesQueryable = moviesQueryable.Where(x => x.Title.Contains(filterMoviesDto.Title));
            }

            if (filterMoviesDto.InTheaters)
            {
                moviesQueryable = moviesQueryable.Where(x => x.InTheaters);
            }

            if (filterMoviesDto.UpcomingReleases)
            {
                var today = DateTime.Today;
                moviesQueryable = moviesQueryable.Where(x => x.ReleaseDate > today);
            }

            if (filterMoviesDto.GenreId != 0)
            {
                moviesQueryable = moviesQueryable.Where(x => x.MoviesGenres.Select(y => y.GenreId).Contains(filterMoviesDto.GenreId));
            }

            await HttpContext.InsertParametersPaginationInHeader(moviesQueryable);

            var movies = await moviesQueryable.OrderBy(x => x.Title).Paginate(filterMoviesDto.PaginationDto).ToListAsync();

            return(mapper.Map <List <MovieDto> >(movies));
        }
Exemplo n.º 8
0
        public async Task <PaginatedResponse <List <Movie> > > GetMoviesFiltered(FilterMoviesDto filterMoviesDto)
        {
            var responseHTTP = await _httpService.Post <FilterMoviesDto, List <Movie> >($"{url}/filter", filterMoviesDto);

            var totalAmountPages  = int.Parse(responseHTTP.HttpResponseMessage.Headers.GetValues("totalAmountPages").FirstOrDefault());
            var paginatedResponse = new PaginatedResponse <List <Movie> >()
            {
                Response         = responseHTTP.Response,
                TotalAmountPages = totalAmountPages
            };

            return(paginatedResponse);
        }
Exemplo n.º 9
0
        public async Task <ActionResult <List <MovieDto> > > Filter([FromQuery] FilterMoviesDto filterMoviesDto)
        {
            var moviesQueryable = context.Movies.AsQueryable();

            if (!string.IsNullOrWhiteSpace(filterMoviesDto.Title))
            {
                moviesQueryable = moviesQueryable.Where(m => m.Title.Contains(filterMoviesDto.Title));
            }

            if (filterMoviesDto.InTheaters)
            {
                moviesQueryable = moviesQueryable.Where(m => m.InTheaters);
            }

            if (filterMoviesDto.UpcomingReleases)
            {
                var today = DateTime.Today;
                moviesQueryable = moviesQueryable.Where(m => m.ReleaseDate > today);
            }

            if (filterMoviesDto.GenreId != 0)
            {
                moviesQueryable = moviesQueryable
                                  .Where(m => m.MoviesGenres.Select(x => x.GenreId)
                                         .Contains(filterMoviesDto.GenreId));
            }

            if (!string.IsNullOrWhiteSpace(filterMoviesDto.OrderingField))
            {
                try
                {
                    moviesQueryable = moviesQueryable
                                      .OrderBy($"{filterMoviesDto.OrderingField} {(filterMoviesDto.AscendingOrder ? "ascending" : "descending")}");
                }
                catch
                {
                    //log error
                    logger.LogWarning("Could not order by field: " + filterMoviesDto.OrderingField);
                }
            }

            await HttpContext.InsertPaginationParametersInResponse(moviesQueryable, filterMoviesDto.RecordsPerPage);

            var movies = await moviesQueryable.Paginate(filterMoviesDto.Pagination).ToListAsync();

            return(mapper.Map <List <MovieDto> >(movies));
        }
Exemplo n.º 10
0
        public async Task <IActionResult> Filter([FromQuery] FilterMoviesDto filterMoviesDto)
        {
            IQueryable <Movie> queryable = _context.Movies;

            if (!string.IsNullOrEmpty(filterMoviesDto.Title))
            {
                queryable = queryable.Where(x => x.Title.Contains(filterMoviesDto.Title));
            }

            if (filterMoviesDto.InTheaters)
            {
                queryable = queryable.Where(x => x.InTheaters);
            }

            if (filterMoviesDto.UpcomingReleases)
            {
                var today = DateTime.Today;
                queryable = queryable.Where(x => x.ReleaseDate < today);
            }

            if (filterMoviesDto.GenreId != 0)
            {
                queryable = queryable.Where(
                    x => x.MoviesGenres.Select(c => c.GenreId).Contains(filterMoviesDto.GenreId));
            }

            if (!string.IsNullOrEmpty(filterMoviesDto.OrderingField))
            {
                try
                {
                    queryable = queryable.OrderBy($"{filterMoviesDto.OrderingField} {(filterMoviesDto.AscendingOrder ? "ascending" : "descending")}");
                }
                catch
                {
                    _logger.LogWarning("Could not order by field : " + filterMoviesDto.OrderingField);
                }
            }

            await HttpContext.InsertPaginationParametersInResponse(queryable, filterMoviesDto.RecorsPerPage);

            var movies = await queryable.Paginate(filterMoviesDto.Pagination).ToListAsync();


            return(Ok(_mapper.Map <List <MovieDto> >(movies)));
        }
Exemplo n.º 11
0
        public async Task FilterOrderByTitleDescending()
        {
            //Preparation
            var databaseName = CreateTestsData();
            var context      = BuildContext(databaseName);
            var mapper       = BuildMap();

            var context2 = BuildContext(databaseName);

            var filterMovieDto = new FilterMoviesDto()
            {
                OrderingField  = "title",
                AscendingOrder = false,
                RecordsPerPage = 10
            };

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

            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var response = await controller.Filter(filterMovieDto);

            var moviesFromDb = context2.Movies.OrderByDescending(x => x.Title).ToList();

            //Verification
            var result = response.Value;

            Assert.AreEqual(moviesFromDb.Count, result.Count);

            for (int i = 0; i < moviesFromDb.Count; i++)
            {
                var movieFromController = result[i];
                var movieFromDb         = moviesFromDb[i];

                Assert.AreEqual(movieFromDb.Id, movieFromController.Id);
            }
        }
Exemplo n.º 12
0
        public async Task FilterByInTheaters()
        {
            var databaseName = CreateTestData();
            var mapper       = BuildMap();
            var context      = BuildContext(databaseName);

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

            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var filterDTO = new FilterMoviesDto()
            {
                InTheaters     = true,
                RecordsPerPage = 10
            };

            var response = await controller.Filter(filterDTO);

            var result = response.Result as OkObjectResult;
            var movies = result.Value as List <MovieDto>;

            Assert.AreEqual(1, movies.Count);
            Assert.AreEqual("In Theaters Movie", movies[0].Title);
        }