more tests fixed, decouples more of the MappingResolver.Current singleton

This commit is contained in:
Shannon
2015-02-23 13:20:14 +01:00
parent 0ff5780944
commit 2dcc03ee3f
3 changed files with 48 additions and 38 deletions

View File

@@ -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<T> Create<T>()
{
return new Query<T>(_sqlSyntax, _mappingResolver);
return new Query<T>(SqlSyntax, MappingResolver);
}
}
}

View File

@@ -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())
{

View File

@@ -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<BaseDatabaseFactoryTest>("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<BaseDatabaseFactoryTest>("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);
}
}
/// <summary>