public async Task CanUsePagingAsync() { const int NUMBER_OF_EMPLOYEES = 1000; const int PAGE_SIZE = 100; Log.MinimumLevel = LogLevel.Warning; var employees = EmployeeGenerator.GenerateEmployees(NUMBER_OF_EMPLOYEES, companyId: "1"); await _employeeRepository.AddAsync(employees, o => o.ImmediateConsistency()); Log.MinimumLevel = LogLevel.Trace; Assert.Equal(NUMBER_OF_EMPLOYEES, await _employeeRepository.CountAsync()); var results = await _employeeRepository.GetAllAsync(new CommandOptions().PageLimit(PAGE_SIZE)); Assert.True(results.HasMore); var viewedIds = new HashSet <string>(); int pagedRecords = 0; do { Assert.Equal(PAGE_SIZE, results.Documents.Count); Assert.Equal(NUMBER_OF_EMPLOYEES, results.Total); Assert.DoesNotContain(results.Hits, h => viewedIds.Contains(h.Id)); viewedIds.AddRange(results.Hits.Select(h => h.Id)); pagedRecords += results.Documents.Count; } while (await results.NextPageAsync()); Assert.False(results.HasMore); Assert.True(employees.All(e => viewedIds.Contains(e.Id))); Assert.Equal(NUMBER_OF_EMPLOYEES, pagedRecords); }