From 2dcc03ee3faa672445e7740aa7e3e0fbc2724c89 Mon Sep 17 00:00:00 2001 From: Shannon Date: Mon, 23 Feb 2015 13:20:14 +0100 Subject: [PATCH] more tests fixed, decouples more of the MappingResolver.Current singleton --- .../Persistence/Querying/QueryFactory.cs | 10 +-- .../Repositories/UserRepository.cs | 2 +- .../TestHelpers/BaseDatabaseFactoryTest.cs | 74 +++++++++++-------- 3 files changed, 48 insertions(+), 38 deletions(-) diff --git a/src/Umbraco.Core/Persistence/Querying/QueryFactory.cs b/src/Umbraco.Core/Persistence/Querying/QueryFactory.cs index 3e30bc2c6b..0a47a7a55d 100644 --- a/src/Umbraco.Core/Persistence/Querying/QueryFactory.cs +++ b/src/Umbraco.Core/Persistence/Querying/QueryFactory.cs @@ -5,18 +5,18 @@ namespace Umbraco.Core.Persistence.Querying { public class QueryFactory { - private readonly ISqlSyntaxProvider _sqlSyntax; - private readonly IMappingResolver _mappingResolver; + public ISqlSyntaxProvider SqlSyntax { get; private set; } + public IMappingResolver MappingResolver { get; private set; } public QueryFactory(ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) { - _sqlSyntax = sqlSyntax; - _mappingResolver = mappingResolver; + SqlSyntax = sqlSyntax; + MappingResolver = mappingResolver; } public Query Create() { - return new Query(_sqlSyntax, _mappingResolver); + return new Query(SqlSyntax, MappingResolver); } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs index 32d8cfd019..bcb0f0ccaa 100644 --- a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs @@ -311,7 +311,7 @@ namespace Umbraco.Core.Persistence.Repositories //get the referenced column name var expressionMember = ExpressionHelper.GetMemberInfo(orderBy); //now find the mapped column name - var mapper = MappingResolver.Current.ResolveMapperByType(typeof(IUser)); + var mapper = QueryFactory.MappingResolver.ResolveMapperByType(typeof(IUser)); var mappedField = mapper.Map(expressionMember.Name); if (mappedField.IsNullOrWhiteSpace()) { diff --git a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs index 93a8989209..6abdcfbcfd 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs @@ -54,7 +54,7 @@ namespace Umbraco.Tests.TestHelpers //Used to flag if its the first test in the current fixture private bool _isFirstTestInFixture = false; - private ApplicationContext _appContext; + //private ApplicationContext _appContext; private string _dbPath; //used to store (globally) the pre-built db with schema and initial data @@ -68,40 +68,17 @@ namespace Umbraco.Tests.TestHelpers var path = TestHelper.CurrentAssemblyDirectory; AppDomain.CurrentDomain.SetData("DataDirectory", path); - //disable cache - var cacheHelper = CacheHelper.CreateDisabledCacheHelper(); - - var dbFactory = new DefaultDatabaseFactory( - GetDbConnectionString(), - GetDbProviderName(), - Logger); - - var repositoryFactory = new RepositoryFactory(cacheHelper, Logger, SqlSyntax, SettingsForTests.GenerateMockSettings(), MappingResolver); - - _appContext = new ApplicationContext( - //assign the db context - new DatabaseContext(dbFactory, Logger, SqlSyntax, "System.Data.SqlServerCe.4.0"), - //assign the service context - new ServiceContext(repositoryFactory, new PetaPocoUnitOfWorkProvider(dbFactory), new FileUnitOfWorkProvider(), new PublishingStrategy(), cacheHelper, Logger, new[] { new DefaultUrlSegmentProvider() }), - cacheHelper, - ProfilingLogger) - { - IsReady = true - }; - base.Initialize(); - using (ProfilingLogger.TraceDuration("init")) - { - //TODO: Somehow make this faster - takes 5s + + - DatabaseContext.Initialize(dbFactory.ProviderName, dbFactory.ConnectionString); - CreateSqlCeDatabase(); - InitializeDatabase(); + - //ensure the configuration matches the current version for tests - SettingsForTests.ConfigurationStatus = UmbracoVersion.Current.ToString(3); - } + + + + + } protected override void ConfigureContainer() @@ -128,7 +105,40 @@ namespace Umbraco.Tests.TestHelpers protected override void SetupApplicationContext() { - ApplicationContext.Current = _appContext; + //disable cache + var cacheHelper = CacheHelper.CreateDisabledCacheHelper(); + + var dbFactory = new DefaultDatabaseFactory( + GetDbConnectionString(), + GetDbProviderName(), + Logger); + + var repositoryFactory = new RepositoryFactory(cacheHelper, Logger, SqlSyntax, SettingsForTests.GenerateMockSettings(), MappingResolver); + + var appContext = new ApplicationContext( + //assign the db context + new DatabaseContext(dbFactory, Logger, SqlSyntax, "System.Data.SqlServerCe.4.0"), + //assign the service context + new ServiceContext(repositoryFactory, new PetaPocoUnitOfWorkProvider(dbFactory), new FileUnitOfWorkProvider(), new PublishingStrategy(), cacheHelper, Logger, new[] { new DefaultUrlSegmentProvider() }), + cacheHelper, + ProfilingLogger) + { + IsReady = true + }; + + ApplicationContext.Current = appContext; + + using (ProfilingLogger.TraceDuration("init")) + { + //TODO: Somehow make this faster - takes 5s + + + appContext.DatabaseContext.Initialize(dbFactory.ProviderName, dbFactory.ConnectionString); + CreateSqlCeDatabase(); + InitializeDatabase(); + + //ensure the configuration matches the current version for tests + SettingsForTests.ConfigurationStatus = UmbracoVersion.Current.ToString(3); + } } ///