public void JsonApiResourceObject_AutoAddAttributesAndRelations()
        {
            var data = new ModelWithReferences {
                Id = Guid.NewGuid().ToString(), SingleReference = new ModelWithNoReferences {
                    Id = Guid.NewGuid().ToString()
                }
            };
            var resourceObject = JsonApiResourceBuilder.Build(data, true);
            var json           = JsonConvert.SerializeObject(resourceObject, Formatting.Indented);
            var deserialized   = JsonConvert.DeserializeObject <JsonApiResourceObject>(json);
            var result         = deserialized.ToObject <ModelWithReferences>();

            Assert.IsTrue(result.Id == data.Id);
            Assert.IsTrue(result.SingleReference.Id == data.SingleReference.Id);
        }
        public void JsonApiResourceObject_ManuallyAddRelations()
        {
            var data = new ModelWithReferences
            {
                Id = Guid.NewGuid().ToString(),
                SingleReference = new ModelWithNoReferences {
                    Id = Guid.NewGuid().ToString()
                },
                CollectionReference = new List <ModelWithNoReferences>
                {
                    new ModelWithNoReferences {
                        Id = Guid.NewGuid().ToString()
                    },
                    new ModelWithNoReferences {
                        Id = Guid.NewGuid().ToString()
                    }
                }
            };
            var resourceObject = new JsonApiResourceObject();

            resourceObject.FromObject(data, false);
            resourceObject.Relationships = new Dictionary <string, JsonApiRelationshipObjectBase>();
            resourceObject.Relationships.Add("single-reference", new JsonApiToOneRelationshipObject {
                Data = new JsonApiResourceIdentifierObject(data.SingleReference.Id, data.SingleReference.GetType().GetJsonApiClassName())
            });
            resourceObject.Relationships.Add("collection-reference", new JsonApiToManyRelationshipObject {
                Data = data.CollectionReference.Select(i => new JsonApiResourceIdentifierObject(i.Id, i.GetType().GetJsonApiClassName())).ToList()
            });

            //resourceObject.Attributes = (data, false, x => x.SingleReference);
            var json         = JsonConvert.SerializeObject(resourceObject, Formatting.Indented);
            var deserialized = JsonConvert.DeserializeObject <JsonApiResourceObject>(json);
            var result       = deserialized.ToObject <ModelWithReferences>();

            Assert.IsTrue(result.SingleReference.Id == data.SingleReference.Id);
            Assert.IsTrue(result.CollectionReference.Count() == data.CollectionReference.Count());
        }