public void AddCurrentAssembly_Adds_Resource_Definitions_From_Current_Assembly_To_Container()
        {
            // Arrange
            ServiceDiscoveryFacade facade = new ServiceDiscoveryFacade(_services, _resourceGraphBuilder, _options, _loggerFactory);

            facade.AddCurrentAssembly();

            // Act
            facade.DiscoverInjectables();

            // Assert
            var services = _services.BuildServiceProvider();

            Assert.IsType <TestModelResourceDefinition>(services.GetRequiredService <IResourceDefinition <TestModel> >());
        }
예제 #2
0
        public void DiscoverInjectables_Adds_Resource_Repositories_From_Current_Assembly_To_Container()
        {
            // Arrange
            ServiceDiscoveryFacade facade = new ServiceDiscoveryFacade(_services, _resourceGraphBuilder, NullLoggerFactory.Instance);

            facade.AddCurrentAssembly();

            // Act
            facade.DiscoverInjectables();

            // Assert
            var services = _services.BuildServiceProvider();

            Assert.IsType <TestModelRepository>(services.GetService <IResourceRepository <TestModel> >());
        }
        public void DiscoverResources_Adds_Resources_From_Current_Assembly_To_Graph()
        {
            // Arrange
            ServiceDiscoveryFacade facade = new ServiceDiscoveryFacade(_services, _resourceGraphBuilder, _options, _loggerFactory);

            facade.AddCurrentAssembly();

            // Act
            facade.DiscoverResources();

            // Assert
            var resourceGraph     = _resourceGraphBuilder.Build();
            var testModelResource = resourceGraph.GetResourceContext(typeof(TestModel));

            Assert.NotNull(testModelResource);
        }
        public void Can_add_resource_service_from_current_assembly_to_container()
        {
            // Arrange
            var facade = new ServiceDiscoveryFacade(_services, _resourceGraphBuilder, _options, _loggerFactory);

            facade.AddCurrentAssembly();

            // Act
            facade.DiscoverInjectables();

            // Assert
            var services = _services.BuildServiceProvider();

            var resourceService = services.GetRequiredService <IResourceService <TestResource> >();

            resourceService.Should().BeOfType <TestResourceService>();
        }
        public void Can_add_resource_from_current_assembly_to_graph()
        {
            // Arrange
            var facade = new ServiceDiscoveryFacade(_services, _resourceGraphBuilder, _options, _loggerFactory);

            facade.AddCurrentAssembly();

            // Act
            facade.DiscoverResources();

            // Assert
            var resourceGraph = _resourceGraphBuilder.Build();

            var resource = resourceGraph.GetResourceContext(typeof(TestResource));

            resource.Should().NotBeNull();
        }
        public void DiscoverResources_Adds_Resources_From_Added_Assembly_To_Graph()
        {
            // Arrange
            ServiceDiscoveryFacade facade = new ServiceDiscoveryFacade(_services, _resourceGraphBuilder, _options, _loggerFactory);

            facade.AddAssembly(typeof(Person).Assembly);

            // Act
            facade.DiscoverResources();

            // Assert
            var resourceGraph   = _resourceGraphBuilder.Build();
            var personResource  = resourceGraph.GetResourceContext(typeof(Person));
            var articleResource = resourceGraph.GetResourceContext(typeof(Article));

            Assert.NotNull(personResource);
            Assert.NotNull(articleResource);
        }
예제 #7
0
        public void Can_add_resource_hooks_definition_from_current_assembly_to_container()
        {
            // Arrange
            var facade = new ServiceDiscoveryFacade(_services, _resourceGraphBuilder, _options, LoggerFactory);

            facade.AddCurrentAssembly();

            _options.EnableResourceHooks = true;

            // Act
            facade.DiscoverInjectables();

            // Assert
            var services = _services.BuildServiceProvider();

            var resourceHooksDefinition = services.GetRequiredService <ResourceHooksDefinition <TestResource> >();

            resourceHooksDefinition.Should().BeOfType <TestResourceHooksDefinition>();
        }
        public void Can_add_resources_from_assembly_to_graph()
        {
            // Arrange
            var facade = new ServiceDiscoveryFacade(_services, _resourceGraphBuilder, _options, _loggerFactory);

            facade.AddAssembly(typeof(Person).Assembly);

            // Act
            facade.DiscoverResources();

            // Assert
            var resourceGraph = _resourceGraphBuilder.Build();

            var personResource = resourceGraph.GetResourceContext(typeof(Person));

            personResource.Should().NotBeNull();

            var articleResource = resourceGraph.GetResourceContext(typeof(Article));

            articleResource.Should().NotBeNull();
        }
        public void Can_add_resources_from_assembly_to_graph()
        {
            // Arrange
            var facade = new ServiceDiscoveryFacade(_services, _resourceGraphBuilder, _options, LoggerFactory);

            facade.AddAssembly(typeof(Person).Assembly);

            // Act
            facade.DiscoverResources();

            // Assert
            IResourceGraph resourceGraph = _resourceGraphBuilder.Build();

            ResourceContext personContext = resourceGraph.GetResourceContext(typeof(Person));

            personContext.Should().NotBeNull();

            ResourceContext todoItemContext = resourceGraph.GetResourceContext(typeof(TodoItem));

            todoItemContext.Should().NotBeNull();
        }
        public static IServiceCollection AddJsonApi(
            this IServiceCollection services,
            Action <JsonApiOptions> configureOptions,
            IMvcCoreBuilder mvcBuilder,
            Action <ServiceDiscoveryFacade> autoDiscover = null)
        {
            var config = new JsonApiOptions();

            configureOptions(config);

            if (autoDiscover != null)
            {
                var facade = new ServiceDiscoveryFacade(services, config.ResourceGraphBuilder);
                autoDiscover(facade);
            }

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

            AddJsonApiInternals(services, config);
            return(services);
        }