public void AttributedEmptyObjectTest() { var routeName = typeof(AttributedEmptyHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(AttributedEmptyHypermediaObject), routeName); var ho = new AttributedEmptyHypermediaObject(); var siren = SirenConverter.ConvertToJson(ho); // class Assert.IsTrue(siren["class"].Type == JTokenType.Array); var classArray = (JArray)siren["class"]; Assert.AreEqual(classArray.Count, 2); Assert.IsTrue(siren["class"][0].ToString() == "CustomClass1"); Assert.IsTrue(siren["class"][1].ToString() == "CustomClass2"); // title Assert.IsTrue(siren["title"].Type == JTokenType.String); Assert.AreEqual(siren["title"], "A Title"); AssertEmptyProperties(siren); AssertEmptyEntities(siren); AssertEmptyActions(siren); AssertHasOnlySelfLink(siren, routeName); }
public void LinksMultipleRelationTest() { var routeNameLinking = typeof(LinkingHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(LinkingHypermediaObject), routeNameLinking, HttpMethod.GET); var routeNameLinked1 = typeof(Linked1HypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(Linked1HypermediaObject), routeNameLinked1, HttpMethod.GET); var hoLink1 = new Linked1HypermediaObject(); var multiRel = new List <string> { "RelA", "RelB" }; var ho = new LinkingHypermediaObject(); ho.Links.Add(multiRel, new HypermediaObjectReference(hoLink1)); var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(LinkingHypermediaObject)); AssertEmptyProperties(siren); AssertEmptyEntities(siren); AssertEmptyActions(siren); Assert.IsTrue(siren["links"].Type == JTokenType.Array); var linksArray = (JArray)siren["links"]; Assert.AreEqual(linksArray.Count, ho.Links.Count); AssertHasLink(linksArray, multiRel, routeNameLinked1); }
public void LinksExternalReferenceTest() { var externalUri = "http://www.example.com/"; var routeNameLinking = typeof(ExternalUsingHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(ExternalUsingHypermediaObject), routeNameLinking, HttpMethod.GET); var ho = new ExternalUsingHypermediaObject(); var rels = new List <string>() { "External0", "External1", "External2", "External3", }; var availableMediaType1 = "custom/mediatype"; var availableMediaTypes2 = new List <string> { "custom/mediaType1", "custom/mediaType2" }; var availableMediaTypes = new List <List <string> > { new List <string>(), new List <string> { availableMediaType1 }, availableMediaTypes2, new List <string>() }; ho.Links.Add(rels[0], new ExternalReference(new Uri(externalUri))); ho.Links.Add(rels[1], new ExternalReference(new Uri(externalUri)).WithAvailableMediaType(availableMediaType1)); ho.Links.Add(rels[2], new ExternalReference(new Uri(externalUri)).WithAvailableMediaTypes(availableMediaTypes2)); ho.Links.Add(rels[3], new ExternalReference(new Uri(externalUri)).WithAvailableMediaTypes(Array.Empty <string>())); var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(ExternalUsingHypermediaObject)); AssertEmptyProperties(siren); AssertEmptyEntities(siren); AssertEmptyActions(siren); Assert.IsTrue(siren["links"].Type == JTokenType.Array); var linksArray = (JArray)siren["links"]; Assert.AreEqual(linksArray.Count, ho.Links.Count); var i = 0; foreach (var jToken in linksArray) { if (!(linksArray[i] is JObject linkObject)) { throw new Exception("Link array item should be a JObject"); } AssertLink(linkObject, rels[i], externalUri, availableMediaTypes[i]); i++; } }
public void PropertyNestedClass() { var routeName = typeof(PropertyNestedClassHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(PropertyNestedClassHypermediaObject), routeName, HttpMethod.GET); var ho = new PropertyNestedClassHypermediaObject { AChild = new AttributedPropertyHypermediaObject { Property1 = true, Property2 = true, NotRenamed = true, IgnoredProperty = true } }; var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(PropertyNestedClassHypermediaObject)); AssertEmptyEntities(siren); AssertEmptyActions(siren); AssertHasOnlySelfLink(siren, routeName); var propertiesObject = PropertyHelpers.GetPropertiesJObject(siren); Assert.AreEqual(1, propertiesObject.Properties().Count()); var nestedJObject = (JObject)siren["properties"][nameof(PropertyNestedClassHypermediaObject.AChild)]; // one property is ignored Assert.AreEqual(3, nestedJObject.Properties().Count()); Assert.AreEqual(ho.AChild.Property1, nestedJObject["Property1Renamed"].Value <bool>()); Assert.AreEqual(ho.AChild.Property2, nestedJObject["Property2Renamed"].Value <bool>()); Assert.AreEqual(ho.AChild.NotRenamed, nestedJObject[nameof(AttributedPropertyHypermediaObject.NotRenamed)].Value <bool>()); }
public void LinksHypermediaObjectReferenceWithRouteKeyTest() { var routeNameLinking = typeof(LinkingHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(LinkingHypermediaObject), routeNameLinking, HttpMethod.GET); var routeNameLinked1 = typeof(LinkedHypermediaObjectWithKey).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(LinkedHypermediaObjectWithKey), routeNameLinked1, HttpMethod.GET); var hoLink1 = new LinkedHypermediaObjectWithKey { Id = 42 }; var link1Rel = "Link1"; RouteRegister.AddRouteKeyProducer(typeof(LinkedHypermediaObjectWithKey), new LinkedHypermediaObjectWithKeyRouteKeyProvider()); var ho = new LinkingHypermediaObject(); ho.Links.Add(link1Rel, new HypermediaObjectReference(hoLink1)); var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(LinkingHypermediaObject)); AssertEmptyProperties(siren); AssertEmptyEntities(siren); AssertEmptyActions(siren); Assert.IsTrue(siren["links"].Type == JTokenType.Array); var linksArray = (JArray)siren["links"]; Assert.AreEqual(linksArray.Count, ho.Links.Count); AssertHasLink(linksArray, DefaultHypermediaRelations.Self, routeNameLinking); AssertHasLinkWithKey(linksArray, link1Rel, routeNameLinked1, "{ key = 42 }"); }
protected void TestInitBase() { RouteRegister = new RouteRegister(); RouteResolverFactory = new RegisterRouteResolverFactory(RouteRegister); RouteKeyFactory = new RouteKeyFactory(RouteRegister); RouteResolver = RouteResolverFactory.CreateRouteResolver(UrlHelper, RouteKeyFactory, TestUrlConfig); SirenConverter = CreateSirenConverter(); }
public void ActionsTest() { var routeName = typeof(ActionsHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(ActionsHypermediaObject), routeName, HttpMethod.GET); var routeNameHypermediaActionNotExecutable = typeof(HypermediaActionNotExecutable).Name + "_Route"; RouteRegister.AddActionRoute(typeof(HypermediaActionNotExecutable), routeNameHypermediaActionNotExecutable, HttpMethod.POST); var routeNameHypermediaActionNoArgument = typeof(HypermediaActionNoArgument).Name + "_Route"; RouteRegister.AddActionRoute(typeof(HypermediaActionNoArgument), routeNameHypermediaActionNoArgument, HttpMethod.POST); var routeNameHypermediaActionWithArgument = typeof(HypermediaActionWithArgument).Name + "_Route"; var customMediaType = "custome/mediatype"; RouteRegister.AddActionRoute(typeof(HypermediaActionWithArgument), routeNameHypermediaActionWithArgument, HttpMethod.POST, customMediaType); var routeNameHypermediaActionWithTypedArgument = typeof(HypermediaFunctionWithTypedArgument).Name + "_Route"; RouteRegister.AddActionRoute(typeof(HypermediaFunctionWithTypedArgument), routeNameHypermediaActionWithTypedArgument, HttpMethod.POST); var routeNameHypermediaActionFuncNoArgument = typeof(HypermediaFunctionNoArgument).Name + "_Route"; RouteRegister.AddActionRoute(typeof(HypermediaFunctionNoArgument), routeNameHypermediaActionFuncNoArgument, HttpMethod.POST); var routeNameRegisteredActionParameter = typeof(RegisteredActionParameter).Name + "_Route"; RouteRegister.AddParameterTypeRoute(typeof(RegisteredActionParameter), routeNameRegisteredActionParameter, HttpMethod.GET); var ho = new ActionsHypermediaObject(); var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(ActionsHypermediaObject)); AssertEmptyProperties(siren); AssertEmptyEntities(siren); AssertHasOnlySelfLink(siren, routeName); var actionsArray = (JArray)siren["actions"]; Assert.AreEqual(actionsArray.Count, 5); AssertActionBasic((JObject)siren["actions"][0], "RenamedAction", "POST", routeNameHypermediaActionNoArgument, 4, "A Title"); AssertActionBasic((JObject)siren["actions"][1], "ActionNoArgument", "POST", routeNameHypermediaActionNoArgument, 3); AssertActionBasic((JObject)siren["actions"][2], "ActionWithArgument", "POST", routeNameHypermediaActionWithArgument, 5); AssertActionArgument((JObject)siren["actions"][2], customMediaType, "ActionParameter", "ActionParameter"); AssertActionBasic((JObject)siren["actions"][3], "FunctionWithTypedArgument", "POST", routeNameHypermediaActionWithTypedArgument, 5); AssertActionArgument((JObject)siren["actions"][3], DefaultMediaTypes.ApplicationJson, "RegisteredActionParameter", routeNameRegisteredActionParameter, true); AssertActionBasic((JObject)siren["actions"][4], "FunctionNoArgument", "POST", routeNameHypermediaActionFuncNoArgument, 3); }
public void PropertyDuplicateObjectTest() { var routeName = typeof(PropertyDuplicateHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(PropertyDuplicateHypermediaObject), routeName); var ho = new PropertyDuplicateHypermediaObject(); SirenConverter.ConvertToJson(ho); }
protected void TestInitBase() { RouteRegister = new RouteRegister(); RouteResolverFactory = new RegisterRouteResolverFactory(RouteRegister, new HypermediaExtensionsOptions()); RouteKeyFactory = new RouteKeyFactory(RouteRegister); RouteResolver = RouteResolverFactory.CreateRouteResolver(UrlHelper, RouteKeyFactory, TestUrlConfig); SirenConverter = CreateSirenConverter(); SirenConverterNoNullProperties = CreateSirenConverter(new HypermediaConverterConfiguration { WriteNullProperties = false }); }
public void RepresentationEntitiesTest() { var routeName = typeof(EmptyHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(EmptyHypermediaObject), routeName); var routeNameEmbedded = typeof(EmbeddedSubEntity).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(EmbeddedSubEntity), routeNameEmbedded); var ho = new EmptyHypermediaObject(); var relation1 = "Embedded"; var embeddedHo1 = new EmbeddedSubEntity(); ho.Entities.Add(relation1, new HypermediaObjectReference(embeddedHo1)); var relationsList2 = new List <string> { "RelationA", "RelationB" }; var embeddedHo2 = new EmbeddedSubEntity { ABool = true, AInt = 3 }; ho.Entities.Add(new RelatedEntity(relationsList2, new HypermediaObjectReference(embeddedHo2))); var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(EmptyHypermediaObject)); AssertEmptyProperties(siren); AssertEmptyActions(siren); AssertHasOnlySelfLink(siren, routeName); Assert.IsTrue(siren["entities"].Type == JTokenType.Array); var entitiesArray = (JArray)siren["entities"]; Assert.AreEqual(entitiesArray.Count, ho.Entities.Count); var embeddedEntityObject = (JObject)siren["entities"][0]; AssertDefaultClassName(embeddedEntityObject, typeof(EmbeddedSubEntity)); AssertRelations(embeddedEntityObject, new List <string> { relation1 }); AssertHasOnlySelfLink(embeddedEntityObject, routeNameEmbedded); AssertEmbeddedEntity(embeddedEntityObject, embeddedHo1); embeddedEntityObject = (JObject)siren["entities"][1]; AssertDefaultClassName(embeddedEntityObject, typeof(EmbeddedSubEntity)); AssertRelations(embeddedEntityObject, relationsList2); AssertHasOnlySelfLink(embeddedEntityObject, routeNameEmbedded); AssertEmbeddedEntity(embeddedEntityObject, embeddedHo2); }
public void LinkEntitiesTest() { var routeName = typeof(EmptyHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(EmptyHypermediaObject), routeName); var routeNameEmbedded = typeof(EmbeddedSubEntity).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(EmbeddedSubEntity), routeNameEmbedded); RouteRegister.AddRouteKeyProducer(typeof(EmbeddedSubEntity), new EmbeddedEntityRouteKeyProducer()); var ho = new EmptyHypermediaObject(); var relation1 = "Embedded"; ho.Entities.Add(relation1, new HypermediaObjectKeyReference(typeof(EmbeddedSubEntity), 6)); var relationsList2 = new List <string> { "RelationA", "RelationB" }; var query = new EmbeddedQueryObject { AInt = 2 }; ho.Entities.Add(new RelatedEntity(relationsList2, new HypermediaObjectQueryReference(typeof(EmbeddedSubEntity), query, 3))); var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(EmptyHypermediaObject)); AssertEmptyProperties(siren); AssertEmptyActions(siren); AssertHasOnlySelfLink(siren, routeName); Assert.IsTrue(siren["entities"].Type == JTokenType.Array); var entitiesArray = (JArray)siren["entities"]; Assert.AreEqual(entitiesArray.Count, ho.Entities.Count); var embeddedEntityObject = (JObject)siren["entities"][0]; AssertRelations(embeddedEntityObject, new List <string> { relation1 }); AssertRoute(((JValue)embeddedEntityObject["href"]).Value <string>(), routeNameEmbedded, "{ key = 6 }"); embeddedEntityObject = (JObject)siren["entities"][1]; AssertRelations(embeddedEntityObject, relationsList2); AssertRoute(((JValue)embeddedEntityObject["href"]).Value <string>(), routeNameEmbedded, "{ key = 3 }", QueryStringBuilder.CreateQueryString(query)); }
public void LinksHypermediaObjectNoSelfLinkTest() { var ho = new NoSelfLinkHypermediaObject(); var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(NoSelfLinkHypermediaObject)); AssertEmptyProperties(siren); AssertEmptyEntities(siren); AssertEmptyActions(siren); Assert.IsTrue(siren["links"].Type == JTokenType.Array); var linksArray = (JArray)siren["links"]; Assert.AreEqual(linksArray.Count, ho.Links.Count); }
public void EmptyObjectTest() { var routeName = typeof(EmptyHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(EmptyHypermediaObject), routeName); var ho = new EmptyHypermediaObject(); var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(EmptyHypermediaObject)); AssertEmptyProperties(siren); AssertEmptyEntities(siren); AssertEmptyActions(siren); AssertHasOnlySelfLink(siren, routeName); }
public void SerializeListProperties() { var routeName = typeof(HypermediaObjectWithListProperties).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(HypermediaObjectWithListProperties), routeName, HttpMethod.GET); var ho = new HypermediaObjectWithListProperties(); ho.AValueList = new List <int> { 3, 5, 7 }; ho.ANullableList = new List <int?> { 2, null, 4 }; ho.AReferenceList = new List <string> { "a", "xyz" }; ho.AValueArray = new[] { 6, 9, 2, 7 }; ho.AObjectList = new List <Nested> { new Nested(3), new Nested(5) }; ho.ListOfLists = new List <IEnumerable <int> > { new List <int> { 3, 4, 5 }, new List <int> { 6, 7, 8 } }; var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(HypermediaObjectWithListProperties)); AssertEmptyEntities(siren); AssertEmptyActions(siren); AssertHasOnlySelfLink(siren, routeName); var propertiesObject = PropertyHelpers.GetPropertiesJObject(siren); PropertyHelpers.CompareHypermediaListPropertiesAndJson(propertiesObject, ho); AssertObjectList(ho, siren); AssertListOfLists(ho, siren); }
public void AttributedPropertyTest() { var routeName = typeof(AttributedPropertyHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(AttributedPropertyHypermediaObject), routeName); var ho = new AttributedPropertyHypermediaObject(); var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(AttributedPropertyHypermediaObject)); AssertEmptyEntities(siren); AssertEmptyActions(siren); AssertHasOnlySelfLink(siren, routeName); Assert.IsTrue(siren["properties"].Type == JTokenType.Object); var propertiesObject = (JObject)siren["properties"]; var propertyInfos = typeof(AttributedPropertyHypermediaObject).GetProperties() .Where(p => p.Name != "IgnoredProperty" && p.Name != "Entities" && p.Name != "Links") .ToList(); Assert.AreEqual(propertiesObject.Properties().Count(), propertyInfos.Count); foreach (var property in propertyInfos) { string lookupName; switch (property.Name) { case "Property1": lookupName = "Property1Renamed"; break; case "Property2": lookupName = "Property2Renamed"; break; default: lookupName = property.Name; break; } Assert.IsTrue(propertiesObject[lookupName] != null); } }
public void LinksHypermediaObjectQueryReferenceTest() { var routeNameLinking = typeof(LinkingHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(LinkingHypermediaObject), routeNameLinking, HttpMethod.GET); var routeNameLinked1 = typeof(Linked1HypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(Linked1HypermediaObject), routeNameLinked1, HttpMethod.GET); var link1Rel = "Link1"; var queryObject1 = new QueryObject { ABool = true, AInt = 3 }; var routeNameLinked2 = typeof(LinkedHypermediaObjectWithKey).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(LinkedHypermediaObjectWithKey), routeNameLinked2, HttpMethod.GET); RouteRegister.AddRouteKeyProducer(typeof(LinkedHypermediaObjectWithKey), new LinkedHypermediaObjectWithKeyRouteKeyProvider()); var link2Rel = "Link2"; var queryObject2 = new QueryObject { ABool = false, AInt = 5 }; var ho = new LinkingHypermediaObject(); ho.Links.Add(link1Rel, new HypermediaObjectQueryReference(typeof(Linked1HypermediaObject), queryObject1)); ho.Links.Add(link2Rel, new HypermediaObjectQueryReference(typeof(LinkedHypermediaObjectWithKey), queryObject2, 3)); var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(LinkingHypermediaObject)); AssertEmptyProperties(siren); AssertEmptyEntities(siren); AssertEmptyActions(siren); Assert.IsTrue(siren["links"].Type == JTokenType.Array); var linksArray = (JArray)siren["links"]; Assert.AreEqual(linksArray.Count, ho.Links.Count); AssertHasLink(linksArray, DefaultHypermediaRelations.Self, routeNameLinking); AssertHasLinkWithQuery(linksArray, link1Rel, routeNameLinked1, QueryStringBuilder.CreateQueryString(queryObject1)); AssertHasLinkWithKeyAndQuery(linksArray, link2Rel, routeNameLinked2, "{ key = 3 }", QueryStringBuilder.CreateQueryString(queryObject2)); }
public void SerializeNullListProperty() { var routeName = typeof(HypermediaObjectWithListProperties).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(HypermediaObjectWithListProperties), routeName, HttpMethod.GET); var ho = new HypermediaObjectWithListProperties(); var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(HypermediaObjectWithListProperties)); AssertEmptyEntities(siren); AssertEmptyActions(siren); AssertHasOnlySelfLink(siren, routeName); var propertiesObject = PropertyHelpers.GetPropertiesJObject(siren); PropertyHelpers.CompareHypermediaListPropertiesAndJson(propertiesObject, ho); }
public void PropertyDefaultsObjectTest() { var routeName = typeof(PropertyHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(PropertyHypermediaObject), routeName); var ho = new PropertyHypermediaObject(); var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(PropertyHypermediaObject)); AssertEmptyEntities(siren); AssertEmptyActions(siren); AssertHasOnlySelfLink(siren, routeName); Assert.IsTrue(siren["properties"].Type == JTokenType.Object); var propertiesObject = (JObject)siren["properties"]; CompareHypermediaAndJson(propertiesObject, ho); }
public void LinksExternalReferenceTest() { var externalUri = "http://www.example.com/"; var routeNameLinking = typeof(ExternalUsingHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(ExternalUsingHypermediaObject), routeNameLinking); var ho = new ExternalUsingHypermediaObject(); const string rel = "External"; ho.Links.Add(rel, new ExternalReference(new Uri(externalUri))); var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(ExternalUsingHypermediaObject)); AssertEmptyProperties(siren); AssertEmptyEntities(siren); AssertEmptyActions(siren); Assert.IsTrue(siren["links"].Type == JTokenType.Array); var linksArray = (JArray)siren["links"]; Assert.AreEqual(linksArray.Count, ho.Links.Count); var linkObject = linksArray[0] as JObject; if (linkObject == null) { throw new Exception("Link array item should be a JObject"); } var relationArray = (JArray)linkObject["rel"]; var sirenRelations = relationArray.Values <string>().ToList(); var stringListComparer = new StringCollectionComparer(); var hasDesiredRelations = stringListComparer.Equals(sirenRelations, new List <string> { rel }); Assert.IsTrue(hasDesiredRelations); Assert.AreEqual(((JValue)linkObject["href"]).Value <string>(), externalUri); }
public void LinksHypermediaObjectReferenceTest() { var routeNameLinking = typeof(LinkingHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(LinkingHypermediaObject), routeNameLinking); var routeNameLinked1 = typeof(Linked1HypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(Linked1HypermediaObject), routeNameLinked1); var hoLink1 = new Linked1HypermediaObject(); var link1Rel = "Link1"; var routeNameLinked2 = typeof(Linked2HypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(Linked2HypermediaObject), routeNameLinked2); var hoLink2 = new Linked2HypermediaObject(); var link2Rel = "Link2"; var ho = new LinkingHypermediaObject(); ho.Links.Add(link1Rel, new HypermediaObjectReference(hoLink1)); ho.Links.Add(link2Rel, new HypermediaObjectReference(hoLink2)); var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(LinkingHypermediaObject)); AssertEmptyProperties(siren); AssertEmptyEntities(siren); AssertEmptyActions(siren); Assert.IsTrue(siren["links"].Type == JTokenType.Array); var linksArray = (JArray)siren["links"]; Assert.AreEqual(linksArray.Count, ho.Links.Count); AssertHasLink(linksArray, DefaultHypermediaRelations.Self, routeNameLinking); AssertHasLink(linksArray, link1Rel, routeNameLinked1); AssertHasLink(linksArray, link2Rel, routeNameLinked2); }
public void PropertyNestedClassNull() { var routeName = typeof(PropertyNestedClassHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(PropertyNestedClassHypermediaObject), routeName, HttpMethod.GET); var ho = new PropertyNestedClassHypermediaObject { AChild = null }; var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(PropertyNestedClassHypermediaObject)); AssertEmptyEntities(siren); AssertEmptyActions(siren); AssertHasOnlySelfLink(siren, routeName); var propertiesObject = PropertyHelpers.GetPropertiesJObject(siren); Assert.AreEqual(1, propertiesObject.Properties().Count()); Assert.AreEqual(JValue.CreateNull(), propertiesObject.Properties().First().Value); }
public void PropertyNestedClassNullHypermediaObject() { var routeName = typeof(PropertyNestedClassHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(PropertyNestedClassHypermediaObject), routeName); var ho = new PropertyNestedClassHypermediaObject() { AChild = null }; var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(PropertyNestedClassHypermediaObject)); AssertEmptyEntities(siren); AssertEmptyActions(siren); AssertHasOnlySelfLink(siren, routeName); Assert.IsTrue(siren["properties"].Type == JTokenType.Object); var propertiesObject = (JObject)siren["properties"]; Assert.AreEqual(propertiesObject.Properties().Count(), 0); }
public void PropertyObjectTest() { var routeName = typeof(PropertyHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(PropertyHypermediaObject), routeName, HttpMethod.GET); var ho = new PropertyHypermediaObject { ABool = true, AString = "My String", AnInt = 1, ALong = 2, AFloat = 3.1f, ADouble = 4.1, AnEnum = TestEnum.Value1, ANullableEnum = TestEnum.Value1, AnEnumWithNames = TestEnumWithNames.Value2, ADateTime = new DateTime(2000, 11, 22, 18, 5, 32, 999), ADateTimeOffset = new DateTimeOffset(2000, 11, 22, 18, 5, 32, 999, new TimeSpan(0, 2, 0, 0)), ATimeSpan = new TimeSpan(1, 2, 3, 4), AnUri = new Uri("http://localhost/myuri"), ADecimal = 12345, ANullableInt = 10, }; var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(PropertyHypermediaObject)); AssertEmptyEntities(siren); AssertEmptyActions(siren); AssertHasOnlySelfLink(siren, routeName); var propertiesObject = PropertyHelpers.GetPropertiesJObject(siren); PropertyHelpers.CompareHypermediaPropertiesAndJson(propertiesObject, ho); }
public void PropertyObjectTest() { var routeName = typeof(PropertyHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(PropertyHypermediaObject), routeName); var ho = new PropertyHypermediaObject { ABool = true, AString = "My String", AInt = 1, ALong = 2, AFloat = 3.1f, ADouble = 4.1, AEnum = TestEnum.Value1, AEnumWithNames = TestEnumWithNames.Value2, ADateTime = new DateTime(2000, 11, 22, 18, 5, 32, 999), ADateTimeOffset = new DateTimeOffset(2000, 11, 22, 18, 5, 32, 999, new TimeSpan(0, 2, 0, 0)), ATimeSpan = new TimeSpan(1, 2, 3, 4), ADecimal = 12345, ANullableInt = 10, }; var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(PropertyHypermediaObject)); AssertEmptyEntities(siren); AssertEmptyActions(siren); AssertHasOnlySelfLink(siren, routeName); Assert.IsTrue(siren["properties"].Type == JTokenType.Object); var propertiesObject = (JObject)siren["properties"]; CompareHypermediaAndJson(propertiesObject, ho); }