예제 #1
0
 public Task <PagedList <Transaction> > GetAsync(TransactionQueryParameters parameters)
 {
     return(PagedList <Transaction> .ToPagedListAsync(
                _ctx.QueryAll <Transaction>().CreatePredicate(parameters).OrderByDescending(o => o.DateLocal),
                parameters.PageNumber,
                parameters.PageSize));
 }
예제 #2
0
        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();
                }
            }
        }