public void ActionsTest() { var routeName = typeof(ActionsHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(ActionsHypermediaObject), routeName); var routeNameHypermediaActionNotExecutable = typeof(HypermediaActionNotExecutable).Name + "_Route"; RouteRegister.AddActionRoute(typeof(HypermediaActionNotExecutable), routeNameHypermediaActionNotExecutable); var routeNameHypermediaActionNoArgument = typeof(HypermediaActionNoArgument).Name + "_Route"; RouteRegister.AddActionRoute(typeof(HypermediaActionNoArgument), routeNameHypermediaActionNoArgument); var routeNameHypermediaActionWithArgument = typeof(HypermediaActionWithArgument).Name + "_Route"; RouteRegister.AddActionRoute(typeof(HypermediaActionWithArgument), routeNameHypermediaActionWithArgument); var routeNameHypermediaActionWithTypedArgument = typeof(HypermediaFunctionWithTypedArgument).Name + "_Route"; RouteRegister.AddActionRoute(typeof(HypermediaFunctionWithTypedArgument), routeNameHypermediaActionWithTypedArgument); var routeNameHypermediaActionFuncNoArgument = typeof(HypermediaFunctionNoArgument).Name + "_Route"; RouteRegister.AddActionRoute(typeof(HypermediaFunctionNoArgument), routeNameHypermediaActionFuncNoArgument); var routeNameRegisteredActionParameter = typeof(RegisteredActionParameter).Name + "_Route"; RouteRegister.AddParameterTypeRoute(typeof(RegisteredActionParameter), routeNameRegisteredActionParameter); 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], DefaultContentTypes.ApplicationJson, "ActionParameter", "ActionParameter"); AssertActionBasic((JObject)siren["actions"][3], "FunctionWithTypedArgument", "POST", routeNameHypermediaActionWithTypedArgument, 5); AssertActionArgument((JObject)siren["actions"][3], DefaultContentTypes.ApplicationJson, "RegisteredActionParameter", routeNameRegisteredActionParameter, true); AssertActionBasic((JObject)siren["actions"][4], "FunctionNoArgument", "POST", routeNameHypermediaActionFuncNoArgument, 3); }
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 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 SerializeNullListPropertyNoNullPropertiesTest() { var routeName = typeof(HypermediaObjectWithListProperties).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(HypermediaObjectWithListProperties), routeName, HttpMethod.GET); var ho = new HypermediaObjectWithListProperties(); var siren = SirenConverterNoNullProperties.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(HypermediaObjectWithListProperties)); AssertEmptyEntities(siren); AssertEmptyActions(siren); AssertHasOnlySelfLink(siren, routeName); var propertiesObject = PropertyHelpers.GetPropertiesJObject(siren); Assert.AreEqual(propertiesObject.Properties().Count(), 0); }
public void PropertyDefaultsObjectWriteNoNullPropertiesTest() { var routeName = typeof(PropertyHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(PropertyHypermediaObject), routeName, HttpMethod.GET); var ho = new PropertyHypermediaObject(); var siren = SirenConverterNoNullProperties.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(PropertyHypermediaObject)); AssertEmptyEntities(siren); AssertEmptyActions(siren); AssertHasOnlySelfLink(siren, routeName); var propertiesObject = PropertyHelpers.GetPropertiesJObject(siren); PropertyHelpers.CompareHypermediaPropertiesAndJsonNoNullProperties(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 RouteRegister NewRouteRegister(DeviceID deviceId, string switchName) { var privateData = NewRouteRegisterPrivateData(switchName); var result = new RouteRegister { routeingDevice = deviceId, extensions = new CSTACommonArguments { privateData = new CSTAPrivateData { Item = new CSTAPrivateDataPrivate { Any = new XmlElement[] { XmlHelper.InstanceToElement(privateData) } } } } }; return(result); }
public void LinksHypermediaObjectReferenceTest() { 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 link1Rel = "Link1"; var routeNameLinked2 = typeof(Linked2HypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(Linked2HypermediaObject), routeNameLinked2, HttpMethod.GET); 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 PropertyNestedClassNullNoNullProperties() { var routeName = typeof(PropertyNestedClassHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(PropertyNestedClassHypermediaObject), routeName, HttpMethod.GET); var ho = new PropertyNestedClassHypermediaObject { AChild = null }; var siren = SirenConverterNoNullProperties.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(PropertyNestedClassHypermediaObject)); AssertEmptyEntities(siren); AssertEmptyActions(siren); AssertHasOnlySelfLink(siren, routeName); var propertiesObject = PropertyHelpers.GetPropertiesJObject(siren); Assert.AreEqual(propertiesObject.Properties().Count(), 0); }
public void LinksHypermediaObjectKeyReferenceTest() { var routeNameLinking = typeof(LinkingHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(LinkingHypermediaObject), routeNameLinking); var routeNameLinked1 = typeof(Linked1HypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(Linked1HypermediaObject), routeNameLinked1); RouteRegister.AddRouteKeyProducer(typeof(Linked1HypermediaObject), new Linked1HypermediaObjectRouteKeyProducer()); var link1Rel = "Link1"; var routeNameLinked2 = typeof(Linked2HypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(Linked2HypermediaObject), routeNameLinked2); RouteRegister.AddRouteKeyProducer(typeof(Linked2HypermediaObject), new Linked2HypermediaObjectRouteKeyProducer()); var link2Rel = "Link2"; var ho = new LinkingHypermediaObject(); ho.Links.Add(link1Rel, new HypermediaObjectKeyReference(typeof(Linked1HypermediaObject), 5)); ho.Links.Add(link2Rel, new HypermediaObjectKeyReference(typeof(Linked2HypermediaObject), "AStringkey")); 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 = 5 }"); AssertHasLinkWithKey(linksArray, link2Rel, routeNameLinked2, "{ key = AStringkey }"); }
public void PropertyDefaultsObjectWriteNoNullPropertiesTest() { var routeName = typeof(PropertyHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(PropertyHypermediaObject), routeName); var ho = new PropertyHypermediaObject(); var sirenBuilderWithNoNullProperties = CreateSirenConverter(new SirenConverterConfiguration { WriteNullProperties = false }); var siren = sirenBuilderWithNoNullProperties.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"]; CompareHypermediaAndJsonNoNullProperties(propertiesObject, ho); }
public void SerializeEmptyListProperties() { var routeName = typeof(HypermediaObjectWithListProperties).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(HypermediaObjectWithListProperties), routeName, HttpMethod.GET); var ho = new HypermediaObjectWithListProperties(); ho.AValueList = new List <int>(); ho.ANullableList = new List <int?>(); ho.AReferenceList = new List <string>(); 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 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); }
public void LinksInternalReferenceTest() { var routeNameLinking = typeof(InternalUsingHypermediaObject).Name + "_Route"; RouteRegister.AddHypermediaObjectRoute(typeof(InternalUsingHypermediaObject), routeNameLinking, HttpMethod.GET); var ho = new InternalUsingHypermediaObject(); 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>() }; var routeName = "ARouteName"; ho.Links.Add(rels[0], new InternalReference(routeName)); ho.Links.Add(rels[1], new InternalReference(routeName).WithAvailableMediaType(availableMediaType1)); ho.Links.Add(rels[2], new InternalReference(routeName).WithAvailableMediaTypes(availableMediaTypes2)); ho.Links.Add(rels[3], new InternalReference(routeName).WithAvailableMediaTypes(Array.Empty <string>())); var siren = SirenConverter.ConvertToJson(ho); AssertDefaultClassName(siren, typeof(InternalUsingHypermediaObject)); 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 internalRoute = $"{TestUrlConfig.Scheme}/{TestUrlConfig.Host}/{routeName}/"; 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], internalRoute, availableMediaTypes[i]); i++; } }