public DatabaseInitializerLoader(IDatabaseInitializerDiscovery databaseInitializerDiscovery,
                                  IDatabaseInitializerComparer comparer, Func <IRepository> repositoryFunc,
                                  Func <IUnitOfWorkFactory> unitOfWorkFactoryFunc, Func <CommandContextStack> commandContextStackFunc)
 {
     this.databaseInitializerDiscovery = databaseInitializerDiscovery;
     this.comparer                = comparer;
     this.repositoryFunc          = repositoryFunc;
     this.unitOfWorkFactoryFunc   = unitOfWorkFactoryFunc;
     this.commandContextStackFunc = commandContextStackFunc;
 }
        public DatabaseInitializerLoaderTests()
        {
            initializers = new List <IDatabaseInitializer>()
            {
                Substitute.For <IDatabaseInitializer>(),
                Substitute.For <IDatabaseInitializer>()
            };

            databaseInitializerDiscovery = Substitute.For <IDatabaseInitializerDiscovery>();
            databaseInitializerDiscovery.DiscoverDatabaseInitializers().Returns(initializers);

            unitOfWork        = Substitute.For <IUnitOfWork>();
            unitOfWorkFactory = Substitute.For <IUnitOfWorkFactory>();
            unitOfWorkFactory.CreateUnitOfWork().Returns(unitOfWork);

            repository          = Substitute.For <IRepository>();
            commandContextStack = new CommandContextStack();

            sut = new DatabaseInitializerLoader(databaseInitializerDiscovery, new DatabaseInitializerDependencyComparer(),
                                                () => repository, () => unitOfWorkFactory, () => commandContextStack);
        }