Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }