// It's internal because `Umbraco.Core.Persistence.LocalDb` is internal
    internal LocalDbTestDatabase(TestDatabaseSettings settings, ILoggerFactory loggerFactory, LocalDb localDb, IUmbracoDatabaseFactory dbFactory)
    {
        _loggerFactory   = loggerFactory;
        _databaseFactory = dbFactory;

        _settings   = settings;
        _localDb    = localDb;
        s_filesPath = settings.FilesPath;

        var counter = 0;

        var schema = Enumerable.Range(0, _settings.SchemaDatabaseCount)
                     .Select(x => TestDbMeta.CreateWithoutConnectionString($"{DatabaseName}-{++counter}", false));

        var empty = Enumerable.Range(0, _settings.EmptyDatabasesCount)
                    .Select(x => TestDbMeta.CreateWithoutConnectionString($"{DatabaseName}-{++counter}", true));

        _testDatabases = schema.Concat(empty).ToList();

        s_localDbInstance = _localDb.GetInstance(InstanceName);
        if (s_localDbInstance != null)
        {
            return;
        }

        if (_localDb.CreateInstance(InstanceName) == false)
        {
            throw new Exception("Failed to create a LocalDb instance.");
        }

        s_localDbInstance = _localDb.GetInstance(InstanceName);
    }
Esempio n. 2
0
    public SqliteTestDatabase(TestDatabaseSettings settings, TestUmbracoDatabaseFactoryProvider dbFactoryProvider, ILoggerFactory loggerFactory)
    {
        _settings          = settings ?? throw new ArgumentNullException(nameof(settings));
        _dbFactoryProvider = dbFactoryProvider;
        _databaseFactory   = dbFactoryProvider.Create();
        _loggerFactory     = loggerFactory;

        var schema = Enumerable.Range(0, _settings.SchemaDatabaseCount)
                     .Select(x => CreateSqLiteMeta(false));

        var empty = Enumerable.Range(0, _settings.EmptyDatabasesCount)
                    .Select(x => CreateSqLiteMeta(true));

        _testDatabases = schema.Concat(empty).ToList();
    }
    public SqlServerTestDatabase(TestDatabaseSettings settings, ILoggerFactory loggerFactory, IUmbracoDatabaseFactory databaseFactory)
    {
        _loggerFactory   = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
        _databaseFactory = databaseFactory ?? throw new ArgumentNullException(nameof(databaseFactory));

        _settings = settings;

        var counter = 0;

        var schema = Enumerable.Range(0, _settings.SchemaDatabaseCount)
                     .Select(x => TestDbMeta.CreateWithMasterConnectionString($"{DatabaseName}-{++counter}", false, _settings.SQLServerMasterConnectionString));

        var empty = Enumerable.Range(0, _settings.EmptyDatabasesCount)
                    .Select(x => TestDbMeta.CreateWithMasterConnectionString($"{DatabaseName}-{++counter}", true, _settings.SQLServerMasterConnectionString));

        _testDatabases = schema.Concat(empty).ToList();
    }
 /// <summary>
 ///     Creates a TestDatabase instance
 /// </summary>
 /// <remarks>
 ///     SQL Server setup requires configured master connection string &amp; privileges to create database.
 /// </remarks>
 /// <example>
 ///     <code>
 /// # SQL Server Environment variable setup
 /// $ export Tests__Database__DatabaseType="SqlServer"
 /// $ export Tests__Database__SQLServerMasterConnectionString="Server=localhost,1433; User Id=sa; Password=MySuperSecretPassword123!;"
 /// </code>
 /// </example>
 /// <example>
 ///     <code>
 /// # Docker cheat sheet
 /// $ docker run -e 'ACCEPT_EULA=Y' -e "SA_PASSWORD=MySuperSecretPassword123!" -e 'MSSQL_PID=Developer' -p 1433:1433 -d mcr.microsoft.com/mssql/server:2017-latest-ubuntu
 /// </code>
 /// </example>
 public static ITestDatabase Create(TestDatabaseSettings settings, TestUmbracoDatabaseFactoryProvider dbFactory, ILoggerFactory loggerFactory) =>
 settings.DatabaseType switch
 {
Esempio n. 5
0
 public static void Db(string connectionString, string providerName)
 {
     //seed data
     DbSettings = DependencyResolver.Resolve <IDatabaseSettings>() as TestDatabaseSettings;
     DbSettings.SetSettings(connectionString, providerName);
 }