public async Task WhenGetPagedList_ThenSuccess()
        {
            var headers = await _defaultRequestHeadersService.GetAsync();

            var source = await _create.CustomerSource.BuildAsync();

            var customer = await _create.Customer
                           .WithSourceId(source.Id)
                           .BuildAsync();

            await Task.WhenAll(
                _create.CustomerComment
                .WithCustomerId(customer.Id)
                .BuildAsync(),
                _create.CustomerComment
                .WithCustomerId(customer.Id)
                .BuildAsync());

            var request = new CustomerCommentGetPagedListRequest
            {
                CustomerId = customer.Id
            };

            var response = await _customerCommentsClient.GetPagedListAsync(request, headers);

            var results = response.Comments
                          .Skip(1)
                          .Zip(response.Comments, (previous, current) => current.CreateDateTime >= previous.CreateDateTime);

            Assert.NotEmpty(response.Comments);
            Assert.All(results, Assert.True);
        }
        public async Task WhenCreate_ThenSuccess()
        {
            var headers = await _defaultRequestHeadersService.GetAsync();

            var source = await _create.CustomerSource.BuildAsync();

            var customer = await _create.Customer
                           .WithSourceId(source.Id)
                           .BuildAsync();

            var comment = new CustomerComment
            {
                Id         = Guid.NewGuid(),
                CustomerId = customer.Id,
                Value      = "Test".WithGuid()
            };

            await _customerCommentsClient.CreateAsync(comment, headers);

            var request = new CustomerCommentGetPagedListRequest
            {
                CustomerId = customer.Id
            };

            var createdComment = (await _customerCommentsClient.GetPagedListAsync(request, headers)).Comments.First();

            Assert.NotNull(createdComment);
            Assert.Equal(comment.CustomerId, createdComment.CustomerId);
            Assert.True(!createdComment.CommentatorUserId.IsEmpty());
            Assert.Equal(comment.Value, createdComment.Value);
            Assert.True(createdComment.CreateDateTime.IsMoreThanMinValue());
        }
Esempio n. 3
0
        public async Task <CustomerCommentGetPagedListResponse> GetPagedListAsync(
            CustomerCommentGetPagedListRequest request,
            CancellationToken ct)
        {
            var queryable = _storage.CustomerComments
                            .AsNoTracking()
                            .Where(x =>
                                   x.CustomerId == request.CustomerId &&
                                   (!request.BeforeCreateDateTime.HasValue || x.CreateDateTime < request.BeforeCreateDateTime) &&
                                   (!request.AfterCreateDateTime.HasValue || x.CreateDateTime > request.AfterCreateDateTime));

            var minCreateDateTime = _storage.CustomerComments
                                    .AsNoTracking()
                                    .Where(x => x.CustomerId == request.CustomerId)
                                    .Min(x => x != null ? x.CreateDateTime : (DateTime?)null);

            var comments = await queryable
                           .SortBy(request.SortBy, request.OrderBy)
                           .Take(request.Limit)
                           .ToListAsync(ct);

            return(new CustomerCommentGetPagedListResponse
            {
                HasCommentsBefore = comments.Any() && minCreateDateTime < comments.Min(x => x.CreateDateTime),
                Comments = comments
            });
        }
 public Task <CustomerCommentGetPagedListResponse> GetPagedListAsync(
     CustomerCommentGetPagedListRequest request,
     Dictionary <string, string> headers = default,
     CancellationToken ct = default)
 {
     return(_factory.PostAsync <CustomerCommentGetPagedListResponse>(
                _host + "/Customers/Comments/v1/GetPagedList", null, request, headers, ct));
 }
        public async Task <ActionResult <CustomerCommentGetPagedListResponse> > GetPagedList(
            CustomerCommentGetPagedListRequest request,
            CancellationToken ct = default)
        {
            var customer = await _customersService.GetAsync(request.CustomerId, false, ct);

            var response = await _customerCommentsService.GetPagedListAsync(request, ct);

            return(ReturnIfAllowed(response, Roles.Customers, customer.AccountId));
        }