public async Task PageSize_IsRespected() { var request = new DummyPagedRequest { Logger = logger, PageSize = 22 }; // If the correct page size isn't passed in the query string then the // test will fail because the mock http client won't have a response // matches the supplied URL. SetupRequest("api/dummy?p=1&ps=22", @" { ""dummyResponses"": [ { ""key"": ""cs"", ""name"": ""C#"", }, { ""key"": ""vbnet"", ""name"": ""VB.NET"" } ] }"); var result = await request.InvokeAsync(client, CancellationToken.None); result.Should().HaveCount(2); }
public async Task MaxItemCount_RetrievesTheSpecifiedNumberOfPages(bool shouldLimit) { var request = new DummyPagedRequest { Logger = logger, }; if (shouldLimit) { request.ItemsLimit = 1100; } SetupRequest("api/dummy?p=1&ps=500", $@" {{ ""paging"": {{ ""pageIndex"": 1, ""pageSize"": 4, ""total"": 1000 }}, ""dummyResponses"": [ {string.Join(",\n", Enumerable.Range(1, 500).Select(i => $@"{{ ""key"": ""{i}"", ""name"": ""Name{i}"" }}"))} ] }}"); SetupRequest("api/dummy?p=2&ps=500", $@" {{ ""paging"": {{ ""pageIndex"": 2, ""pageSize"": 4, ""total"": 1000 }}, ""dummyResponses"": [ {string.Join(",\n", Enumerable.Range(500, 500).Select(i => $@"{{ ""key"": ""{i}"", ""name"": ""Name{i}"" }}"))} ] }}"); SetupRequest("api/dummy?p=3&ps=500", $@" {{ ""paging"": {{ ""pageIndex"": 3, ""pageSize"": 4, ""total"": 1000 }}, ""dummyResponses"": [ {string.Join(",\n", Enumerable.Range(1000, 500).Select(i => $@"{{ ""key"": ""{i}"", ""name"": ""Name{i}"" }}"))} ] }}"); SetupRequest("api/dummy?p=4&ps=500", $@" {{ ""paging"": {{ ""pageIndex"": 3, ""pageSize"": 4, ""total"": 1000 }}, ""dummyResponses"": [ {string.Join(",\n", Enumerable.Range(1500, 100).Select(i => $@"{{ ""key"": ""{i}"", ""name"": ""Name{i}"" }}"))} ] }}"); var expectedCount = shouldLimit ? 1100 : 1600; var result = await request.InvokeAsync(client, CancellationToken.None); result.Should().HaveCount(expectedCount); }
public async Task RequestPageSize_IsRespected() { var request = new DummyPagedRequest { Logger = logger, PageSize = 4 }; // Full page of data SetupRequest("api/dummy?p=1&ps=4", $@" {{ ""paging"": {{ ""pageIndex"": 1, ""pageSize"": 4, ""total"": 10 }}, ""dummyResponses"": [ {string.Join(",\n", Enumerable.Range(1, 4).Select(i => $@"{{ ""key"": ""{i}"", ""name"": ""Name{i}"" }}"))} ] }}"); // Full page of data SetupRequest("api/dummy?p=2&ps=4", $@" {{ ""paging"": {{ ""pageIndex"": 2, ""pageSize"": 4, ""total"": 10 }}, ""dummyResponses"": [ {string.Join(",\n", Enumerable.Range(5, 4).Select(i => $@"{{ ""key"": ""{i}"", ""name"": ""Name{i}"" }}"))} ] }}"); // Partial page of data - should stop SetupRequest("api/dummy?p=3&ps=4", $@" {{ ""paging"": {{ ""pageIndex"": 3, ""pageSize"": 2, ""total"": 10 }}, ""dummyResponses"": [ {string.Join(",\n", Enumerable.Range(9, 2).Select(i => $@"{{ ""key"": ""{i}"", ""name"": ""Name{i}"" }}"))} ] }}"); // Additional page - should never be requested SetupRequest("api/dummy?p=4&ps=4", $@" {{ ""paging"": {{ ""pageIndex"": 4, ""pageSize"": 2, ""total"": 10 }}, ""dummyResponses"": [ {string.Join(",\n", Enumerable.Range(11, 2).Select(i => $@"{{ ""key"": ""{i}"", ""name"": ""Name{i}"" }}"))} ] }}"); var result = await request.InvokeAsync(client, CancellationToken.None); // Should stop after two pages of data result.Should().HaveCount(10); }