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); }