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()); }
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)); }