public Task <PagedList <Transaction> > GetAsync(TransactionQueryParameters parameters) { return(PagedList <Transaction> .ToPagedListAsync( _ctx.QueryAll <Transaction>().CreatePredicate(parameters).OrderByDescending(o => o.DateLocal), parameters.PageNumber, parameters.PageSize)); }
public async Task <IActionResult> Get( [FromQuery] TransactionQueryParameters parameters, [FromServices] ITransactionStore transactionStore) { var result = await transactionStore.GetAsync(parameters); return(this.PagedOk(result)); }
public async Task WhenGetWithPageQueryParameters_ThenPagedTransactionsReturned(int pageNumber) { // Arrange var userId = Guid.NewGuid(); _userProvider.Setup(u => u.UserId).Returns(userId); var transactions = new List <Transaction> { CreateTransaction(userId), CreateTransaction(userId), CreateTransaction(userId), CreateTransaction(userId), CreateTransaction(userId), CreateTransaction(userId), }; // Act using (var ctx = this.CreateDbContext()) { ctx.AddRange(transactions); await ctx.SaveChangesAsync(); } // Assert using (var ctx = this.CreateDbContext()) { var store = new SqlTransactionStore(ctx); var queryParameters = new TransactionQueryParameters { PageNumber = pageNumber, PageSize = 2 }; var result = await store.GetAsync(queryParameters); result.Should().HaveCount(queryParameters.PageSize); result.CurrentPage.Should().Be(queryParameters.PageNumber); result.TotalPages.Should().Be(transactions.Count / queryParameters.PageSize); result.PageSize.Should().Be(queryParameters.PageSize); result.TotalCount.Should().Be(transactions.Count); if (pageNumber == 1) { result.HasPrevious.Should().BeFalse(); result.HasNext.Should().BeTrue(); } if (pageNumber == 2) { result.HasPrevious.Should().BeTrue(); result.HasNext.Should().BeTrue(); } if (pageNumber == 3) { result.HasPrevious.Should().BeTrue(); result.HasNext.Should().BeFalse(); } } }