public void Execute_Should_Register_ModelServices_That_Have_Base_ModelService()
        {
            var dependencyResolver = new Mock<TestableDependencyResolver> { CallBase = true };
            var appDomainHelper = new Mock<IAppDomainHelper>();

            appDomainHelper.Setup(a => a.GetTypes(It.IsAny<Func<Type, bool>>()))
                .Returns(() => new[] {  typeof(DummyModel), typeof(InheritedDummyModelService) });

            var task = new AutoRegisterModelServices(dependencyResolver.Object, new[] { appDomainHelper.Object });
            task.Execute();

            dependencyResolver.Verify(d => d.RegisterType(typeof(IModelService<DummyModel>), typeof(InheritedDummyModelService)), Times.Once());
            dependencyResolver.Verify(d => d.RegisterType(It.IsAny<Type>(), It.IsAny<Type>()), Times.Once());
        }
        public void Execute_Should_Register_ModelServices_For_ModelEntities_That_Dont_Have_A_Service()
        {
            var dependencyResolver = new Mock<TestableDependencyResolver> { CallBase = true };
            var appDomainHelper = new Mock<IAppDomainHelper>();

            appDomainHelper.Setup(a => a.GetTypes(It.IsAny<Func<Type, bool>>()))
                .Returns(() => new[] { typeof(DummyModel), typeof(DummyModel2), typeof(InheritedDummyModelService) });

            var task = new AutoRegisterModelServices(dependencyResolver.Object, new[] { appDomainHelper.Object });
            task.Execute();

            dependencyResolver.Verify(d => d.RegisterType(typeof(IModelService<DummyModel>), typeof(InheritedDummyModelService)), Times.Once());
            dependencyResolver.Verify(d => d.RegisterType(typeof(IModelService<DummyModel2>), It.Is<Type>(value => value.Name.StartsWith("DynamicGeneratedModelService"))), Times.Once());
            dependencyResolver.Verify(d => d.RegisterType(It.IsAny<Type>(), It.IsAny<Type>()), Times.Exactly(2));
        }
        public void Execute_Should_Not_Register_ModelServices_For_ModelEntities_If_CreateMissingModelServices_Set_To_False()
        {
            var dependencyResolver = new Mock<TestableDependencyResolver> { CallBase = true };
            var appDomainHelper = new Mock<IAppDomainHelper>();

            appDomainHelper.Setup(a => a.GetTypes(It.IsAny<Func<Type, bool>>()))
                .Returns(() => new[] { typeof(DummyModel), typeof(DummyModel2) });

            var task = new AutoRegisterModelServices(dependencyResolver.Object, new[] { appDomainHelper.Object });
            AutoRegisterModelServices.CreateMissingModelServices = false;
            task.Execute();
            //reset for other tests :)
            AutoRegisterModelServices.CreateMissingModelServices = true;
            dependencyResolver.Verify(d => d.RegisterType(It.IsAny<Type>(), It.IsAny<Type>()), Times.Never());
        }