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); }
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"); }
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); }