public void NoInputsShouldHaveNextWithTopBeingTheMaxAndSkipBeingCountAndRcBeing50NoPreviousRegardlessOfMaxCount() { var ctx = GetActionExecutingContext(); var builder = new PaginationMetadataBuilder(); var ret = builder.Build(100, ctx); Assert.NotNull(ret); Assert.NotNull(ret.Next); Assert.Contains("top=100", ret.Next); Assert.Contains("skip=100", ret.Next); Assert.Contains("runningCount=100", ret.Next); Assert.Null(ret.Previous); ctx = GetActionExecutingContext(); builder = new PaginationMetadataBuilder(); ret = builder.Build(10, ctx); Assert.NotNull(ret); Assert.NotNull(ret.Next); Assert.Contains("top=10", ret.Next); Assert.Contains("skip=10", ret.Next); Assert.Contains("runningCount=10", ret.Next); Assert.Null(ret.Previous); }
public void ResultsLessThanTopSoNextShouldBeNullButPreviousShouldHaveValue() { var ctx = GetActionExecutingContext(); ctx.HttpContext.Request.QueryString = new QueryString("?top=10&skip=10&runningCount=10"); var builder = new PaginationMetadataBuilder(); var ret = builder.Build(3, ctx); Assert.NotNull(ret.Previous); Assert.Null(ret.Next); }
public void ResultsLessThanTopButNonPaginationQueryParamsPassedSoNextAndPreviousShouldBeNull() { var ctx = GetActionExecutingContext(); ctx.HttpContext.Request.QueryString = new QueryString("?OrderBy=foo.bar"); var builder = new PaginationMetadataBuilder(); var ret = builder.Build(9, ctx); Assert.Null(ret.Previous); Assert.NotNull(ret.Next); }
public void NoResultsPaginationShouldBeEmpty() { var ctx = GetActionExecutingContext(); ctx.HttpContext.Request.QueryString = new QueryString("?$top=2&$skip=5&rc=7"); var builder = new PaginationMetadataBuilder(); var ret = builder.Build(0, ctx); Assert.Null(ret.Previous); Assert.Null(ret.Next); Assert.True(ret.ResultCount == 0); }
public void IncomingTopIsMoreThanSkipAndRcEqualsSkipSoNextValuesShouldBeCorrect() { var ctx = GetActionExecutingContext(); ctx.HttpContext.Request.QueryString = new QueryString("?top=5&skip=3&rc=3"); var builder = new PaginationMetadataBuilder(); var ret = builder.Build(10, ctx); Assert.NotNull(ret.Previous); Assert.NotNull(ret.Next); Assert.Contains("skip=8", ret.Next); Assert.Contains("top=5", ret.Next); Assert.Contains("runningCount=13", ret.Next); }
public void IncomingTopButNoSkipAndNoRcSoFirstCallShouldHaveNextButNoPrevious() { var ctx = GetActionExecutingContext(); ctx.HttpContext.Request.QueryString = new QueryString("?top=10"); var builder = new PaginationMetadataBuilder(); var ret = builder.Build(100, ctx); Assert.Null(ret.Previous); Assert.NotNull(ret.Next); Assert.Contains("skip=10", ret.Next); Assert.Contains("top=10", ret.Next); Assert.Contains("runningCount=100", ret.Next); }
public void IncomingAliasTests() { var ctx = GetActionExecutingContext(); ctx.HttpContext.Request.QueryString = new QueryString("?take=2&offSet=5&rc=7&$SORTBY=foo.bar"); var builder = new PaginationMetadataBuilder(); var ret = builder.Build(10, ctx); Assert.NotNull(ret.Previous); Assert.NotNull(ret.Next); Assert.Contains("skip=7", ret.Next); Assert.Contains("top=2", ret.Next); Assert.Contains("runningCount=17", ret.Next); Assert.Contains("$SORTBY=foo.bar", ret.Next); }
public void WhenTopOrSkipAreDisregardedOrMissingRcShouldBeDisregardedAsWell() { var ctx = GetActionExecutingContext(); ctx.HttpContext.Request.QueryString = new QueryString("?skip=0&runningCount=10"); var builder = new PaginationMetadataBuilder(); var ret = builder.Build(100, ctx); Assert.NotNull(ret); Assert.NotNull(ret.Next); Assert.Contains("top=100", ret.Next); Assert.Contains("skip=100", ret.Next); Assert.Contains("runningCount=100", ret.Next); Assert.Null(ret.Previous); }
public void ShouldTreatZerosAsNoInputsSoShouldHaveNextNoPrevious() { var ctx = GetActionExecutingContext(); ctx.HttpContext.Request.QueryString = new QueryString("?top=0&skip=0&runningCount=0"); var builder = new PaginationMetadataBuilder(); var ret = builder.Build(100, ctx); Assert.NotNull(ret); Assert.NotNull(ret.Next); Assert.Contains("top=100", ret.Next); Assert.Contains("skip=100", ret.Next); Assert.Contains("runningCount=100", ret.Next); Assert.Null(ret.Previous); ctx = GetActionExecutingContext(); ctx.HttpContext.Request.QueryString = new QueryString("?top=100&skip=0&runningCount=0"); builder = new PaginationMetadataBuilder(); ret = builder.Build(100, ctx); Assert.NotNull(ret); Assert.NotNull(ret.Next); Assert.Contains("top=100", ret.Next); Assert.Contains("skip=100", ret.Next); Assert.Contains("runningCount=100", ret.Next); Assert.Null(ret.Previous); ctx = GetActionExecutingContext(); ctx.HttpContext.Request.QueryString = new QueryString("?$skip=0"); builder = new PaginationMetadataBuilder(); ret = builder.Build(100, ctx); Assert.NotNull(ret); Assert.NotNull(ret.Next); Assert.Contains("top=100", ret.Next); Assert.Contains("skip=100", ret.Next); Assert.Contains("runningCount=100", ret.Next); Assert.Null(ret.Previous); }
public void ResourcesGetLinks_returns_previous_and_next_links() { var pagination = new PaginationMetadataBuilder() .HasPrevious() .HasNext() .Build(); var resourcesGetLinks = _controller.ResourcesGetLinks <object>(null, pagination); resourcesGetLinks .Any(l => l.Rel.Equals(HateoasConfig.Relationships.NextPage)) .ShouldBeTrue(); resourcesGetLinks .Any(l => l.Rel.Equals(HateoasConfig.Relationships.PreviousPage)) .ShouldBeTrue(); }
public void ResourcesGetLinks_returns_current_for_empty_list() { var pagination = new PaginationMetadataBuilder() .WithPage(1) .WithPageSize(20) .WithTotalCount(0) .Build(); var resourcesGetLinks = _controller.ResourcesGetLinks <object>(null, pagination); resourcesGetLinks .Any(l => l.Rel.Equals(HateoasConfig.Relationships.NextPage)) .ShouldBeFalse(); resourcesGetLinks .Any(l => l.Rel.Equals(HateoasConfig.Relationships.PreviousPage)) .ShouldBeFalse(); }
public void ResourcesGetLinks_returns_current_page_only_for_single_page_lists() { var pagination = new PaginationMetadataBuilder() .Build(); var resourcesGetLinks = _controller.ResourcesGetLinks <object>(null, pagination); resourcesGetLinks .Any(l => l.Rel.Equals(HateoasConfig.Relationships.CurrentPage)) .ShouldBeTrue(); resourcesGetLinks .Any(l => l.Rel.Equals(HateoasConfig.Relationships.NextPage)) .ShouldBeFalse(); resourcesGetLinks .Any(l => l.Rel.Equals(HateoasConfig.Relationships.PreviousPage)) .ShouldBeFalse(); }
public void ShouldContainExtraStuffSentInQuery() { var ctx = GetActionExecutingContext(); ctx.HttpContext.Request.QueryString = new QueryString("?top=10&myExtraData=999"); var builder = new PaginationMetadataBuilder(); var ret = builder.Build(100, ctx); Assert.NotNull(ret); Assert.NotNull(ret.Next); Assert.Contains("top=10", ret.Next); Assert.Contains("skip=100", ret.Next); Assert.Contains("runningCount=100", ret.Next); Assert.Contains("myExtraData=999", ret.Next); Assert.Null(ret.Previous); }
public void IncomingTopSkipAndRcSoShouldHaveNextAndPreviousTopShouldNeverBeMoreThanMax() { var ctx = GetActionExecutingContext(); ctx.HttpContext.Request.QueryString = new QueryString("?top=10&skip=10&runningCount=10"); var builder = new PaginationMetadataBuilder(); var ret = builder.Build(100, ctx); Assert.NotNull(ret.Previous); Assert.NotNull(ret.Next); Assert.Contains("skip=20", ret.Next); Assert.Contains("top=10", ret.Next); Assert.Contains("runningCount=110", ret.Next); // RC should be gone Assert.Contains("top=10", ret.Previous); Assert.DoesNotContain("skip=", ret.Previous); Assert.DoesNotContain("runningCount=", ret.Previous); }