From 23141e1e8cb525676eb68947deb93d4fd65590e7 Mon Sep 17 00:00:00 2001 From: Morten Christensen Date: Thu, 24 Jan 2013 12:25:48 -0100 Subject: [PATCH] Fixing broken media tests after having added ToXml and saving of xml to ContentXml table in the MediaService --- src/Umbraco.Core/Models/ContentExtensions.cs | 20 +++++-------------- .../Repositories/UserRepository.cs | 4 ++-- src/Umbraco.Core/Services/ServiceContext.cs | 2 +- src/Umbraco.Tests/Models/ContentXmlTest.cs | 6 +----- .../Repositories/MediaRepositoryTest.cs | 20 +++++++++++++++++++ .../Services/ThreadSafetyServiceTest.cs | 19 ++++++++++++++++++ 6 files changed, 48 insertions(+), 23 deletions(-) diff --git a/src/Umbraco.Core/Models/ContentExtensions.cs b/src/Umbraco.Core/Models/ContentExtensions.cs index 2b97f57b66..9893994d4e 100644 --- a/src/Umbraco.Core/Models/ContentExtensions.cs +++ b/src/Umbraco.Core/Models/ContentExtensions.cs @@ -299,21 +299,9 @@ namespace Umbraco.Core.Models } /// - /// Gets the for the Creator of this media item. + /// Gets the for the Creator of this content/media item. /// - internal static IProfile GetCreatorProfile(this IMedia media) - { - using (var repository = RepositoryResolver.Current.Factory.CreateUserRepository( - PetaPocoUnitOfWorkProvider.CreateUnitOfWork())) - { - return repository.GetProfileById(media.CreatorId); - } - } - - /// - /// Gets the for the Creator of this content. - /// - public static IProfile GetCreatorProfile(this IContent content) + public static IProfile GetCreatorProfile(this IContentBase content) { using (var repository = RepositoryResolver.Current.Factory.CreateUserRepository( PetaPocoUnitOfWorkProvider.CreateUnitOfWork())) @@ -383,7 +371,9 @@ namespace Umbraco.Core.Models var x = media.ToXml(nodeName); x.Add(new XAttribute("nodeType", media.ContentType.Id)); - x.Add(new XAttribute("writerName", media.GetCreatorProfile().Name)); + //TODO Using the GetCreatorProfile extension method seems to be causing threading/connection problems because of the way the repo is used + //x.Add(new XAttribute("writerName", media.GetCreatorProfile().Name)); + x.Add(new XAttribute("writerName", string.Empty)); x.Add(new XAttribute("writerID", media.CreatorId)); x.Add(new XAttribute("version", media.Version)); x.Add(new XAttribute("template", 0)); diff --git a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs index a42c626027..d88a00f187 100644 --- a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs @@ -36,7 +36,7 @@ namespace Umbraco.Core.Persistence.Repositories var sql = GetBaseQuery(false); sql.Where(GetBaseWhereClause(), new { Id = id }); - var dto = Database.Query(sql).FirstOrDefault(); + var dto = Database.FirstOrDefault(sql); if (dto == null) return null; @@ -139,7 +139,7 @@ namespace Umbraco.Core.Persistence.Repositories var sql = GetBaseQuery(false); sql.Where(GetBaseWhereClause(), new { Id = id }); - var dto = Database.Query(sql).FirstOrDefault(); + var dto = Database.FirstOrDefault(sql); if (dto == null) return null; diff --git a/src/Umbraco.Core/Services/ServiceContext.cs b/src/Umbraco.Core/Services/ServiceContext.cs index 4f5d0d696e..2e857894cd 100644 --- a/src/Umbraco.Core/Services/ServiceContext.cs +++ b/src/Umbraco.Core/Services/ServiceContext.cs @@ -54,7 +54,7 @@ namespace Umbraco.Core.Services _contentService = new Lazy(() => new ContentService(provider, repositoryFactory.Value, publishingStrategy, _userService.Value)); if(_mediaService == null) - _mediaService = new Lazy(() => new MediaService(provider, repositoryFactory.Value)); + _mediaService = new Lazy(() => new MediaService(provider, repositoryFactory.Value, _userService.Value)); if(_macroService == null) _macroService = new Lazy(() => new MacroService(fileProvider, repositoryFactory.Value)); diff --git a/src/Umbraco.Tests/Models/ContentXmlTest.cs b/src/Umbraco.Tests/Models/ContentXmlTest.cs index f05230d191..ab529e0f07 100644 --- a/src/Umbraco.Tests/Models/ContentXmlTest.cs +++ b/src/Umbraco.Tests/Models/ContentXmlTest.cs @@ -1,16 +1,12 @@ -using System; -using System.Linq; +using System.Linq; using System.Xml.Linq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Models; -using Umbraco.Core.ObjectResolution; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.TestHelpers.Entities; -using Umbraco.Web; using umbraco.editorControls.tinyMCE3; using umbraco.interfaces; -using File = System.IO.File; namespace Umbraco.Tests.Models { diff --git a/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs index c1f42d9df4..99a156fbf5 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs @@ -1,6 +1,7 @@ using System; using System.Linq; using NUnit.Framework; +using Umbraco.Core; using Umbraco.Core.Models; using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Persistence; @@ -9,6 +10,8 @@ using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.UnitOfWork; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.TestHelpers.Entities; +using umbraco.editorControls.tinyMCE3; +using umbraco.interfaces; namespace Umbraco.Tests.Persistence.Repositories { @@ -18,6 +21,20 @@ namespace Umbraco.Tests.Persistence.Repositories [SetUp] public override void Initialize() { + //NOTE The DataTypesResolver is only necessary because we are using the Save method in the MediaService + //this ensures its reset + PluginManager.Current = new PluginManager(); + + //for testing, we'll specify which assemblies are scanned for the PluginTypeResolver + PluginManager.Current.AssembliesToScan = new[] + { + typeof(IDataType).Assembly, + typeof(tinyMCE3dataType).Assembly + }; + + DataTypesResolver.Current = new DataTypesResolver( + PluginManager.Current.ResolveDataTypes()); + base.Initialize(); CreateTestData(); @@ -288,6 +305,9 @@ namespace Umbraco.Tests.Persistence.Repositories [TearDown] public override void TearDown() { + //reset the app context + DataTypesResolver.Reset(); + base.TearDown(); } diff --git a/src/Umbraco.Tests/Services/ThreadSafetyServiceTest.cs b/src/Umbraco.Tests/Services/ThreadSafetyServiceTest.cs index c64e1b9628..db288eda23 100644 --- a/src/Umbraco.Tests/Services/ThreadSafetyServiceTest.cs +++ b/src/Umbraco.Tests/Services/ThreadSafetyServiceTest.cs @@ -13,6 +13,8 @@ using Umbraco.Core.Publishing; using Umbraco.Core.Services; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.TestHelpers.Entities; +using umbraco.editorControls.tinyMCE3; +using umbraco.interfaces; namespace Umbraco.Tests.Services { @@ -25,6 +27,20 @@ namespace Umbraco.Tests.Services [SetUp] public override void Initialize() { + //NOTE The DataTypesResolver is only necessary because we are using the Save method in the MediaService + //this ensures its reset + PluginManager.Current = new PluginManager(); + + //for testing, we'll specify which assemblies are scanned for the PluginTypeResolver + PluginManager.Current.AssembliesToScan = new[] + { + typeof(IDataType).Assembly, + typeof(tinyMCE3dataType).Assembly + }; + + DataTypesResolver.Current = new DataTypesResolver( + PluginManager.Current.ResolveDataTypes()); + base.Initialize(); //we need to use our own custom IDatabaseFactory for the DatabaseContext because we MUST ensure that @@ -47,6 +63,9 @@ namespace Umbraco.Tests.Services [TearDown] public override void TearDown() { + //reset the app context + DataTypesResolver.Reset(); + _error = null; //dispose!