Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
 protected virtual void InitializeSchemaAndData(IDbTestRunnerConfiguration config, IDbTestRunnerContext context, DbInitializationResult result)
 {
     result.IsSuccessful = true;
 }