using System; using System.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Moq; using NPoco; using Umbraco.Cms.Core.Cache; using Umbraco.Cms.Core.Configuration; using Umbraco.Cms.Core.Configuration.Models; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.IO; using Umbraco.Cms.Core.Scoping; using Umbraco.Cms.Infrastructure.Migrations.Install; using Umbraco.Cms.Infrastructure.Persistence; using Umbraco.Cms.Infrastructure.Persistence.Mappers; using Umbraco.Cms.Infrastructure.Persistence.SqlSyntax; using Umbraco.Cms.Persistence.SqlCe; using Umbraco.Web.Composing; using Constants = Umbraco.Cms.Core.Constants; namespace Umbraco.Tests.TestHelpers { /// /// Provides objects for tests. /// internal partial class TestObjects { public TestObjects() { } /// /// Gets an UmbracoDatabase. /// /// A logger. /// An UmbracoDatabase. /// This is just a void database that has no actual database but pretends to have an open connection /// that can begin a transaction. public UmbracoDatabase GetUmbracoSqlCeDatabase(ILogger logger) { var syntax = new SqlCeSyntaxProvider(Options.Create(new GlobalSettings())); var connection = GetDbConnection(); var sqlContext = new SqlContext(syntax, DatabaseType.SQLCe, Mock.Of()); return new UmbracoDatabase(connection, sqlContext, logger, TestHelper.BulkSqlInsertProvider); } /// /// Gets an UmbracoDatabase. /// /// A logger. /// An UmbracoDatabase. /// This is just a void database that has no actual database but pretends to have an open connection /// that can begin a transaction. public UmbracoDatabase GetUmbracoSqlServerDatabase(ILogger logger) { var syntax = new SqlServerSyntaxProvider(Options.Create(new GlobalSettings())); // do NOT try to get the server's version! var connection = GetDbConnection(); var sqlContext = new SqlContext(syntax, DatabaseType.SqlServer2008, Mock.Of()); return new UmbracoDatabase(connection, sqlContext, logger, TestHelper.BulkSqlInsertProvider); } public IScopeProvider GetScopeProvider(ILoggerFactory loggerFactory, FileSystems fileSystems = null, IUmbracoDatabaseFactory databaseFactory = null) { var globalSettings = Options.Create(new GlobalSettings()); var connectionString = ConfigurationManager.ConnectionStrings[Constants.System.UmbracoConnectionName].ConnectionString; var connectionStrings = Options.Create(new ConnectionStrings { UmbracoConnectionString = new ConfigConnectionString(Constants.System.UmbracoConnectionName, connectionString) }); var coreDebugSettings = new CoreDebugSettings(); if (databaseFactory == null) { // var mappersBuilder = new MapperCollectionBuilder(Current.Container); // FIXME: // mappersBuilder.AddCore(); // var mappers = mappersBuilder.CreateCollection(); var mappers = Current.Factory.GetRequiredService(); databaseFactory = new UmbracoDatabaseFactory( loggerFactory.CreateLogger(), loggerFactory, globalSettings, connectionStrings, new Lazy(() => mappers), TestHelper.DbProviderFactoryCreator, new DatabaseSchemaCreatorFactory(Mock.Of>(),loggerFactory, new UmbracoVersion(), Mock.Of())); } fileSystems ??= new FileSystems(loggerFactory, TestHelper.IOHelper, globalSettings, TestHelper.GetHostingEnvironment()); var coreDebug = TestHelper.CoreDebugSettings; var mediaFileManager = Mock.Of(); var eventAggregator = Mock.Of(); return new ScopeProvider(databaseFactory, fileSystems, Options.Create(coreDebugSettings), mediaFileManager, loggerFactory.CreateLogger(), loggerFactory, NoAppCache.Instance, eventAggregator); } } }