// Copyright (c) Umbraco. // See LICENSE for more details. using System; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Cms.Core.Configuration.Models; using Umbraco.Core.Migrations.Install; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Mappers; namespace Umbraco.Tests.Integration.Testing { /// /// I want to be able to create a database for integration testsing without setting the connection string on the /// singleton database factory forever. /// public class TestUmbracoDatabaseFactoryProvider { private readonly ILoggerFactory _loggerFactory; private readonly IOptions _globalSettings; private readonly IOptions _connectionStrings; private readonly Lazy _mappers; private readonly IDbProviderFactoryCreator _dbProviderFactoryCreator; private readonly DatabaseSchemaCreatorFactory _databaseSchemaCreatorFactory; public TestUmbracoDatabaseFactoryProvider( ILoggerFactory loggerFactory, IOptions globalSettings, IOptions connectionStrings, Lazy mappers, IDbProviderFactoryCreator dbProviderFactoryCreator, DatabaseSchemaCreatorFactory databaseSchemaCreatorFactory) { _loggerFactory = loggerFactory; _globalSettings = globalSettings; _connectionStrings = connectionStrings; _mappers = mappers; _dbProviderFactoryCreator = dbProviderFactoryCreator; _databaseSchemaCreatorFactory = databaseSchemaCreatorFactory; } public IUmbracoDatabaseFactory Create() { // ReSharper disable once ArrangeMethodOrOperatorBody return new UmbracoDatabaseFactory( _loggerFactory.CreateLogger(), _loggerFactory, _globalSettings.Value, _connectionStrings.Value, _mappers, _dbProviderFactoryCreator, _databaseSchemaCreatorFactory); } } }