Пример #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);
        }
Пример #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");
        }
Пример #3
0
        public void HandlesRecursiveProperties()
        {
            var firstModel  = new Recursion.FirstModel();
            var secondModel = new Recursion.SecondModel();

            firstModel.Model  = secondModel;
            secondModel.Model = firstModel;

            var target = new ResourceSerializer(firstModel, new Recursion.Resource(),
                                                GetUri(id: "123"), DefaultPathBuilder, null);

            var result = target.Serialize();

            _output.WriteLine(result.ToString());

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

            Assert.Equal(firstModel.Id, id);
        }
        public void HandlesRecursiveProperties()
        {
            var firstModel  = new Recursion.FirstModel();
            var secondModel = new Recursion.SecondModel();

            firstModel.Model  = secondModel;
            secondModel.Model = firstModel;

            var target = new ResourceSerializer(urlBuilder: new DefaultUrlPathBuilder("/api"));

            var resourceResult = new ResourceResult
            {
                Resource = new Recursion.Resource(),
                Result   = firstModel
            };

            var result = JToken.Parse(target.Serialize(resourceResult, GetUri(id: "123").ToString()));

            _output.WriteLine(result.ToString());

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

            Assert.Equal(firstModel.Id, id);
        }