public void Count_should_be_zero_after_instantiation() { // Given, When var linkHeader = new HttpLinkBuilder(); // Then linkHeader.Count.ShouldEqual(0); }
public void Count_should_equal_four_after_adding_four_links_with_same_relation_in_different_casing() { // Given var linkBuilder = new HttpLinkBuilder(); // When linkBuilder.Add(new HttpLink("/first", "ALTERNATE")); linkBuilder.Add(new HttpLink("/first", "AlterNate")); linkBuilder.Add(new HttpLink("/first", "alternate")); linkBuilder.Add(new HttpLink("/first", HttpLinkRelation.IanaLinkRelationPrefix + "alternate")); // Then linkBuilder.Count.ShouldEqual(4); }
/// <summary> /// Creates the link header with the different media ranges. /// </summary> /// <param name="requestUrl">The request URL.</param> /// <param name="linkProcessors">The link processors.</param> /// <param name="existingLinkHeader">The existing Link HTTP Header.</param> /// <returns>The link header.</returns> protected virtual string CreateLinkHeader(Url requestUrl, IEnumerable <KeyValuePair <string, MediaRange> > linkProcessors, string existingLinkHeader) { var fileName = Path.GetFileNameWithoutExtension(requestUrl.Path); var baseUrl = string.Concat(requestUrl.BasePath, "/", fileName); var linkBuilder = new HttpLinkBuilder(); if (existingLinkHeader != null) { linkBuilder.Add(existingLinkHeader); } foreach (var linkProcessor in linkProcessors) { var uri = string.Concat(baseUrl, '.', linkProcessor.Key); linkBuilder.Add(new HttpLink(uri, "alternate", linkProcessor.Value)); } return(linkBuilder.ToString()); }
public void Add_existing_relation_in_different_types_should_add_all() { // Given var linkBuilder = new HttpLinkBuilder(); // When linkBuilder.Add(new HttpLink("/first", "ALTERNATE", "application/json")); linkBuilder.Add(new HttpLink("/second", "AlterNate", "application/xml")); linkBuilder.Add(new HttpLink("/third", "alternate", "text/html")); // Then linkBuilder.Count.ShouldEqual(3); linkBuilder[0].TargetUri.ToString().ShouldEqual("/first"); linkBuilder[0].Relation.ToString().ShouldEqual("ALTERNATE"); linkBuilder[0].Type.ToString().ShouldEqual("application/json"); linkBuilder[1].TargetUri.ToString().ShouldEqual("/second"); linkBuilder[1].Relation.ToString().ShouldEqual("AlterNate"); linkBuilder[1].Type.ToString().ShouldEqual("application/xml"); linkBuilder[2].TargetUri.ToString().ShouldEqual("/third"); linkBuilder[2].Relation.ToString().ShouldEqual("alternate"); linkBuilder[2].Type.ToString().ShouldEqual("text/html"); }
/// <summary> /// Creates the link header with the different media ranges. /// </summary> /// <param name="requestUrl">The request URL.</param> /// <param name="linkProcessors">The link processors.</param> /// <param name="existingLinkHeader">The existing Link HTTP Header.</param> /// <returns>The link header.</returns> protected virtual string CreateLinkHeader(Url requestUrl, IEnumerable<KeyValuePair<string, MediaRange>> linkProcessors, string existingLinkHeader) { var fileName = Path.GetFileNameWithoutExtension(requestUrl.Path); var baseUrl = string.Concat(requestUrl.BasePath, "/", fileName); var linkBuilder = new HttpLinkBuilder(); if (existingLinkHeader != null) { linkBuilder.Add(existingLinkHeader); } foreach (var linkProcessor in linkProcessors) { var uri = string.Concat(baseUrl, '.', linkProcessor.Key); linkBuilder.Add(new HttpLink(uri, "alternate", linkProcessor.Value)); } return linkBuilder.ToString(); }