Esempio n. 1
0
        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++;
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
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++;
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
                }
            }
        }