public static CollectionPageData <T> GetExpectedPage <T> ( Page <T> expectedPage, string baseUrl, RelTypes removeRel = RelTypes.notfound ) where T : IEntity { var links = new PageLinksFormatter().GetLinks(baseUrl, expectedPage); if (removeRel != RelTypes.notfound) { var linksArray = links.Split(','); var linksList = new List <string>(); foreach (var link in linksArray) { var match = Regex.Match(link, ClientConstants.LinksPattern); var url = match.Groups[ClientConstants.UrlGroup].Value; var rel = match.Groups[ClientConstants.RelGroup].Value; Enum.TryParse(rel, out RelTypes relEnum); if (relEnum != removeRel) { linksList.Add(link); } } links = string.Join(", ", linksList); } return(new CollectionPageData <T>(expectedPage.Items, links)); }
public void BuildOnLastPageOfMany() { var links = new PageLinksFormatter().GetLinks("http://localhost/acid/base", new Page <Uom>("", 40, 30, 10, new List <Uom>())); var linksArray = links.Split(','); Assert.AreEqual(4, linksArray.Length); Assert.AreEqual("http://localhost/acid/base?searchText=&skip=30&take=10", GetUrlString(linksArray, "self")); Assert.AreEqual("http://localhost/acid/base?searchText=&skip=0&take=10", GetUrlString(linksArray, "first")); Assert.AreEqual("http://localhost/acid/base?searchText=&skip=20&take=10", GetUrlString(linksArray, "prev")); Assert.AreEqual("http://localhost/acid/base?searchText=&skip=30&take=10", GetUrlString(linksArray, "last")); }
public void Constructor() { var items = new Mock <IImmutableList <Uom> >().Object; var links = new PageLinksFormatter().GetLinks(Url, new Page <Uom>("", 40, 0, 10, new List <Uom>())); ConstructorTests <CollectionPageData <Uom> > .For(typeof(IImmutableList <Uom>), typeof(string)) .Fail(new object[] { items, null }, typeof(ArgumentNullException), "Null links") .Fail(new object[] { null, links }, typeof(ArgumentNullException), "Null items") .Succeed(new object[] { items, links }, "Constructor args valid.") .Assert(); }
public void NotPaging() { var items = new List <Uom>().ToImmutableList(); var links = new PageLinksFormatter().GetLinks(Url, new Page <Uom>("", 40, 0, 50, new List <Uom>())); var data = new CollectionPageData <Uom>(items, links); data.Links.TryGetValue(RelTypes.self, out var value); Assert.IsFalse(data.IsPaging); Assert.AreEqual(1, data.Links.Count); Assert.NotNull(value); Assert.AreEqual($"{Url}?searchText=&skip=0&take=50", value); }
public static HttpResponseMessage GetExpectedResponse <T> ( Page <T> expectedPage, string baseUrl ) where T : class, IEntity { var links = new PageLinksFormatter().GetLinks(baseUrl, expectedPage); var response = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(JsonConvert.SerializeObject(expectedPage.Items)) }; response.Headers.Add("Link", links); return(response); }
public void OnFirstPage() { var items = new List <Uom>().ToImmutableList(); var links = new PageLinksFormatter().GetLinks(Url, new Page <Uom>("", 200, 0, 50, new List <Uom>())); var expectedPagingText = PagingTextCalculator.Calculate(0, 50, 200); var data = new CollectionPageData <Uom>(items, links); Assert.IsTrue(data.IsPaging); Assert.AreEqual(4, data.Links.Count); data.Links.TryGetValue(RelTypes.self, out var selfUrl); data.Links.TryGetValue(RelTypes.first, out var firstUrl); data.Links.TryGetValue(RelTypes.next, out var nextUrl); data.Links.TryGetValue(RelTypes.last, out var lastUrl); Assert.AreEqual($"{Url}?searchText=&skip=0&take=50", selfUrl); Assert.AreEqual($"{Url}?searchText=&skip=0&take=50", firstUrl); Assert.AreEqual($"{Url}?searchText=&skip=50&take=50", nextUrl); Assert.AreEqual($"{Url}?searchText=&skip=150&take=50", lastUrl); Assert.AreEqual(expectedPagingText, data.PagingText); }