From c76be66028dcf4b3c8a95fe95dea669e9ecfabf4 Mon Sep 17 00:00:00 2001 From: Shannon Date: Mon, 23 Feb 2015 00:02:12 +0100 Subject: [PATCH] starts fixing up all the tests --- src/Umbraco.Core/CoreBootManager.cs | 9 +++---- src/Umbraco.Core/DatabaseContext.cs | 4 +-- .../Persistence/Mappers/BaseMapper.cs | 7 ++--- .../Persistence/Mappers/MappingResolver.cs | 5 ---- .../Migrations/IMigrationResolver.cs | 12 +++++++++ .../Migrations/MigrationResolver.cs | 2 +- .../Persistence/Migrations/MigrationRunner.cs | 6 +++-- .../Querying/ModelToSqlExpressionHelper.cs | 5 ++++ src/Umbraco.Core/Umbraco.Core.csproj | 1 + .../Migrations/AlterMigrationTests.cs | 2 +- .../Migrations/FindingMigrationsTest.cs | 25 ++++++++++------- .../Migrations/MigrationRunnerTests.cs | 13 ++++++--- .../TargetVersionSixthMigrationsTest.cs | 26 +++++++++--------- .../Migrations/Upgrades/BaseUpgradeTest.cs | 26 +++++++++--------- .../Upgrades/SqlCeDataUpgradeTest.cs | 4 ++- .../Upgrades/ValidateV7UpgradeTest.cs | 4 +-- .../Persistence/Mappers/ContentMapperTest.cs | 1 + .../TestHelpers/BaseDatabaseFactoryTest.cs | 14 +++++++++- .../TestHelpers/BaseUmbracoApplicationTest.cs | 27 +++++++++++-------- .../TestHelpers/BaseUsingSqlCeSyntax.cs | 8 ++++-- .../InstallSteps/DatabaseUpgradeStep.cs | 3 ++- 21 files changed, 125 insertions(+), 79 deletions(-) create mode 100644 src/Umbraco.Core/Persistence/Migrations/IMigrationResolver.cs diff --git a/src/Umbraco.Core/CoreBootManager.cs b/src/Umbraco.Core/CoreBootManager.cs index 2a1ceb31f4..32819d63b7 100644 --- a/src/Umbraco.Core/CoreBootManager.cs +++ b/src/Umbraco.Core/CoreBootManager.cs @@ -146,6 +146,10 @@ namespace Umbraco.Core container.Register(); container.Register(); container.Register(); + container.Register(factory => new MappingResolver( + factory.GetInstance(), + factory.GetInstance(), + () => PluginManager.ResolveAssignedMapperTypes())); container.Register(); container.Register(factory => new ServiceContext( factory.GetInstance(), @@ -338,11 +342,6 @@ namespace Umbraco.Core // .. we'll override this in the WebBootManager ServerMessengerResolver.Current = new ServerMessengerResolver(Container, typeof (DefaultServerMessenger)); - MappingResolver.Current = new MappingResolver( - Container, ProfilingLogger.Logger, - () => PluginManager.ResolveAssignedMapperTypes()); - - //RepositoryResolver.Current = new RepositoryResolver( // new RepositoryFactory(ApplicationCache)); diff --git a/src/Umbraco.Core/DatabaseContext.cs b/src/Umbraco.Core/DatabaseContext.cs index b27cf6c34e..741c4f9746 100644 --- a/src/Umbraco.Core/DatabaseContext.cs +++ b/src/Umbraco.Core/DatabaseContext.cs @@ -599,7 +599,7 @@ namespace Umbraco.Core /// This assumes all of the previous checks are done! /// /// - internal Result UpgradeSchemaAndData() + internal Result UpgradeSchemaAndData(IMigrationResolver migrationResolver) { try { @@ -626,7 +626,7 @@ namespace Umbraco.Core ? installedVersion : new Version(GlobalSettings.ConfigurationStatus); var targetVersion = UmbracoVersion.Current; - var runner = new MigrationRunner(_logger, currentVersion, targetVersion, GlobalSettings.UmbracoMigrationName); + var runner = new MigrationRunner(migrationResolver, _logger, currentVersion, targetVersion, GlobalSettings.UmbracoMigrationName); var upgraded = runner.Execute(database, DatabaseProvider, SqlSyntax, true); message = message + "

Upgrade completed!

"; diff --git a/src/Umbraco.Core/Persistence/Mappers/BaseMapper.cs b/src/Umbraco.Core/Persistence/Mappers/BaseMapper.cs index 376e5c6d55..ff373df2bf 100644 --- a/src/Umbraco.Core/Persistence/Mappers/BaseMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/BaseMapper.cs @@ -13,16 +13,13 @@ namespace Umbraco.Core.Persistence.Mappers protected BaseMapper(ISqlSyntaxProvider sqlSyntax) { _sqlSyntax = sqlSyntax; + Build(); } internal abstract ConcurrentDictionary PropertyInfoCache { get; } - private bool _built = false; - public void Build() + private void Build() { - if (_built) return; - - _built = true; BuildMap(); } diff --git a/src/Umbraco.Core/Persistence/Mappers/MappingResolver.cs b/src/Umbraco.Core/Persistence/Mappers/MappingResolver.cs index 14d763d28b..67f771e8f5 100644 --- a/src/Umbraco.Core/Persistence/Mappers/MappingResolver.cs +++ b/src/Umbraco.Core/Persistence/Mappers/MappingResolver.cs @@ -42,8 +42,6 @@ namespace Umbraco.Core.Persistence.Mappers var byAttribute = TryGetMapperByAttribute(type); if (byAttribute.Success) { - //ensure it's built - byAttribute.Result.Build(); return byAttribute.Result; } throw new Exception("Invalid Type: A Mapper could not be resolved based on the passed in Type"); @@ -67,9 +65,6 @@ namespace Umbraco.Core.Persistence.Mappers return Attempt.Fail(); } - //ensure it's built - mapper.Build(); - return Attempt.Succeed(mapper); } diff --git a/src/Umbraco.Core/Persistence/Migrations/IMigrationResolver.cs b/src/Umbraco.Core/Persistence/Migrations/IMigrationResolver.cs new file mode 100644 index 0000000000..58c569490a --- /dev/null +++ b/src/Umbraco.Core/Persistence/Migrations/IMigrationResolver.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; + +namespace Umbraco.Core.Persistence.Migrations +{ + public interface IMigrationResolver + { + /// + /// Gets the migrations + /// + IEnumerable Migrations { get; } + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Migrations/MigrationResolver.cs b/src/Umbraco.Core/Persistence/Migrations/MigrationResolver.cs index de5f676509..e8e152ea43 100644 --- a/src/Umbraco.Core/Persistence/Migrations/MigrationResolver.cs +++ b/src/Umbraco.Core/Persistence/Migrations/MigrationResolver.cs @@ -9,7 +9,7 @@ namespace Umbraco.Core.Persistence.Migrations /// /// A resolver to return all IMigrations /// - internal class MigrationResolver : ContainerLazyManyObjectsResolver + internal class MigrationResolver : ContainerLazyManyObjectsResolver, IMigrationResolver { public MigrationResolver(IServiceContainer container, ILogger logger, Func> migrations) diff --git a/src/Umbraco.Core/Persistence/Migrations/MigrationRunner.cs b/src/Umbraco.Core/Persistence/Migrations/MigrationRunner.cs index 6f3250698a..3a48f714db 100644 --- a/src/Umbraco.Core/Persistence/Migrations/MigrationRunner.cs +++ b/src/Umbraco.Core/Persistence/Migrations/MigrationRunner.cs @@ -14,19 +14,21 @@ namespace Umbraco.Core.Persistence.Migrations /// public class MigrationRunner { + private readonly IMigrationResolver _resolver; private readonly ILogger _logger; private readonly Version _currentVersion; private readonly Version _targetVersion; private readonly string _productName; - public MigrationRunner(ILogger logger, Version currentVersion, Version targetVersion, string productName) + public MigrationRunner(IMigrationResolver resolver, ILogger logger, Version currentVersion, Version targetVersion, string productName) { if (logger == null) throw new ArgumentNullException("logger"); if (currentVersion == null) throw new ArgumentNullException("currentVersion"); if (targetVersion == null) throw new ArgumentNullException("targetVersion"); Mandate.ParameterNotNullOrEmpty(productName, "productName"); + _resolver = resolver; _logger = logger; _currentVersion = currentVersion; _targetVersion = targetVersion; @@ -136,7 +138,7 @@ namespace Umbraco.Core.Persistence.Migrations protected virtual IMigration[] FindMigrations() { //MCH NOTE: Consider adding the ProductName filter to the Resolver so we don't get a bunch of irrelevant migrations - return MigrationResolver.Current.Migrations.ToArray(); + return _resolver.Migrations.ToArray(); } internal MigrationContext InitializeMigrations( diff --git a/src/Umbraco.Core/Persistence/Querying/ModelToSqlExpressionHelper.cs b/src/Umbraco.Core/Persistence/Querying/ModelToSqlExpressionHelper.cs index fcf70c4c58..e7739e83fb 100644 --- a/src/Umbraco.Core/Persistence/Querying/ModelToSqlExpressionHelper.cs +++ b/src/Umbraco.Core/Persistence/Querying/ModelToSqlExpressionHelper.cs @@ -19,6 +19,11 @@ namespace Umbraco.Core.Persistence.Querying : base(sqlSyntax) { _mapper = mappingResolver.ResolveMapperByType(typeof(T)); + + if (_mapper == null) + { + throw new InvalidOperationException("Could not resolve a mapper for type " + typeof (T)); + } } protected override string VisitMemberAccess(MemberExpression m) diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index a1c3a5063d..24831f2360 100644 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -316,6 +316,7 @@ + diff --git a/src/Umbraco.Tests/Migrations/AlterMigrationTests.cs b/src/Umbraco.Tests/Migrations/AlterMigrationTests.cs index ddb9f8bad2..3581567076 100644 --- a/src/Umbraco.Tests/Migrations/AlterMigrationTests.cs +++ b/src/Umbraco.Tests/Migrations/AlterMigrationTests.cs @@ -19,7 +19,7 @@ namespace Umbraco.Tests.Migrations { // Arrange var sqlSyntax = new SqlCeSyntaxProvider(); - var context = new MigrationContext(DatabaseProviders.SqlServerCE, null, Mock.Of(), sqlSyntax); + var context = new MigrationContext(DatabaseProviders.SqlServerCE, new Database("test", "System.Data.SqlClient"), Mock.Of(), sqlSyntax); var stub = new DropForeignKeyMigrationStub(sqlSyntax, Mock.Of()); // Act diff --git a/src/Umbraco.Tests/Migrations/FindingMigrationsTest.cs b/src/Umbraco.Tests/Migrations/FindingMigrationsTest.cs index 06facbc720..0cba6bf923 100644 --- a/src/Umbraco.Tests/Migrations/FindingMigrationsTest.cs +++ b/src/Umbraco.Tests/Migrations/FindingMigrationsTest.cs @@ -17,11 +17,18 @@ namespace Umbraco.Tests.Migrations [TestFixture] public class FindingMigrationsTest { + + private MigrationResolver _migrationResolver; + [SetUp] public void Initialize() { - MigrationResolver.Current = new MigrationResolver( - new ServiceContainer(), + var container = new ServiceContainer(); + container.Register(factory => Mock.Of(), new PerContainerLifetime()); + container.Register(factory => Mock.Of(), new PerContainerLifetime()); + + _migrationResolver = new MigrationResolver( + container, Mock.Of(), () => new List { @@ -38,7 +45,7 @@ namespace Umbraco.Tests.Migrations [Test] public void Can_Find_Migrations_With_Target_Version_Six() { - var foundMigrations = MigrationResolver.Current.Migrations; + var foundMigrations = _migrationResolver.Migrations; var targetVersion = new Version("6.0.0"); var list = new List(); @@ -56,7 +63,11 @@ namespace Umbraco.Tests.Migrations Assert.That(list.Count, Is.EqualTo(3)); - var context = new MigrationContext(DatabaseProviders.SqlServerCE, null, Mock.Of(), new SqlCeSyntaxProvider()); + var context = new MigrationContext( + DatabaseProviders.SqlServerCE, + new Database("test", "System.Data.SqlClient"), + Mock.Of(), + new SqlCeSyntaxProvider()); foreach (var migration1 in list) { var migration = (MigrationBase) migration1; @@ -72,11 +83,5 @@ namespace Umbraco.Tests.Migrations } } - [TearDown] - public void TearDown() - { - LoggerResolver.Reset(); - MigrationResolver.Reset(); - } } } \ No newline at end of file diff --git a/src/Umbraco.Tests/Migrations/MigrationRunnerTests.cs b/src/Umbraco.Tests/Migrations/MigrationRunnerTests.cs index 6ab693e48d..359f4eafd8 100644 --- a/src/Umbraco.Tests/Migrations/MigrationRunnerTests.cs +++ b/src/Umbraco.Tests/Migrations/MigrationRunnerTests.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using Moq; using NUnit.Framework; +using Umbraco.Core.LightInject; using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Migrations; @@ -18,7 +19,9 @@ namespace Umbraco.Tests.Migrations public void Executes_Only_One_Migration_For_Spanning_Multiple_Targets() { var sqlSyntax = new SqlCeSyntaxProvider(); - var runner = new MigrationRunner(Mock.Of(), new Version(4, 0, 0), new Version(6, 0, 0), "Test"); + var runner = new MigrationRunner( + Mock.Of(), + Mock.Of(), new Version(4, 0, 0), new Version(6, 0, 0), "Test"); var migrations = runner.OrderedUpgradeMigrations(new List { new MultiMigration(sqlSyntax, Mock.Of()) }); @@ -35,7 +38,9 @@ namespace Umbraco.Tests.Migrations public void Executes_Migration_For_Spanning_One_Target_1() { var sqlSyntax = new SqlCeSyntaxProvider(); - var runner = new MigrationRunner(Mock.Of(), new Version(4, 0, 0), new Version(5, 0, 0), "Test"); + var runner = new MigrationRunner( + Mock.Of(), + Mock.Of(), new Version(4, 0, 0), new Version(5, 0, 0), "Test"); var migrations = runner.OrderedUpgradeMigrations(new List { new MultiMigration(sqlSyntax, Mock.Of()) }); @@ -52,7 +57,9 @@ namespace Umbraco.Tests.Migrations public void Executes_Migration_For_Spanning_One_Target_2() { var sqlSyntax = new SqlCeSyntaxProvider(); - var runner = new MigrationRunner(Mock.Of(), new Version(5, 0, 1), new Version(6, 0, 0), "Test"); + var runner = new MigrationRunner( + Mock.Of(), + Mock.Of(), new Version(5, 0, 1), new Version(6, 0, 0), "Test"); var migrations = runner.OrderedUpgradeMigrations(new List { new MultiMigration(sqlSyntax, Mock.Of()) }); diff --git a/src/Umbraco.Tests/Migrations/TargetVersionSixthMigrationsTest.cs b/src/Umbraco.Tests/Migrations/TargetVersionSixthMigrationsTest.cs index fd4da08222..074a6e9c91 100644 --- a/src/Umbraco.Tests/Migrations/TargetVersionSixthMigrationsTest.cs +++ b/src/Umbraco.Tests/Migrations/TargetVersionSixthMigrationsTest.cs @@ -19,22 +19,27 @@ using GlobalSettings = Umbraco.Core.Configuration.GlobalSettings; namespace Umbraco.Tests.Migrations { + [DatabaseTestBehavior(DatabaseBehavior.NoDatabasePerFixture)] [TestFixture] public class TargetVersionSixthMigrationsTest : BaseDatabaseFactoryTest { /// Regular expression that finds multiline block comments. private static readonly Regex FindComments = new Regex(@"\/\*.*?\*\/", RegexOptions.Singleline | RegexOptions.Compiled); + private MigrationResolver _migrationResolver; + [SetUp] public override void Initialize() { + base.Initialize(); + TestHelper.InitializeContentDirectories(); Path = TestHelper.CurrentAssemblyDirectory; AppDomain.CurrentDomain.SetData("DataDirectory", Path); - - MigrationResolver.Current = new MigrationResolver( - new ServiceContainer(), + + _migrationResolver = new MigrationResolver( + Container, ProfilingLogger.Logger, () => new List { @@ -52,14 +57,6 @@ namespace Umbraco.Tests.Migrations typeof (UpdateCmsPropertyTypeGroupTable) }.OrderByDescending(x => x.Name)); - //This is needed because the PluginManager is creating the migration instances with their default ctors - LoggerResolver.Current = new LoggerResolver(Logger) - { - CanResolveBeforeFrozen = true - }; - - Resolution.Freeze(); - var engine = new SqlCeEngine("Datasource=|DataDirectory|UmbracoPetaPocoTests.sdf;Flush Interval=1;"); engine.CreateDatabase(); } @@ -83,9 +80,11 @@ namespace Umbraco.Tests.Migrations var configuredVersion = new Version("4.8.0"); var targetVersion = new Version("6.0.0"); - var foundMigrations = MigrationResolver.Current.Migrations; + var foundMigrations = _migrationResolver.Migrations; - var migrationRunner = new MigrationRunner(Logger, configuredVersion, targetVersion, GlobalSettings.UmbracoMigrationName); + var migrationRunner = new MigrationRunner( + _migrationResolver, + Logger, configuredVersion, targetVersion, GlobalSettings.UmbracoMigrationName); var migrations = migrationRunner.OrderedUpgradeMigrations(foundMigrations).ToList(); var context = new MigrationContext(DatabaseProviders.SqlServerCE, db, Logger, SqlSyntax); @@ -108,7 +107,6 @@ namespace Umbraco.Tests.Migrations base.TearDown(); PluginManager.Current = null; - MigrationResolver.Reset(); TestHelper.CleanContentDirectories(); diff --git a/src/Umbraco.Tests/Migrations/Upgrades/BaseUpgradeTest.cs b/src/Umbraco.Tests/Migrations/Upgrades/BaseUpgradeTest.cs index 6c1918cda1..99232735c7 100644 --- a/src/Umbraco.Tests/Migrations/Upgrades/BaseUpgradeTest.cs +++ b/src/Umbraco.Tests/Migrations/Upgrades/BaseUpgradeTest.cs @@ -23,6 +23,8 @@ namespace Umbraco.Tests.Migrations.Upgrades /// Regular expression that finds multiline block comments. private static readonly Regex FindComments = new Regex(@"\/\*.*?\*\/", RegexOptions.Singleline | RegexOptions.Compiled); + internal MigrationResolver MigrationResolver { get; private set; } + [SetUp] public virtual void Initialize() { @@ -30,9 +32,13 @@ namespace Umbraco.Tests.Migrations.Upgrades Path = TestHelper.CurrentAssemblyDirectory; AppDomain.CurrentDomain.SetData("DataDirectory", Path); - - MigrationResolver.Current = new MigrationResolver( - new ServiceContainer(), + + var container = new ServiceContainer(); + container.Register(factory => Mock.Of(), new PerContainerLifetime()); + container.Register(factory => Mock.Of(), new PerContainerLifetime()); + + MigrationResolver = new MigrationResolver( + container, Mock.Of(), () => new List { @@ -50,12 +56,6 @@ namespace Umbraco.Tests.Migrations.Upgrades typeof (UpdateCmsPropertyTypeGroupTable) }); - LoggerResolver.Current = new LoggerResolver(Mock.Of()) - { - CanResolveBeforeFrozen = true - }; - - Resolution.Freeze(); DatabaseSpecificSetUp(); @@ -85,7 +85,9 @@ namespace Umbraco.Tests.Migrations.Upgrades } //Setup the MigrationRunner - var migrationRunner = new MigrationRunner(Mock.Of(), configuredVersion, targetVersion, GlobalSettings.UmbracoMigrationName); + var migrationRunner = new MigrationRunner( + MigrationResolver, + Mock.Of(), configuredVersion, targetVersion, GlobalSettings.UmbracoMigrationName); bool upgraded = migrationRunner.Execute(db, provider, sqlHelper, true); Assert.That(upgraded, Is.True); @@ -105,9 +107,7 @@ namespace Umbraco.Tests.Migrations.Upgrades public virtual void TearDown() { PluginManager.Current = null; - MigrationResolver.Reset(); - LoggerResolver.Reset(); - + TestHelper.CleanContentDirectories(); Path = TestHelper.CurrentAssemblyDirectory; diff --git a/src/Umbraco.Tests/Migrations/Upgrades/SqlCeDataUpgradeTest.cs b/src/Umbraco.Tests/Migrations/Upgrades/SqlCeDataUpgradeTest.cs index 5ae93e9805..be3f478a62 100644 --- a/src/Umbraco.Tests/Migrations/Upgrades/SqlCeDataUpgradeTest.cs +++ b/src/Umbraco.Tests/Migrations/Upgrades/SqlCeDataUpgradeTest.cs @@ -28,7 +28,9 @@ namespace Umbraco.Tests.Migrations.Upgrades var fix = new PublishAfterUpgradeToVersionSixth(sqlSyntax); //Setup the MigrationRunner - var migrationRunner = new MigrationRunner(Mock.Of(), configuredVersion, targetVersion, GlobalSettings.UmbracoMigrationName); + var migrationRunner = new MigrationRunner( + MigrationResolver, + Mock.Of(), configuredVersion, targetVersion, GlobalSettings.UmbracoMigrationName); bool upgraded = migrationRunner.Execute(db, provider, sqlSyntax, true); Assert.That(upgraded, Is.True); diff --git a/src/Umbraco.Tests/Migrations/Upgrades/ValidateV7UpgradeTest.cs b/src/Umbraco.Tests/Migrations/Upgrades/ValidateV7UpgradeTest.cs index 99151c8bb3..3e49663546 100644 --- a/src/Umbraco.Tests/Migrations/Upgrades/ValidateV7UpgradeTest.cs +++ b/src/Umbraco.Tests/Migrations/Upgrades/ValidateV7UpgradeTest.cs @@ -19,7 +19,7 @@ namespace Umbraco.Tests.Migrations.Upgrades { var sqlSyntax = new SqlCeSyntaxProvider(); var migration = new AddIndexToCmsMacroTable(true, sqlSyntax, Mock.Of()); - var migrationContext = new MigrationContext(DatabaseProviders.SqlServerCE, null, Mock.Of(), + var migrationContext = new MigrationContext(DatabaseProviders.SqlServerCE, new Database("test", "System.Data.SqlClient"), Mock.Of(), sqlSyntax); migration.GetUpExpressions(migrationContext); @@ -35,7 +35,7 @@ namespace Umbraco.Tests.Migrations.Upgrades { var sqlSyntax = new SqlCeSyntaxProvider(); var migration = new AddIndexToCmsMacroPropertyTable(true, sqlSyntax, Mock.Of()); - var migrationContext = new MigrationContext(DatabaseProviders.SqlServerCE, null, Mock.Of(), sqlSyntax); + var migrationContext = new MigrationContext(DatabaseProviders.SqlServerCE, new Database("test", "System.Data.SqlClient"), Mock.Of(), sqlSyntax); migration.GetUpExpressions(migrationContext); Assert.AreEqual(1, migrationContext.Expressions.Count); diff --git a/src/Umbraco.Tests/Persistence/Mappers/ContentMapperTest.cs b/src/Umbraco.Tests/Persistence/Mappers/ContentMapperTest.cs index 0ab94a75ec..357a1fd926 100644 --- a/src/Umbraco.Tests/Persistence/Mappers/ContentMapperTest.cs +++ b/src/Umbraco.Tests/Persistence/Mappers/ContentMapperTest.cs @@ -14,6 +14,7 @@ namespace Umbraco.Tests.Persistence.Mappers // Act string column = new ContentMapper(new SqlCeSyntaxProvider()).Map("Id"); + // Assert Assert.That(column, Is.EqualTo("[umbracoNode].[id]")); } diff --git a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs index 91dbc6e5f3..93a8989209 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs @@ -104,9 +104,21 @@ namespace Umbraco.Tests.TestHelpers } } + protected override void ConfigureContainer() + { + base.ConfigureContainer(); + + Container.Register(); + } + + private MappingResolver _mappingResolver; protected IMappingResolver MappingResolver { - get { return Mock.Of(); } + get + { + return _mappingResolver ?? + (_mappingResolver = new MappingResolver(Container, Mock.Of(), () => PluginManager.Current.ResolveAssignedMapperTypes())); + } } protected virtual ISqlSyntaxProvider SqlSyntax diff --git a/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs b/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs index 5fc006ab9c..a1d3a9af68 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs @@ -65,17 +65,7 @@ namespace Umbraco.Tests.TestHelpers InitializeMappers(); - //register basic stuff that might need to be there for some container resolvers to work, we can - // add more to this in base classes in resolution freezing - Container.Register(factory => Logger); - Container.Register(factory => CacheHelper); - Container.Register(factory => ProfilingLogger); - var settings = SettingsForTests.GetDefault(); - Container.Register(factory => SettingsForTests.GetDefault(), new PerContainerLifetime()); - Container.Register(factory => settings.Content, new PerContainerLifetime()); - Container.Register(factory => CacheHelper.RuntimeCache); - Container.Register(); - Container.Register(factory => new MediaFileSystem(Mock.Of())); + ConfigureContainer(); FreezeResolution(); @@ -101,6 +91,21 @@ namespace Umbraco.Tests.TestHelpers } + protected virtual void ConfigureContainer() + { + //register basic stuff that might need to be there for some container resolvers to work, we can + // add more to this in base classes in resolution freezing + Container.Register(factory => Logger); + Container.Register(factory => CacheHelper); + Container.Register(factory => ProfilingLogger); + var settings = SettingsForTests.GetDefault(); + Container.Register(factory => SettingsForTests.GetDefault(), new PerContainerLifetime()); + Container.Register(factory => settings.Content, new PerContainerLifetime()); + Container.Register(factory => CacheHelper.RuntimeCache); + Container.Register(); + Container.Register(factory => new MediaFileSystem(Mock.Of())); + } + private static readonly object Locker = new object(); private static void InitializeLegacyMappingsForCoreEditors() diff --git a/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs b/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs index b5a02aad59..f45e2e6838 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs @@ -20,10 +20,10 @@ namespace Umbraco.Tests.TestHelpers get { return _sqlSyntax ?? (_sqlSyntax = new SqlCeSyntaxProvider()); } } - private IMappingResolver _mappingResolver; + private MappingResolver _mappingResolver; protected IMappingResolver MappingResolver { - get { return _mappingResolver ?? (_mappingResolver = Mock.Of()); } + get { return _mappingResolver; } } [SetUp] @@ -34,6 +34,9 @@ namespace Umbraco.Tests.TestHelpers container.Register(factory => Mock.Of(), new PerContainerLifetime()); container.Register(factory => Mock.Of(), new PerContainerLifetime()); + _mappingResolver = new MappingResolver(container, Mock.Of(), + () => PluginManager.Current.ResolveAssignedMapperTypes()); + var logger = new ProfilingLogger(Mock.Of(), Mock.Of()); PluginManager.Current = new PluginManager(new ActivatorServiceProvider(), new NullCacheProvider(), @@ -54,6 +57,7 @@ namespace Umbraco.Tests.TestHelpers [TearDown] public virtual void TearDown() { + Resolution.Reset(); //MappingResolver.Reset(); PluginManager.Current = null; } diff --git a/src/Umbraco.Web/Install/InstallSteps/DatabaseUpgradeStep.cs b/src/Umbraco.Web/Install/InstallSteps/DatabaseUpgradeStep.cs index 4d3be8577d..c6140f41db 100644 --- a/src/Umbraco.Web/Install/InstallSteps/DatabaseUpgradeStep.cs +++ b/src/Umbraco.Web/Install/InstallSteps/DatabaseUpgradeStep.cs @@ -5,6 +5,7 @@ using System.Linq; using Umbraco.Core; using Umbraco.Core.Configuration; using Umbraco.Core.Logging; +using Umbraco.Core.Persistence.Migrations; using Umbraco.Web.Install.Models; namespace Umbraco.Web.Install.InstallSteps @@ -30,7 +31,7 @@ namespace Umbraco.Web.Install.InstallSteps { LogHelper.Info("Running 'Upgrade' service"); - var result = _applicationContext.DatabaseContext.UpgradeSchemaAndData(); + var result = _applicationContext.DatabaseContext.UpgradeSchemaAndData(MigrationResolver.Current); if (result.Success == false) {