public void Given_rule_type_with_default_ctor_is_not_registered_when_getting_service_it_should_return_instance()
        {
            var serviceCollection = new ServiceCollection();
            var sut = new ServiceProviderDependencyResolverAdapter(serviceCollection.BuildServiceProvider());

            // Act
            Func <object> act = () => sut.GetService(typeof(TestRuleWithDefaultCtor));

            // Assert
            act.Should().NotThrow().Which.Should().BeOfType <TestRuleWithDefaultCtor>();
        }
        public void Given_rule_type_with_dependency_are_both_not_registered_when_getting_service_it_should_throw()
        {
            var serviceCollection = new ServiceCollection();
            var sut = new ServiceProviderDependencyResolverAdapter(serviceCollection.BuildServiceProvider());

            // Act
            Func <object> act = () => sut.GetService(typeof(TestRuleWithDependency));

            // Assert
            act.Should().Throw <InvalidOperationException>();
        }
        public void Given_service_is_not_registered_when_getting_service_it_should_return_null()
        {
            var serviceCollection = new ServiceCollection();
            var sut = new ServiceProviderDependencyResolverAdapter(serviceCollection.BuildServiceProvider());

            // Act
            Func <object> act = () => sut.GetService(typeof(object));

            // Assert
            act.Should().NotThrow().Which.Should().BeNull();
        }
        public void Given_rule_type_with_dependency_and_dependency_is_registered_when_getting_service_it_should_not_throw()
        {
            IServiceCollection serviceCollection = new ServiceCollection()
                                                   .AddTransient <Dependency>();
            var sut = new ServiceProviderDependencyResolverAdapter(serviceCollection.BuildServiceProvider());

            // Act
            Func <object> act = () => sut.GetService(typeof(TestRuleWithDependency));

            // Assert
            act.Should().NotThrow().Which.Should().BeOfType <TestRuleWithDependency>();
        }