public void Create_WillReturnSingletons_ByDefault()
        {
            ComponentBeingConfigured target1 = container.Create <ComponentBeingConfigured>();
            ComponentBeingConfigured target2 = container.Create <ComponentBeingConfigured>();

            Assert.AreSame(target1, target2);
        }
        public void Create_CanResolveDependenciesAsStubs()
        {
            container.Mark <ICollectionOfServices>().Stubbed();
            ComponentBeingConfigured target = container.Create <ComponentBeingConfigured>();

            VerifyIsStub(target.Services);
        }
        public void Create_WillResolveDependencies()
        {
            ComponentBeingConfigured target = container.Create <ComponentBeingConfigured>();

            Assert.IsNotNull(target.ReallyCoolService, "mocked ReallyCoolService dependency");
            Assert.IsNotNull(target.Services, "mocked Services dependency");
        }
        public void Create_WillReturnInstanceOfRequestedComponent()
        {
            ComponentBeingConfigured target = container.Create <ComponentBeingConfigured>();

            Assert.IsNotNull(target, "component created");
            Assert.IsInstanceOfType(typeof(ComponentBeingConfigured), target, "expected type created");
        }
        public void CanStopContainerResolvingSpecificDependencies()
        {
            container.MarkMissing <ICollectionOfServices>();
            ComponentBeingConfigured target = container.Create <ComponentBeingConfigured>();

            Assert.IsNull(target.Services);
        }
        public void Create_CanResolveDepdendenciesAsExplicitlyRegisteredTypes()
        {
            container.AddComponent("DefaultCollectionOfServices", typeof(ICollectionOfServices),
                                   typeof(DefaultCollectionOfServices));
            ComponentBeingConfigured target = container.Create <ComponentBeingConfigured>();

            Assert.IsInstanceOfType(typeof(DefaultCollectionOfServices), target.Services);
        }
        public void Create_ReturningTransientInstances_WillResolveDependenciesToTheSameMockObjects()
        {
            Type targetType = typeof(ComponentBeingConfigured);

            container.AddComponentLifeStyle(targetType.FullName, targetType, LifestyleType.Transient);

            ComponentBeingConfigured target1 = container.Create <ComponentBeingConfigured>();
            ComponentBeingConfigured target2 = container.Create <ComponentBeingConfigured>();

            Assert.AreSame(target1.ReallyCoolService, target2.ReallyCoolService);
        }
        public void Create_CanReturnTransientInstances()
        {
            Type targetType = typeof(ComponentBeingConfigured);

            container.AddComponentLifeStyle(targetType.FullName, targetType, LifestyleType.Transient);

            ComponentBeingConfigured target1 = container.Create <ComponentBeingConfigured>();
            ComponentBeingConfigured target2 = container.Create <ComponentBeingConfigured>();

            Assert.AreNotSame(target1, target2);
        }
        public void Create_WillIgnoreLifestyleOfExplictlyRegisteredTypes_WhenResolvingDependencies()
        {
            //make sure that container will create two instances of ComponentBeingConfigured
            Type targetType = typeof(ComponentBeingConfigured);

            container.AddComponentLifeStyle(targetType.FullName, targetType, LifestyleType.Transient);

            //explictly register dependency to be resolved as transient
            container.AddComponentLifeStyle("DefaultCollectionOfServices", typeof(ICollectionOfServices),
                                            typeof(DefaultCollectionOfServices), LifestyleType.Transient);

            ComponentBeingConfigured target1 = container.Create <ComponentBeingConfigured>();
            ComponentBeingConfigured target2 = container.Create <ComponentBeingConfigured>();

            Assert.AreNotSame(target1, target2, "two instances of components created");
            Assert.AreSame(target1.Services, target2.Services, "dependencies are same even when this was not requested");
        }
        public void Create_WillResolveDependenciesAsMocks_ByDefault()
        {
            ComponentBeingConfigured target = container.Create <ComponentBeingConfigured>();

            VerifyIsMock(target.ReallyCoolService);
        }