Files
Umbraco-CMS/src/Umbraco.Tests/TestHelpers/TestObjects.cs

94 lines
4.4 KiB
C#
Raw Normal View History

2020-12-10 18:09:32 +11:00
using System;
2020-08-26 07:55:23 +02:00
using System.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
2016-05-23 12:53:29 +02:00
using Moq;
2016-04-14 18:17:18 +02:00
using NPoco;
using Umbraco.Cms.Core.Cache;
using Umbraco.Cms.Core.Configuration;
using Umbraco.Cms.Core.Configuration.Models;
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;
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>
public UmbracoDatabase GetUmbracoSqlCeDatabase(ILogger<UmbracoDatabase> logger)
2016-04-14 18:17:18 +02:00
{
var syntax = new SqlCeSyntaxProvider();
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>());
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>
public UmbracoDatabase GetUmbracoSqlServerDatabase(ILogger<UmbracoDatabase> logger)
2016-04-14 18:17:18 +02:00
{
var syntax = new SqlServerSyntaxProvider(); // 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>());
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
{
2020-09-21 21:06:24 +02:00
var globalSettings = new GlobalSettings();
2020-08-26 07:55:23 +02:00
var connectionString = ConfigurationManager.ConnectionStrings[Constants.System.UmbracoConnectionName].ConnectionString;
2020-09-21 21:06:24 +02:00
var connectionStrings = new ConnectionStrings { UmbracoConnectionString = new ConfigConnectionString(Constants.System.UmbracoConnectionName, connectionString) };
var coreDebugSettings = new CoreDebugSettings();
2020-08-24 16:06:09 +02:00
2016-10-13 21:08:07 +02:00
if (databaseFactory == null)
{
// var mappersBuilder = new MapperCollectionBuilder(Current.Container); // FIXME:
// mappersBuilder.AddCore();
// var mappers = mappersBuilder.CreateCollection();
var mappers = Current.Factory.GetRequiredService<IMapperCollection>();
2020-09-18 12:53:06 +02:00
databaseFactory = new UmbracoDatabaseFactory(
loggerFactory.CreateLogger<UmbracoDatabaseFactory>(),
loggerFactory,
2020-08-24 16:06:09 +02:00
globalSettings,
connectionStrings,
2020-03-13 20:37:10 +01:00
new Lazy<IMapperCollection>(() => mappers),
Merge remote-tracking branch 'origin/v8/dev' into netcore/feature/merge-v8-18-01-2021 # Conflicts: # .gitignore # build/NuSpecs/UmbracoCms.Core.nuspec # src/SolutionInfo.cs # src/Umbraco.Core/Configuration/UmbracoSettings/BackOfficeElement.cs # src/Umbraco.Core/Configuration/UmbracoSettings/ContentElement.cs # src/Umbraco.Core/Configuration/UmbracoSettings/IBackOfficeSection.cs # src/Umbraco.Core/Configuration/UmbracoSettings/IContentSection.cs # src/Umbraco.Core/IO/SystemFiles.cs # src/Umbraco.Core/Models/ContentBase.cs # src/Umbraco.Core/Models/Identity/BackOfficeIdentityUser.cs # src/Umbraco.Core/Persistence/UmbracoDatabaseExtensions.cs # src/Umbraco.Core/Runtime/CoreRuntime.cs # src/Umbraco.Core/RuntimeOptions.cs # src/Umbraco.Core/RuntimeState.cs # src/Umbraco.Core/Telemetry/TelemetryMarkerComponent.cs # src/Umbraco.Core/Telemetry/TelemetryMarkerComposer.cs # src/Umbraco.Examine/Umbraco.Examine.csproj # src/Umbraco.Infrastructure/HostedServices/ReportSiteTask.cs # src/Umbraco.Infrastructure/Install/InstallStepCollection.cs # src/Umbraco.Infrastructure/Install/InstallSteps/NewInstallStep.cs # src/Umbraco.Infrastructure/Migrations/Install/DatabaseBuilder.cs # src/Umbraco.Infrastructure/Migrations/Install/DatabaseSchemaCreator.cs # src/Umbraco.Infrastructure/Runtime/SqlMainDomLock.cs # src/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/ContentTypeRepositoryTest.cs # src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs # src/Umbraco.Tests/Runtimes/StandaloneTests.cs # src/Umbraco.Tests/Testing/TestDatabase.cs # src/Umbraco.Web.BackOffice/Controllers/BackOfficeServerVariables.cs # src/Umbraco.Web.UI.Client/src/installer/steps/database.controller.js # src/Umbraco.Web.UI.NetCore/Views/Partials/Grid/Editors/TextString.cshtml # src/Umbraco.Web.UI.NetCore/umbraco/config/lang/da.xml # src/Umbraco.Web.UI.NetCore/umbraco/config/lang/en.xml # src/Umbraco.Web.UI.NetCore/umbraco/config/lang/en_us.xml # src/Umbraco.Web.UI/Umbraco/config/lang/cs.xml # src/Umbraco.Web.UI/config/umbracoSettings.Release.config # src/Umbraco.Web/Composing/CompositionExtensions/Installer.cs # src/Umbraco.Web/Editors/PreviewController.cs # src/Umbraco.Web/Editors/UsersController.cs # src/Umbraco.Web/JavaScript/PreviewInitialize.js # src/Umbraco.Web/Telemetry/TelemetryComponent.cs # src/Umbraco.Web/UmbracoApplication.cs
2021-01-18 15:40:22 +01:00
TestHelper.DbProviderFactoryCreator,
new DatabaseSchemaCreatorFactory(Mock.Of<ILogger<DatabaseSchemaCreator>>(),loggerFactory, new UmbracoVersion()));
2017-05-12 14:49:44 +02:00
}
2020-09-18 12:53:06 +02:00
fileSystems ??= new FileSystems(Current.Factory, loggerFactory.CreateLogger<FileSystems>(), loggerFactory, TestHelper.IOHelper, Options.Create(globalSettings), TestHelper.GetHostingEnvironment());
2020-03-16 14:02:08 +01:00
var coreDebug = TestHelper.CoreDebugSettings;
var mediaFileSystem = Mock.Of<IMediaFileSystem>();
2020-12-10 18:09:32 +11:00
return new ScopeProvider(databaseFactory, fileSystems, Options.Create(coreDebugSettings), mediaFileSystem, loggerFactory.CreateLogger<ScopeProvider>(), loggerFactory, NoAppCache.Instance);
2017-05-12 14:49:44 +02:00
}
2016-04-14 18:17:18 +02:00
}
}