public void it_should_apply_the_query_paging_and_ordering_when_the_pagingAndSortingInfo_parameter_is_not_null() { var sut = new QueryHandler_SpecificQuery_Mock(); var title = "wa"; var queryObject = new FindMoviesByTitleQuery(title); var property = sut.GetType().GetProperty("InitialItems", BindingFlags.DeclaredOnly | BindingFlags.NonPublic | BindingFlags.Instance); var items = (IQueryable<Movie>)property.GetValue(sut); var pagingInfo = new PagingAndSortingInfo(page: 2, pageSize: 1); var pageIndex = pagingInfo.Page - 1; var expectedItems = items.Where(x => x.Title.ToLower().Contains(title.ToLower())); var expectedPagedItems = expectedItems.OrderByDescending(x => x.ID).Skip(pageIndex * pagingInfo.PageSize).Take(pagingInfo.PageSize); var res = sut.HandleQuery(queryObject, pagingInfo); res.Should().NotBeNull(); res.VirtualRowsCount.Should().Be(expectedItems.Count()); res.Results.Should().NotBeNull() .And.HaveCount(expectedPagedItems.Count()); expectedPagedItems.ToList().ForEach(z => { var item = res.Results.FirstOrDefault(x => x.ID.Equals(z.ID)); item.Should().NotBeNull("The expected item should belong to the res list"); }); }
public void it_should_order_in_descending_mode_when_the_order_fiels_is_not_null_and_the_order_direction_is_Descending() { var sut = new QueryPageAndSortingBaseMock(); var items = Builder<Movie>.CreateListOfSize(10).Build().AsQueryable(); var expectedItems = items.OrderByDescending(x => x.ID); var methodInfo = sut.GetType().GetMethod("ApplyPagingAndSorting", BindingFlags.Instance | BindingFlags.NonPublic); var pagingInfo = new PagingAndSortingInfo(orderByField: "ID", orderDirection: OrderDirection.Descending); var res = (IQueryable<Movie>)methodInfo.Invoke(sut, new object[] { items, pagingInfo }); res.Should().NotBeNull() .And.HaveCount(items.Count()) .And.ContainInOrder(expectedItems); }
public void it_should_apply_the_default_order_when_the_order_field_is_null_or_empty() { var sut = new QueryPageAndSortingBaseMock(); var items = Builder<Movie>.CreateListOfSize(10).Build().AsQueryable(); var expectedItems = items.OrderByDescending(x => x.Title); var methodInfo = sut.GetType().GetMethod("ApplyPagingAndSorting", BindingFlags.Instance | BindingFlags.NonPublic); var pagingInfo = new PagingAndSortingInfo(orderByField: string.Empty); var res = (IQueryable<Movie>)methodInfo.Invoke(sut, new object[] { items, pagingInfo }); res.Should().NotBeNull() .And.HaveCount(items.Count()) .And.ContainInOrder(expectedItems); }
public void it_should_apply_paging_and_sorting_when_the_pagingAndSortingInfo_parameter_is_not_null() { var sut = new QueryHandlerBaseMock(); var items = Builder<Movie>.CreateListOfSize(20).Build().AsQueryable(); var paging = new PagingAndSortingInfo(orderByField: "ID"); var pageIndex = paging.Page - 1; var expectedItems = items.OrderBy(x => x.ID).Skip(pageIndex * paging.PageSize).Take(paging.PageSize); var methodInfo = sut.GetType().GetMethod("HandleCustomQuery", BindingFlags.NonPublic | BindingFlags.Instance); var res = (IQueryable<Movie>)methodInfo.Invoke(sut, new object[] { items, paging }); res.Should().NotBeNull() .And.HaveCount(expectedItems.Count()) .And.ContainInOrder(expectedItems); }
public void it_should_sort_descending_and_page_using_the_specified_order_field_when_order_field_is_not_null_nor_empty() { var items = Builder<Movie>.CreateListOfSize(10).Build().AsQueryable(); var sut = new FindMoviesByTitleQueryHandlerBuilder().SetMovies(items).Build(); var query = new FindMoviesByTitleQuery(string.Empty); var pagingAndSortingInfo = new PagingAndSortingInfo(3, 3, "ID", OrderDirection.Descending); var processedItems = items.OrderByDescending(x => x.ID).Skip(6).Take(3); var res = sut.HandleQuery(query, pagingAndSortingInfo); res.Should().NotBeNull(); res.VirtualRowsCount.Should().Be(10); res.Results.Should().NotBeNull() .And.HaveCount(3) .And.ContainInOrder(processedItems); }
public void it_should_paginate_the_results() { var sut = new QueryPageAndSortingBaseMock(); var page = 3; var pageSize = 4; var pageIndex = page - 1; var pagingInfo = new PagingAndSortingInfo(orderByField: "Title", orderDirection: OrderDirection.Descending, page: page, pageSize: pageSize); var items = Builder<Movie>.CreateListOfSize(20).Build().AsQueryable(); var expectedItems = items.OrderByDescending(x => x.Title).Skip(pageIndex * pageSize).Take(pageSize); var methodInfo = sut.GetType().GetMethod("ApplyPagingAndSorting", BindingFlags.Instance | BindingFlags.NonPublic); var res = (IQueryable<Movie>)methodInfo.Invoke(sut, new object[] { items, pagingInfo }); res.Should().NotBeNull() .And.HaveCount(pageSize) .And.ContainInOrder(expectedItems); }
public void it_should_return_all_the_movies_paging_when_the_pagingAndSortingInfo_parameter_is_not_null() { var builder = new MovieQueryManagerBuilder() .SetupMoviesQueryRepositoryMockWithDefaultMovies(); var movies = builder.GetDefaultMovies(); var sut = builder.Build(); var page = 3; var pageIndex = page - 1; var pageSize = 3; var pagingAndSortingInfo = new PagingAndSortingInfo(page: page, pageSize: pageSize, orderByField: "Title", orderDirection: OrderDirection.Descending); var pagedMovies = movies.OrderByDescending(x => x.Title).Skip(pageIndex * pageSize).Take(pageSize); var res = sut.FindAll(pagingAndSortingInfo); res.Should().NotBeNull(); res.VirtualRowsCount.Should().Be(pageSize); res.Results.Should().NotBeNull().And.ContainInOrder(pagedMovies); }