Exemple #1
0
        private RuntimeConfiguration CreateRuntimeConfiguration(string connectionString, DbPlatform dbPlatform, DbAltererOptions options)
        {
            var providerLocator = new ProviderLocator(new ProviderFactory()); // CLEAN: use DI container

            var providerInfo = providerLocator.GetLatest(dbPlatform);
            var validatorFactory = new ValidatorFactory(providerInfo, options, providerLocator);
            var validator = validatorFactory.Create();
            var connectionInfo = new ConnectionInfo(connectionString, providerInfo.Metadata.InvariantName, providerInfo.Metadata.SupportsTransactions, providerInfo.Metadata.EnableAnsiQuotesCommand);
            var sqlDispatcher = new SqlDispatcher(options.GetScriptingOptions(), providerInfo.Provider, providerInfo.Metadata);
            return new RuntimeConfiguration(providerInfo, connectionInfo, validator, sqlDispatcher);
        }
        public void CheckProviderValidation(DbPlatform platformUnderExecution, DbAltererOptions options, int expectedTotalNumberOfSupportedProviders, int expectedValidationRuns)
        {
            // arrange
            var providerLocator = new ProviderLocator(new ProviderFactory());
            int totalNumberOfSupportedProviders = options.SupportedPlatforms.Sum(n => providerLocator.GetAllForMinimumRequirement(n).Count());
            var validatorFactory = new ValidatorFactory(providerLocator.GetExactly(platformUnderExecution), options, providerLocator);
            Validator validator = validatorFactory.Create();

            var reporter = A.Fake<IMigrationReporter>();
            string errors;
            string warnings;

            // act
            validator.Validate(new[] { reporter }, out errors, out warnings);

            // assert
            Assert.AreEqual(expectedTotalNumberOfSupportedProviders, totalNumberOfSupportedProviders, "Wrong total number of providers.");
            A.CallTo(() => reporter.Report(A<IMigrationContext>._)).MustHaveHappened(Repeated.Exactly.Times(expectedValidationRuns));
        }
 public SqlAggregateMigrationGenerator(Server server, Database database, GeneratorOptions options)
     : base(server, database, options)
 {
     var providerLocator = new ProviderLocator(new ProviderFactory()); // CLEAN: use DI container
     ProviderInfo provider = providerLocator.GetExactly(DbPlatform.SqlServer2008);
     var versioningTableName = new TableName(options.VersioningTableName, options.VersioningTableSchema);
     _history = new History(versioningTableName, provider.Metadata);
     IDbConnection connection = server.ConnectionContext.SqlConnectionObject;
     connection.Open();
     connection.ChangeDatabase(Database.Name); // ATTENTION: possibly has side-effects
     try
     {
         _history.Load(connection, null);
     }
     finally
     {
         connection.Close();
     }
 }
 public ValidatorFactory(ProviderInfo providerInfo, DbAltererOptions options, ProviderLocator providerLocator)
 {
     _providerInfo = providerInfo;
     _options = options;
     _providerLocator = providerLocator;
 }
        public virtual void Setup()
        {
            _options = new MigrationOptions();
            _options.SupportedPlatforms.Set(new[] { DbPlatform }); // avoid validation errors/warnings from other providers

            // initialize IntegrationTestContext
            IProviderFactory providerFactory = new ProviderFactory();
            var providerLocator = new ProviderLocator(providerFactory);
            ProviderInfo providerInfo = providerLocator.GetExactly(DbPlatform);
            IntegrationTestContext.Initialize(_options, providerInfo);
        }
 public void TestGetLatestWhenThereIsOnlyOlderProviders()
 {
     var locator = new ProviderLocator(new ProviderFactory());
     ProviderInfo info = locator.GetLatest(DbPlatform.SqlServer2014);
     Assert.AreEqual("SqlServer2012Provider", info.Provider.GetType().Name);
 }
 public void TestGetLatestWhenThereIsNoMatchingProviders()
 {
     var locator = new ProviderLocator(new ProviderFactory());
     ProviderInfo info = locator.GetLatest(new DbPlatform(Platform.SqlServer, 8));
     Assert.AreEqual("SqlServer2000Provider", info.Provider.GetType().FullName);
 }
 public void TestGetLatestWhenThereIsMatchingProvider()
 {
     var locator = new ProviderLocator(new ProviderFactory());
     ProviderInfo info = locator.GetLatest(DbPlatform.SqlServer2008);
     Assert.AreEqual("SqlServer2008Provider", info.Provider.GetType().Name);
 }
 public void TestGetExactlyThrowsIfNoMatchingProviderIsFound()
 {
     var locator = new ProviderLocator(new ProviderFactory());
     ProviderInfo info = locator.GetExactly(DbPlatform.SqlServer2014);
     Assert.AreEqual("SqlServer2014Provider", info.Provider.GetType().FullName);
 }
 public void TestGetExactly()
 {
     var locator = new ProviderLocator(new ProviderFactory());
     ProviderInfo info = locator.GetExactly(DbPlatform.SqlServer2008);
     Assert.AreEqual("SqlServer2008Provider", info.Provider.GetType().Name);
 }
 public void TestGetAllForMinimumRequirementSelectsTheLatestIfNotReachable()
 {
     var locator = new ProviderLocator(new ProviderFactory());
     string[] providerTypeNames = locator.GetAllForMinimumRequirement(DbPlatform.SqlServer2014).Select(i => i.Provider).Select(p => p.GetType().Name).ToArray();
     CollectionAssert.AreEquivalent(new[] { "SqlServer2012Provider" }, providerTypeNames);
 }