public void ServiceIsRegisteredAsSingleton_TwoResolvedInstancesAreSame()
        {
            var adapter = new AutofacAdapter();

            adapter.RegisterSingleton <ITestDependency, TestDependencyA>();
            adapter.BuildAsLifetimeScope();

            var firstDependency  = adapter.Resolve <ITestDependency>();
            var secondDependency = adapter.Resolve <ITestDependency>();

            firstDependency.Should().BeSameAs(secondDependency);
        }
        public void MultipleImplementationAreRegisteredByTypeAsParameter_ResolvedCollectionContainsAllImplementations()
        {
            var adapter = new AutofacAdapter();

            adapter.RegisterCollection(typeof(ITestDependency), new[] { typeof(TestDependencyA), typeof(TestDependencyB) });
            adapter.BuildAsLifetimeScope();

            var collection = adapter.Resolve <IEnumerable <ITestDependency> >().ToArray();

            collection.Should().Contain(r => r is TestDependencyA);
            collection.Should().Contain(r => r is TestDependencyB);
        }
        public void ServiceIsRegisteredAsTransient_TwoResolvedInstancesAreDifferent()
        {
            var adapter = new AutofacAdapter();

            adapter.RegisterTransient <ITestDependency, TestDependencyA>();
            adapter.BuildAsLifetimeScope();

            var firstDependency  = adapter.Resolve <ITestDependency>();
            var secondDependency = adapter.Resolve <ITestDependency>();

            firstDependency.Should().NotBeSameAs(secondDependency);
        }
        public void MultipleImplementationAreRegisteredByInstance_ResolvedCollectionContainsAllImplementations()
        {
            var adapter   = new AutofacAdapter();
            var instanceA = new TestDependencyA();
            var instanceB = new TestDependencyB();

            adapter.RegisterCollection(new ITestDependency[] { instanceA, instanceB });
            adapter.BuildAsLifetimeScope();

            var collection = adapter.Resolve <IEnumerable <ITestDependency> >().ToArray();

            collection.Should().Contain(instanceA);
            collection.Should().Contain(instanceB);
        }