public void InstantiageObject_AllRunnersSetup_ObjectReturned()
        {
            //Assign

            var resolver = Substitute.For<IDependencyResolver>();

            var context = Context.Create(resolver);

            var configTask = Substitute.For<AbstractConfigurationResolverTask>();
            var objTask = Substitute.For<AbstractObjectConstructionTask>();

            resolver.ConfigurationResolverFactory.GetItems().Returns(new[] { configTask });
            resolver.ObjectConstructionFactory.GetItems().Returns(new []{objTask});
            resolver.GetModelCounter().Returns( new ModelCounter());

            configTask.When(x => x.Execute(Arg.Any<ConfigurationResolverArgs>()))
                .Do(x => x.Arg<ConfigurationResolverArgs>().Result = Substitute.For<AbstractTypeConfiguration>());

            var expected = new object();

            objTask.When(x => x.Execute(Arg.Any<ObjectConstructionArgs>()))
                .Do(x => x.Arg<ObjectConstructionArgs>().Result = expected);

            var service = new StubAbstractService(context);

            var typeContext = Substitute.For<AbstractTypeCreationContext>();
            typeContext.RequestedType = typeof(object);

            //Act
            var result = service.InstantiateObject(typeContext);

            //Assert
            Assert.AreEqual(expected, result);
        }
        public void InstantiageObject_AllRunnersSetup_ObjectReturned()
        {
            //Assign

            var resolver = Substitute.For <IDependencyResolver>();

            var context = Context.Create(resolver);

            var configTask = Substitute.For <IConfigurationResolverTask>();
            var objTask    = Substitute.For <IObjectConstructionTask>();

            resolver.ConfigurationResolverFactory.GetItems().Returns(new[] { configTask });
            resolver.ObjectConstructionFactory.GetItems().Returns(new [] { objTask });

            configTask.When(x => x.Execute(Arg.Any <ConfigurationResolverArgs>()))
            .Do(x => x.Arg <ConfigurationResolverArgs>().Result = Substitute.For <AbstractTypeConfiguration>());

            var expected = new object();

            objTask.When(x => x.Execute(Arg.Any <ObjectConstructionArgs>()))
            .Do(x => x.Arg <ObjectConstructionArgs>().Result = expected);

            var service = new StubAbstractService(context);

            var typeContext = Substitute.For <AbstractTypeCreationContext>();

            typeContext.RequestedType = typeof(object);

            //Act
            var result = service.InstantiateObject(typeContext);

            //Assert
            Assert.AreEqual(expected, result);
        }
        public void Contructor_ContextIsNull_ThrowsException()
        {
            //Assign

            //Act
            var service = new StubAbstractService(null);

            //Assert
        }
        public void Contructor_ContextIsNull_ThrowsException()
        {
            //Assign

            //Act
            var service = new StubAbstractService(null);

            //Assert
        }
        public void Contructor_ContextIsNull_ThrowsException()
        {
            //Assign

            //Act
            Assert.Throws <NullReferenceException>(() =>
            {
                var service = new StubAbstractService(null);
            });

            //Assert
        }