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