2020-12-10 18:09:32 +11:00
|
|
|
using System;
|
2020-08-26 07:55:23 +02:00
|
|
|
using System.Configuration;
|
2020-10-30 11:16:17 +00:00
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
2020-09-17 10:57:03 +02:00
|
|
|
using Microsoft.Extensions.Logging;
|
2021-01-20 21:01:45 +01:00
|
|
|
using Microsoft.Extensions.Options;
|
2016-05-23 12:53:29 +02:00
|
|
|
using Moq;
|
2016-04-14 18:17:18 +02:00
|
|
|
using NPoco;
|
2021-02-09 10:22:42 +01:00
|
|
|
using Umbraco.Cms.Core.Cache;
|
|
|
|
|
using Umbraco.Cms.Core.Configuration;
|
|
|
|
|
using Umbraco.Cms.Core.Configuration.Models;
|
2021-03-03 17:08:21 +01:00
|
|
|
using Umbraco.Cms.Core.Events;
|
2021-02-09 10:22:42 +01:00
|
|
|
using Umbraco.Cms.Core.IO;
|
2021-02-15 11:41:12 +01:00
|
|
|
using Umbraco.Cms.Core.Scoping;
|
2021-02-12 12:40:08 +01:00
|
|
|
using Umbraco.Cms.Infrastructure.Migrations.Install;
|
2021-02-12 13:36:50 +01:00
|
|
|
using Umbraco.Cms.Infrastructure.Persistence;
|
|
|
|
|
using Umbraco.Cms.Infrastructure.Persistence.Mappers;
|
|
|
|
|
using Umbraco.Cms.Infrastructure.Persistence.SqlSyntax;
|
2021-02-10 10:37:57 +01:00
|
|
|
using Umbraco.Cms.Persistence.SqlCe;
|
2021-01-20 21:01:45 +01:00
|
|
|
using Umbraco.Web.Composing;
|
2021-02-09 10:22:42 +01:00
|
|
|
using Constants = Umbraco.Cms.Core.Constants;
|
2016-04-14 18:17:18 +02:00
|
|
|
|
|
|
|
|
namespace Umbraco.Tests.TestHelpers
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Provides objects for tests.
|
|
|
|
|
/// </summary>
|
2016-12-14 18:40:16 +01:00
|
|
|
internal partial class TestObjects
|
2016-04-14 18:17:18 +02:00
|
|
|
{
|
2016-12-14 18:40:16 +01:00
|
|
|
|
2020-12-10 18:09:32 +11:00
|
|
|
public TestObjects()
|
2016-12-14 18:40:16 +01:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2016-04-14 18:17:18 +02:00
|
|
|
/// <summary>
|
|
|
|
|
/// Gets an UmbracoDatabase.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="logger">A logger.</param>
|
|
|
|
|
/// <returns>An UmbracoDatabase.</returns>
|
|
|
|
|
/// <remarks>This is just a void database that has no actual database but pretends to have an open connection
|
|
|
|
|
/// that can begin a transaction.</remarks>
|
2020-09-17 10:57:03 +02:00
|
|
|
public UmbracoDatabase GetUmbracoSqlCeDatabase(ILogger<UmbracoDatabase> logger)
|
2016-04-14 18:17:18 +02:00
|
|
|
{
|
2021-03-05 15:36:27 +01:00
|
|
|
var syntax = new SqlCeSyntaxProvider(Options.Create(new GlobalSettings()));
|
2016-10-13 21:08:07 +02:00
|
|
|
var connection = GetDbConnection();
|
2017-09-22 18:28:21 +02:00
|
|
|
var sqlContext = new SqlContext(syntax, DatabaseType.SQLCe, Mock.Of<IPocoDataFactory>());
|
2019-12-12 12:55:17 +01:00
|
|
|
return new UmbracoDatabase(connection, sqlContext, logger, TestHelper.BulkSqlInsertProvider);
|
2016-04-14 18:17:18 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Gets an UmbracoDatabase.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="logger">A logger.</param>
|
|
|
|
|
/// <returns>An UmbracoDatabase.</returns>
|
|
|
|
|
/// <remarks>This is just a void database that has no actual database but pretends to have an open connection
|
|
|
|
|
/// that can begin a transaction.</remarks>
|
2020-09-17 10:57:03 +02:00
|
|
|
public UmbracoDatabase GetUmbracoSqlServerDatabase(ILogger<UmbracoDatabase> logger)
|
2016-04-14 18:17:18 +02:00
|
|
|
{
|
2021-03-05 15:36:27 +01:00
|
|
|
var syntax = new SqlServerSyntaxProvider(Options.Create(new GlobalSettings())); // do NOT try to get the server's version!
|
2016-10-13 21:08:07 +02:00
|
|
|
var connection = GetDbConnection();
|
2017-09-22 18:28:21 +02:00
|
|
|
var sqlContext = new SqlContext(syntax, DatabaseType.SqlServer2008, Mock.Of<IPocoDataFactory>());
|
2019-12-12 12:55:17 +01:00
|
|
|
return new UmbracoDatabase(connection, sqlContext, logger, TestHelper.BulkSqlInsertProvider);
|
2016-04-14 18:17:18 +02:00
|
|
|
}
|
2016-04-22 09:58:02 +02:00
|
|
|
|
2020-12-10 18:09:32 +11:00
|
|
|
public IScopeProvider GetScopeProvider(ILoggerFactory loggerFactory, FileSystems fileSystems = null, IUmbracoDatabaseFactory databaseFactory = null)
|
2016-10-13 21:08:07 +02:00
|
|
|
{
|
2021-03-05 15:36:27 +01:00
|
|
|
var globalSettings = Options.Create(new GlobalSettings());
|
2020-08-26 07:55:23 +02:00
|
|
|
var connectionString = ConfigurationManager.ConnectionStrings[Constants.System.UmbracoConnectionName].ConnectionString;
|
2021-03-05 15:36:27 +01:00
|
|
|
var connectionStrings = Options.Create(new ConnectionStrings { UmbracoConnectionString = new ConfigConnectionString(Constants.System.UmbracoConnectionName, connectionString) });
|
2020-09-21 21:06:24 +02:00
|
|
|
var coreDebugSettings = new CoreDebugSettings();
|
2020-08-24 16:06:09 +02:00
|
|
|
|
2016-10-13 21:08:07 +02:00
|
|
|
if (databaseFactory == null)
|
|
|
|
|
{
|
2019-01-27 01:17:32 -05:00
|
|
|
// var mappersBuilder = new MapperCollectionBuilder(Current.Container); // FIXME:
|
|
|
|
|
// mappersBuilder.AddCore();
|
|
|
|
|
// var mappers = mappersBuilder.CreateCollection();
|
2020-10-27 10:53:01 +00:00
|
|
|
var mappers = Current.Factory.GetRequiredService<IMapperCollection>();
|
2020-09-18 12:53:06 +02:00
|
|
|
databaseFactory = new UmbracoDatabaseFactory(
|
|
|
|
|
loggerFactory.CreateLogger<UmbracoDatabaseFactory>(),
|
2020-09-17 10:57:03 +02:00
|
|
|
loggerFactory,
|
2020-08-24 16:06:09 +02:00
|
|
|
globalSettings,
|
|
|
|
|
connectionStrings,
|
2020-03-13 20:37:10 +01:00
|
|
|
new Lazy<IMapperCollection>(() => mappers),
|
2021-01-18 15:40:22 +01:00
|
|
|
TestHelper.DbProviderFactoryCreator,
|
2021-04-16 11:37:01 +02:00
|
|
|
new DatabaseSchemaCreatorFactory(Mock.Of<ILogger<DatabaseSchemaCreator>>(),loggerFactory, new UmbracoVersion(), Mock.Of<IEventAggregator>()));
|
2017-05-12 14:49:44 +02:00
|
|
|
}
|
2017-05-30 18:43:24 +02:00
|
|
|
|
2021-04-27 09:52:17 +02:00
|
|
|
fileSystems ??= new FileSystems(loggerFactory, TestHelper.IOHelper, globalSettings, TestHelper.GetHostingEnvironment());
|
2020-03-16 14:02:08 +01:00
|
|
|
var coreDebug = TestHelper.CoreDebugSettings;
|
2021-04-27 09:52:17 +02:00
|
|
|
var mediaFileManager = Mock.Of<MediaFileManager>();
|
2021-03-03 17:08:21 +01:00
|
|
|
var eventAggregator = Mock.Of<IEventAggregator>();
|
2021-04-27 09:52:17 +02:00
|
|
|
return new ScopeProvider(databaseFactory, fileSystems, Options.Create(coreDebugSettings), mediaFileManager, loggerFactory.CreateLogger<ScopeProvider>(), loggerFactory, NoAppCache.Instance, eventAggregator);
|
2017-05-12 14:49:44 +02:00
|
|
|
}
|
2019-11-15 11:07:37 +01:00
|
|
|
|
2016-04-14 18:17:18 +02:00
|
|
|
}
|
|
|
|
|
}
|