public async Task ShouldReturnPagination_WithOrderDescendingBy(string orderBy) { // Arrange & Act var filter = new CityPaginationFilterDto { OrderBy = orderBy, OrderDirection = Shared.Enums.OrderDirection.Descending }; var result = await ArrangeAndAct(filter); // Assert switch (orderBy) { case nameof(CityDto.Name): result.Items.Should().BeInDescendingOrder(c => c.Name); break; case nameof(CityDto.Population): result.Items.Should().BeInDescendingOrder(c => c.Population); break; case nameof(CityDto.Established): result.Items.Should().BeInDescendingOrder(c => c.Established); break; } }
public async Task <IActionResult> GetPaginatedAsync([FromQuery] CityPaginationFilterDto filterDto) { var request = new GetPaginatedRequest { Filter = filterDto }; var response = await _mediator.Send(request); return(Ok(response)); }
private async Task <PaginatedDto <CityDto> > ArrangeAndAct(CityPaginationFilterDto filter = null) { // Arrange var query = new GetPaginatedRequest { Filter = filter }; // Act var result = await SendAsync(query); return(result); }
public async Task ShouldReturnPagination_WithFilterName(string namePart) { // Arrange & Act var filter = new CityPaginationFilterDto { Name = namePart }; var result = await ArrangeAndAct(filter); // Assert result.Items.ForEach(c => { c.Name.ToLowerInvariant().Should().Contain(namePart.ToLowerInvariant()); }); }
public async Task ShouldReturnLastPagePagination_WithPageIndexBeingThree() { // Arrange & Act const int pageIndex = 3; var filter = new CityPaginationFilterDto { PageIndex = pageIndex }; var result = await ArrangeAndAct(filter); // Assert result.PageIndex.Should().Be(result.TotalPages, "If the request's page index is greater than total pages, resulting index is a last page"); result.PageIndex.Should().NotBe(pageIndex, $"{pageIndex} is greater than total pages."); result.TotalPages.Should().BeLessThan(pageIndex); }
public async Task ShouldReturnPagination_WithFilterPopulation(int populationFrom, int populationTo) { // Arrange & Act var filter = new CityPaginationFilterDto { PopulationFrom = populationFrom, PopulationTo = populationTo }; var result = await ArrangeAndAct(filter); // Assert result.Items.ForEach(c => { c.Population.Should().BeGreaterOrEqualTo(populationFrom); c.Population.Should().BeLessThan(populationTo); }); }
public async Task ShouldReturnPagination_WithFilterEstablished(int dateFrom, int dateTo) { // Arrange & Act var after = new DateTime(dateFrom, 1, 1); var before = new DateTime(dateTo, 1, 1); var filter = new CityPaginationFilterDto { DateFrom = new DateTime(dateFrom, 1, 1), DateTo = new DateTime(dateTo, 1, 1) }; var result = await ArrangeAndAct(filter); // Assert result.Items.ForEach(c => { c.Established.Should().BeOnOrAfter(after); c.Established.Should().BeOnOrBefore(before); }); }