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); }
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); }
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); }
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)); }
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); }
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)); }
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))); }
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); } }
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); }