public static void AddJsonApiInternals <TContext>(
            this IServiceCollection services,
            JsonApiOptions jsonApiOptions) where TContext : DbContext
        {
            if (jsonApiOptions.ResourceGraph == null)
            {
                jsonApiOptions.BuildResourceGraph <TContext>(null);
            }

            services.AddScoped <IDbContextResolver, DbContextResolver <TContext> >();

            AddJsonApiInternals(services, jsonApiOptions);
        }
        public static IServiceCollection AddJsonApi <TContext>(
            this IServiceCollection services,
            Action <JsonApiOptions> options,
            IMvcCoreBuilder mvcBuilder) where TContext : DbContext
        {
            var config = new JsonApiOptions();

            options(config);
            config.BuildResourceGraph(builder => builder.AddDbContext <TContext>());

            mvcBuilder.AddMvcOptions(opt => AddMvcOptions(opt, config));

            AddJsonApiInternals <TContext>(services, config);
            return(services);
        }
        public DocumentBuilder_Tests()
        {
            _jsonApiContextMock = new Mock <IJsonApiContext>();
            _requestMetaMock    = new Mock <IRequestMeta>();

            _options = new JsonApiOptions();

            _options.BuildResourceGraph(builder =>
            {
                builder.AddResource <Model>("models");
                builder.AddResource <RelatedModel>("related-models");
            });

            _jsonApiContextMock
            .Setup(m => m.Options)
            .Returns(_options);

            _jsonApiContextMock
            .Setup(m => m.ResourceGraph)
            .Returns(_options.ResourceGraph);

            _jsonApiContextMock
            .Setup(m => m.MetaBuilder)
            .Returns(new MetaBuilder());

            _pageManager = new PageManager();
            _jsonApiContextMock
            .Setup(m => m.PageManager)
            .Returns(_pageManager);

            _jsonApiContextMock
            .Setup(m => m.BasePath)
            .Returns("localhost");

            _jsonApiContextMock
            .Setup(m => m.RequestEntity)
            .Returns(_options.ResourceGraph.GetContextEntity(typeof(Model)));
        }