Beispiel #1
0
        protected ResponseSerializer <T> GetResponseSerializer <T>(List <List <RelationshipAttribute> > inclusionChains = null, Dictionary <string, object> metaDict = null, TopLevelLinks topLinks = null, ResourceLinks resourceLinks = null, RelationshipLinks relationshipLinks = null) where T : class, IIdentifiable
        {
            var meta = GetMetaBuilder <T>(metaDict);
            var link = GetLinkBuilder(topLinks, resourceLinks, relationshipLinks);
            var includeConstraints = GetIncludeConstraints(inclusionChains);
            var includedBuilder    = GetIncludedBuilder();
            var fieldsToSerialize  = GetSerializableFields();
            ResponseResourceObjectBuilder resourceObjectBuilder = new ResponseResourceObjectBuilder(link, includedBuilder, includeConstraints, _resourceGraph, GetSerializerSettingsProvider());

            return(new ResponseSerializer <T>(meta, link, includedBuilder, fieldsToSerialize, resourceObjectBuilder, new JsonApiOptions()));
        }
Beispiel #2
0
        public void Build_RelationshipNotIncludedAndLinksDisabled_NoRelationshipObject()
        {
            // Arrange
            var resource = new OneToManyPrincipal
            {
                Id = 10
            };

            ResponseResourceObjectBuilder builder = GetResponseResourceObjectBuilder();

            // Act
            ResourceObject resourceObject = builder.Build(resource, relationships: _relationshipsForBuild);

            // Assert
            Assert.Null(resourceObject.Relationships);
        }
Beispiel #3
0
        public void Build_RelationshipNotIncludedAndLinksEnabled_RelationshipEntryWithLinks()
        {
            // Arrange
            var resource = new OneToManyPrincipal
            {
                Id = 10
            };

            ResponseResourceObjectBuilder builder = GetResponseResourceObjectBuilder(relationshipLinks: DummyRelationshipLinks);

            // Act
            ResourceObject resourceObject = builder.Build(resource, relationships: _relationshipsForBuild);

            // Assert
            Assert.True(resourceObject.Relationships.TryGetValue(RelationshipName, out RelationshipEntry entry));
            Assert.Equal("http://www.dummy.com/dummy-relationship-self-link", entry.Links.Self);
            Assert.Equal("http://www.dummy.com/dummy-relationship-related-link", entry.Links.Related);
            Assert.False(entry.IsPopulated);
        }
        protected ResponseSerializer <T> GetResponseSerializer <T>(IEnumerable <IEnumerable <RelationshipAttribute> > inclusionChains = null,
                                                                   Dictionary <string, object> metaDict = null, TopLevelLinks topLinks = null, ResourceLinks resourceLinks = null,
                                                                   RelationshipLinks relationshipLinks  = null)
            where T : class, IIdentifiable
        {
            IMetaBuilder meta = GetMetaBuilder(metaDict);
            ILinkBuilder link = GetLinkBuilder(topLinks, resourceLinks, relationshipLinks);
            IEnumerable <IQueryConstraintProvider> includeConstraints = GetIncludeConstraints(inclusionChains);
            IIncludedResourceObjectBuilder         includedBuilder    = GetIncludedBuilder();
            IFieldsToSerialize fieldsToSerialize = GetSerializableFields();

            IResourceDefinitionAccessor resourceDefinitionAccessor = GetResourceDefinitionAccessor();

            IResourceObjectBuilderSettingsProvider settingsProvider = GetSerializerSettingsProvider();

            var resourceObjectBuilder = new ResponseResourceObjectBuilder(link, includedBuilder, includeConstraints, ResourceGraph, resourceDefinitionAccessor,
                                                                          settingsProvider);

            var jsonApiOptions = new JsonApiOptions();

            return(new ResponseSerializer <T>(meta, link, includedBuilder, fieldsToSerialize, resourceObjectBuilder, resourceDefinitionAccessor, jsonApiOptions));
        }