public void ItShouldEnrichLinksForJObjects() { var expected = new[] { "/v1/12345/John", "/v1/12345/John/Doe/Mr./III", "/v1/12345/John/Doe" }; generator = new HypermediaGenerator(); var json = JObject.Parse(@"{""id"": ""12345"", ""givenName"": ""John"", ""familyName"": ""Doe"", ""honorificPrefix"": ""Mr."", ""honorificSuffix"": ""III""}"); var links = new List <Link>() { new Link() { Href = "/v1/{id}/{givenName}" }, new Link() { Href = "/v1/{id}/{givenName}/{familyName}/{honorificPrefix}/{honorificSuffix}" }, new Link() { Href = "/v1/{id}/{givenName}/{familyName}" } }; generator.EnrichLinksWithData(json, links); Assert.That(links[0].Href, Is.EqualTo(expected[0])); Assert.That(links[1].Href, Is.EqualTo(expected[1])); Assert.That(links[2].Href, Is.EqualTo(expected[2])); }
public void ItShouldGenerateLinks() { generator = new HypermediaGenerator(additional); var links = generator.GetLinks(rawSchema, person); Assert.That(links.Count(), Is.EqualTo(5)); var getLink = links.First(l => l.Rel == "self"); var subResourceLink = links.First(l => l.Rel == "hypothetical-subresource"); Assert.That(getLink.Href, Is.EqualTo("/baseApiUrl/persons/12345")); Assert.That(subResourceLink.Href, Is.EqualTo("/baseApiUrl/persons/12345/honorific/III/testing/no-braces")); }
public void ItShouldEnrichALinkWithAdditionalData() { generator = new HypermediaGenerator(additional); string expected = "/v1/still_nonsense/12345/John/Doe"; var links = new List <Link>() { new Link() { Href = "/v1/{nonsense}/{id}/{givenName}/{familyName}" } }; generator.EnrichLinksWithData(person, links); Assert.That(links[0].Href, Is.EqualTo(expected)); }
public void ItShouldNotReturnLinksWithInvalidDataIfBehaviorIsLoose(string expected) { person.FamilyName = null; var links = new List <Link>() { new Link() { Href = expected } }; generator = new HypermediaGenerator(additional) { InspectionBehavior = InspectionBehavior.Loose }; var result = generator.EnrichLinksWithData(person, links); Assert.That(result.Count, Is.EqualTo(0)); }
public void SetUp() { generator = new HypermediaGenerator(); var helper = new FileHelper(); rawSchema = helper.GetResourceTextFile("person-schema.json"); personSchema = JsonSchema.Parse(rawSchema); self = new Link() { Href = "/baseApiUrl/persons/12345", Rel = "self", Title = "Self", Method = "Get" }; parent = new Link() { Href = "/baseApiUrl/persons", Rel = "self", Title = "Self", Method = "Get" }; person = new Person() { FamilyName = "Doe", GivenName = "John", HonorificPrefix = "Mr.", HonorificSuffix = "III", Id = "12345", }; additional = new Dictionary <string, string> { { "{nonsense}", "still_nonsense" }, { "{test}", "testing" }, { "nobraces", "no-braces" } }; }