/// <summary> /// Provisions the database specified in Context.DbName /// Creates the DB if it does not exist and runs all /// data context migrations against the database. /// </summary> public DbInitializationResult InitializeDb(IDbTestRunnerConfiguration config, IDbTestRunnerContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (config == null) { throw new ArgumentNullException(nameof(config)); } var result = new DbInitializationResult(); try { if (string.IsNullOrEmpty(context.DbName) || !DoesDatabaseExist(config, context.DbName)) { result.Logs.Add($"Creating new Test database {context.DbName}."); CreateDatabase(config, context); result.WasDatabaseCreated = true; } else { result.Logs.Add($"Using existing database {context.DbName}."); } try { context.ConnectionString = ProduceConnectionString(config, context.DbName); InitializeSchemaAndData(config, context, result); if (!result.IsSuccessful) { result.Logs.Add("Failed to initialize db schema and data."); result.IsSuccessful = false; } } catch (Exception e) { result.Exception = e; result.Logs.Add("Failed to initialize db schema and data."); result.IsSuccessful = false; } if (result.IsSuccessful) { result.Logs.Add($"Database {context.DbName} has been prepared for tests."); result.IsSuccessful = true; } } catch (Exception e) { result.Exception = e; result.Logs.Add($"Error attempting to Initialize DB. {e}"); result.IsSuccessful = false; } return(result); }
protected virtual void InitializeSchemaAndData(IDbTestRunnerConfiguration config, IDbTestRunnerContext context, DbInitializationResult result) { result.IsSuccessful = true; }