private static void AssertObjectList(HypermediaObjectWithListProperties ho, JObject siren) { Assert.AreEqual(ho.AObjectList.Count(), siren["properties"]["AObjectList"].Count()); var index = 0; foreach (var nested in ho.AObjectList) { Assert.AreEqual(nested.AInt, siren["properties"]["AObjectList"][index].Value <JObject>()[nameof(Nested.AInt)].Value <int>()); index++; } }
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 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); }
private static void AssertListOfLists(HypermediaObjectWithListProperties ho, JObject siren) { Assert.AreEqual(ho.ListOfLists.Count(), siren["properties"]["ListOfLists"].Count()); var index = 0; foreach (var nested in ho.ListOfLists) { var nestedList = nested.ToList(); var innerJArray = siren["properties"]["ListOfLists"][index].Value <JArray>(); Assert.AreEqual(nestedList.Count(), innerJArray.Count); var innerIndex = 0; foreach (var value in nestedList) { Assert.AreEqual(value, innerJArray[innerIndex].Value <int>()); innerIndex++; } index++; } }
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 static void CompareHypermediaListPropertiesAndJson(JObject propertiesObject, HypermediaObjectWithListProperties ho) { var propertyInfos = ho.GetType().GetProperties() .Where(p => p.Name != "Entities" && p.Name != "Links") .ToList(); Assert.AreEqual(propertiesObject.Properties().Count(), propertyInfos.Count); foreach (var property in propertiesObject.Properties()) { var htoProperty = propertyInfos.Single(p => p.Name == property.Name); var hoValue = (IEnumerable)htoProperty.GetValue(ho); if (hoValue == null) { Assert.AreEqual(JTokenType.Null, property.Value.Type); } else { Assert.AreEqual(JTokenType.Array, property.Value.Type); var jarray = (JArray)property.Value; var index = 0; foreach (var value in hoValue) { if (value == null) { Assert.IsTrue(jarray[index].Type == JTokenType.Null); } else { var valueType = value.GetType(); var valueTypeInfo = valueType.GetTypeInfo(); if (IsNestedList(valueTypeInfo, valueType)) { Assert.AreEqual(value.ToString(), jarray[index].Value <object>().ToString()); } } index++; } // no extra items Assert.AreEqual(index, jarray.Count); } } }