public void When_Action_Is_Applied_Factory_With_No_Configuration_Or_Convention_Available_DefaultFactory_Is_Applied()
        {
            var provider = new Mock<IEngineConfigurationProvider>();
            var targetType = new Mock<IEngineConfigurationType>();
            targetType.SetupGet(x => x.RegisteredType).Returns(typeof (SimpleUser));
            provider.Setup(x => x.GetConfigurationTypes()).Returns(new IEngineConfigurationTypeProvider[] {});

            ApplyTypeFactoryAction action = new ApplyTypeFactoryAction(provider.Object);
            action.Apply(targetType.Object);

            targetType.Verify(x => x.SetFactory(
                It.Is<IEngineConfigurationDatasource>(y=> y.Build() is FallbackObjectFactory<SimpleUser>)),
                Times.Once());
        }
        public void When_Action_Is_Applied_Factory_Is_Applied_From_Configuration()
        {
            var provider = new Mock<IEngineConfigurationProvider>();
            var targetType = new Mock<IEngineConfigurationType>();
            var targetTypeProvider = new Mock<IEngineConfigurationTypeProvider>();
            var factory = new Mock<IEngineConfigurationDatasource>();

            targetType.SetupGet(x => x.RegisteredType).Returns(typeof (SimpleUser));
            targetTypeProvider.Setup(x => x.GetConfigurationType()).Returns(typeof (SimpleUser));

            provider.Setup(x => x.GetConfigurationTypes()).Returns(new[] {targetTypeProvider.Object});
            targetTypeProvider.Setup(x => x.GetFactory()).Returns(factory.Object);

            ApplyTypeFactoryAction action = new ApplyTypeFactoryAction(provider.Object);
            action.Apply(targetType.Object);

            targetType.Verify(x => x.SetFactory(factory.Object), Times.Once());
        }