Ejemplo n.º 1
0
        public void HandlesRecursiveProperties()
        {
            var firstModel  = new Recursion.FirstModel();
            var secondModel = new Recursion.SecondModel();
            var thirdModel  = new Recursion.ThirdModel();
            var fourthModel = new Recursion.FourthModel();

            firstModel.Child   = secondModel;
            secondModel.Parent = firstModel;
            secondModel.Child  = thirdModel;
            thirdModel.Parent  = secondModel;
            thirdModel.Child   = fourthModel;
            fourthModel.Parent = thirdModel;

            var target = new ResourceSerializer(firstModel, new Recursion.FirstModelResource(),
                                                GetUri(id: firstModel.Id), DefaultPathBuilder, null);

            var result = target.Serialize();

            _output.WriteLine(result.ToString());

            var id = result["data"].Value <string>("id");

            Assert.Equal(firstModel.Id, id);
            Assert.Equal(3, (result["included"] as JArray).Count);
        }
Ejemplo n.º 2
0
        public void HandlesRecursiveProperties()
        {
            var firstModel  = new Recursion.FirstModel();
            var secondModel = new Recursion.SecondModel();
            var thirdModel  = new Recursion.ThirdModel();
            var fourthModel = new Recursion.FourthModel();

            firstModel.Child   = secondModel;
            secondModel.Parent = firstModel;
            secondModel.Child  = thirdModel;
            thirdModel.Parent  = secondModel;
            thirdModel.Child   = fourthModel;
            fourthModel.Parent = thirdModel;

            var target = new ResourceSerializer(firstModel, new Recursion.FirstModelResource(),
                                                GetUri(id: firstModel.Id), DefaultPathBuilder, null, null, null);

            var result = target.Serialize();

            _output.WriteLine(result.ToString());


            var included = result["included"] as JArray;

            Assert.NotNull(included);


            var secondOutput = included
                               .Where(t => t["type"].Value <string>() == "second-model").FirstOrDefault();

            Assert.NotNull(secondOutput);


            var parentReference = secondOutput["relationships"]?["parent"]?["data"]?["type"];

            Assert.NotNull(parentReference);
            Assert.Equal(parentReference.Value <string>(), "first-model");


            var childReference = secondOutput["relationships"]?["child"]?["data"]?["type"];

            Assert.NotNull(childReference);
            Assert.Equal(childReference.Value <string>(), "third-model");
        }