Beispiel #1
0
        public void TestGetAllForMinimumRequirementSelectsTheLatestIfNotReachable()
        {
            var locator = new ProviderLocator(new ProviderRegistry());

            string[] providerTypeNames = locator.GetAllForMinimumRequirement(DbPlatform.SqlServer2014).Select(i => i.Provider).Select(p => p.GetType().Name).ToArray();
            CollectionAssert.AreEquivalent(new[] { "SqlServer2012Provider" }, providerTypeNames);
        }
Beispiel #2
0
        public void TestGetExactly()
        {
            var          locator = new ProviderLocator(new ProviderRegistry());
            ProviderInfo info    = locator.GetExactly(DbPlatform.SqlServer2012);

            Assert.AreEqual("SqlServer2012Provider", info.Provider.GetType().Name);
        }
Beispiel #3
0
        public void TestGetLatestWhenThereIsOnlyOlderProviders()
        {
            var          locator = new ProviderLocator(new ProviderRegistry());
            ProviderInfo info    = locator.GetLatest(DbPlatform.SqlServer2014);

            Assert.AreEqual("SqlServer2012Provider", 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 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 TestGetAllForMinimumRequirement()
        {
            var locator = new ProviderLocator(new ProviderFactory());

            string[] providerTypeNames = locator.GetAllForMinimumRequirement(DbPlatform.SqlServer2008).Select(i => i.Provider).Select(p => p.GetType().Name).ToArray();
            CollectionAssert.AreEquivalent(new[] { "SqlServer2008Provider", "SqlServer2012Provider" }, providerTypeNames);
        }
Beispiel #8
0
        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);
        }
Beispiel #9
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));
        }
Beispiel #10
0
        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();
            }
        }
        /// <summary>
        /// Recupera a origemd de ados
        /// </summary>
        /// <param name="queryInfo"></param>
        /// <returns></returns>
        private IQueryDataSource GetDataSource(QueryInfo queryInfo)
        {
            var providerName            = ProviderLocator.GetProviderName(queryInfo);
            IQueryDataSource dataSource = null;

            lock (_objLock)
                if (_queryDataSources.TryGetValue(providerName, out dataSource))
                {
                    return(dataSource);
                }
            dataSource = _serviceLocator.GetInstance <IQueryDataSource>(string.Format("{0}QueryDataSource", providerName));
            if (dataSource == null)
            {
                throw new Exception(ResourceMessageFormatter.Create(() => Properties.Resources.DataSourceUndefined).Format());
            }
            lock (_objLock)
            {
                if (!_queryDataSources.ContainsKey(providerName))
                {
                    _queryDataSources.Add(providerName, dataSource);
                }
            }
            return(dataSource);
        }
Beispiel #13
0
 public ValidatorFactory(ProviderInfo providerInfo, DbAltererOptions options, ProviderLocator providerLocator)
 {
     _providerInfo    = providerInfo;
     _options         = options;
     _providerLocator = providerLocator;
 }
Beispiel #14
0
        public void TestGetExactlyThrowsIfNoMatchingProviderIsFound()
        {
            var locator = new ProviderLocator(new ProviderRegistry());

            Assert.That(() => locator.GetExactly(DbPlatform.SqlServer2014), Throws.Exception);
        }
Beispiel #15
0
        public void TestGetLatestWhenThereIsNoMatchingProviders()
        {
            var locator = new ProviderLocator(new ProviderRegistry());

            Assert.That(() => locator.GetLatest(new DbPlatform(Platform.SqlServer, 8)), Throws.Exception);
        }