More structuring & minor fixes

This commit is contained in:
Stephan
2016-11-08 17:38:05 +01:00
parent babf00f510
commit 5d632b2426
10 changed files with 44 additions and 97 deletions

View File

@@ -30,6 +30,7 @@ using Umbraco.Web.Routing;
using File = System.IO.File;
using Umbraco.Core.DI;
using Umbraco.Core.Events;
using Umbraco.Core.Persistence.Mappers;
using Umbraco.Core.Strings;
using Umbraco.Tests.TestHelpers.Stubs;
@@ -87,13 +88,9 @@ namespace Umbraco.Tests.TestHelpers
Container.Register<ISqlSyntaxProvider, SqlCeSyntaxProvider>();
Container.Register(factory => _facadeService);
var manifestBuilder = new ManifestBuilder(
new NullCacheProvider(),
new ManifestParser(Logger, new DirectoryInfo(IOHelper.MapPath("~/App_Plugins")), new NullCacheProvider()));
Container.Register(_ => manifestBuilder);
Container.RegisterCollectionBuilder<PropertyEditorCollectionBuilder>()
.Add(() => Core.DI.Current.PluginManager.ResolvePropertyEditors());
Container.GetInstance<PropertyEditorCollectionBuilder>()
.Clear()
.Add(f => f.GetInstance<PluginManager>().ResolvePropertyEditors());
Container.RegisterSingleton(f =>
{
@@ -101,7 +98,10 @@ namespace Umbraco.Tests.TestHelpers
return TestObjects.GetDatabaseFactoryMock();
var sqlSyntaxProviders = new[] { new SqlCeSyntaxProvider() };
var factory = new DefaultDatabaseFactory(GetDbConnectionString(), GetDbProviderName(), sqlSyntaxProviders, Logger, f.GetInstance<IUmbracoDatabaseAccessor>(), Mappers);
var logger = f.GetInstance<ILogger>();
var umbracoDatabaseAccessor = f.GetInstance<IUmbracoDatabaseAccessor>();
var mappers = f.GetInstance<IMapperCollection>();
var factory = new DefaultDatabaseFactory(GetDbConnectionString(), GetDbProviderName(), sqlSyntaxProviders, logger, umbracoDatabaseAccessor, mappers);
factory.ResetForTests();
return factory;
});
@@ -119,7 +119,9 @@ namespace Umbraco.Tests.TestHelpers
_isFirstInFixture = false;
_isFirstInSession = false;
using (ProfilingLogger.TraceDuration<TestWithDatabaseBase>("teardown")) // fixme move that one up
var profilingLogger = Container.TryGetInstance<ProfilingLogger>();
var timer = profilingLogger?.TraceDuration<TestWithDatabaseBase>("teardown"); // fixme move that one up
try
{
if (Options.Database == UmbracoTestOptions.Database.NewSchemaPerTest)
RemoveDatabaseFile(Core.DI.Current.HasContainer ? Core.DI.Current.Container.TryGetInstance<DatabaseContext>()?.Database : null);
@@ -130,6 +132,10 @@ namespace Umbraco.Tests.TestHelpers
_facadeService?.Dispose();
_facadeService = null;
}
finally
{
timer?.Dispose();
}
base.TearDown();
}
@@ -150,78 +156,6 @@ namespace Umbraco.Tests.TestHelpers
}
}
// fixme implement this one way or another!!!
//
//protected override ApplicationContext CreateApplicationContext()
//{
// var sqlSyntaxProviders = new[] { new SqlCeSyntaxProvider() };
// // create the database if required
// // note: must do before instanciating the database factory else it will
// // not find the database and will remain un-configured.
// using (ProfilingLogger.TraceDuration<BaseDatabaseFactoryTest>("Create database."))
// {
// //TODO make it faster
// CreateSqlCeDatabase();
// }
// // ensure the configuration matches the current version for tests
// SettingsForTests.ConfigurationStatus = UmbracoVersion.Current.ToString(3);
// // create the database factory - if the test does not require an actual database,
// // use a mock factory; otherwise use a real factory.
// IDatabaseFactory databaseFactory;
// if (DatabaseTestBehavior == DatabaseBehavior.NoDatabasePerFixture)
// {
// databaseFactory = TestObjects.GetIDatabaseFactoryMock();
// }
// else
// {
// var f = new DefaultDatabaseFactory(GetDbConnectionString(), GetDbProviderName(), sqlSyntaxProviders, Logger, new TestUmbracoDatabaseAccessor(), Mappers);
// f.ResetForTests();
// databaseFactory = f;
// }
// // so, using the above code to create a mock IDatabaseFactory if we don't have a real database
// // but, that will NOT prevent _appContext from NOT being configured, because it cannot connect
// // to the database to check the migrations ;-(
// var evtMsgs = new TransientEventMessagesFactory();
// var databaseContext = new DatabaseContext(databaseFactory, Logger, Mock.Of<IRuntimeState>(), Mock.Of<IMigrationEntryService>());
// var repositoryFactory = Container.GetInstance<RepositoryFactory>();
// var serviceContext = TestObjects.GetServiceContext(
// repositoryFactory,
// _uowProvider = new NPocoUnitOfWorkProvider(databaseFactory, repositoryFactory),
// new FileUnitOfWorkProvider(),
// CacheHelper,
// Logger,
// evtMsgs,
// Enumerable.Empty<IUrlSegmentProvider>());
// // if the test does not require an actual database, or runs with an empty database, the application
// // context will not be able to check the migration status in the database, so we have to force it
// // to think it is configured.
// var appContextMock = new Mock<ApplicationContext>(databaseContext, serviceContext, CacheHelper, ProfilingLogger);
// //if (DatabaseTestBehavior == DatabaseBehavior.NoDatabasePerFixture // no db at all
// // || DatabaseTestBehavior == DatabaseBehavior.EmptyDbFilePerTest) // empty db
// // appContextMock.Setup(x => x.IsConfigured).Returns(true);
// _appContext = appContextMock.Object;
// // initialize the database if required
// // note: must do after creating the application context as
// // it is using it
// using (ProfilingLogger.TraceDuration<BaseDatabaseFactoryTest>("Initialize database."))
// {
// // TODO make it faster
// InitializeDatabase(_appContext);
// }
// // application is ready
// //_appContext.IsReady = true;
// return _appContext;
//}
protected virtual ISqlSyntaxProvider GetSyntaxProvider()
{
return new SqlCeSyntaxProvider();
@@ -305,19 +239,12 @@ namespace Umbraco.Tests.TestHelpers
}
}
}
/// <summary>
/// sets up resolvers before resolution is frozen
/// </summary>
protected override void Initialize() // fixme - should NOT be here!
{
base.Initialize();
// fixme - what about if (PropertyValueConvertersResolver.HasCurrent == false) ??
Container.RegisterCollectionBuilder<PropertyValueConverterCollectionBuilder>();
// ensure we have a FacadeService
if (_facadeService == null)
{