diff --git a/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs index 669e8a76b3..8a8f693bd7 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs @@ -200,7 +200,6 @@ namespace Umbraco.Tests.PublishedContent Assert.IsTrue(ancestors.Select(x => x.Id).ContainsAll(new[] { 3113, 2112, 2222, 1111 })); } - [Ignore] [Test] public void Children_Without_Examine() { @@ -225,7 +224,6 @@ namespace Umbraco.Tests.PublishedContent Assert.IsTrue(subChildren.Select(x => x.Id).ContainsAll(new[] { mSubChild1.Id, mSubChild2.Id, mSubChild3.Id })); } - [Ignore] [Test] public void Descendants_Without_Examine() { @@ -250,7 +248,6 @@ namespace Umbraco.Tests.PublishedContent Assert.IsTrue(subDescendants.Select(x => x.Id).ContainsAll(new[] { mSubChild1.Id, mSubChild2.Id, mSubChild3.Id })); } - [Ignore] [Test] public void DescendantsOrSelf_Without_Examine() { @@ -277,7 +274,6 @@ namespace Umbraco.Tests.PublishedContent new[] { mChild1.Id, mSubChild1.Id, mSubChild2.Id, mSubChild3.Id })); } - [Ignore] [Test] public void Parent_Without_Examine() { @@ -303,7 +299,6 @@ namespace Umbraco.Tests.PublishedContent Assert.AreEqual(mChild1.Id, publishedSubChild1.Parent.Id); } - [Ignore] [Test] public void Ancestors_Without_Examine() { @@ -323,7 +318,6 @@ namespace Umbraco.Tests.PublishedContent Assert.IsTrue(publishedSubChild1.Ancestors().Select(x => x.Id).ContainsAll(new[] {mChild1.Id, mRoot.Id})); } - [Ignore] [Test] public void AncestorsOrSelf_Without_Examine() { diff --git a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs index 3b2d772072..66457fffe1 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs @@ -69,14 +69,18 @@ namespace Umbraco.Tests.TestHelpers new DatabaseContext(new DefaultDatabaseFactory()), //assign the service context new ServiceContext(new PetaPocoUnitOfWorkProvider(), new FileUnitOfWorkProvider(), new PublishingStrategy())) { IsReady = true }; - + + InitializeDatabase(); + } + + protected virtual void InitializeDatabase() + { //Configure the Database and Sql Syntax based on connection string set in config DatabaseContext.Initialize(); //Create the umbraco database and its base data DatabaseContext.Database.CreateDatabaseSchema(false); } - [TearDown] public virtual void TearDown() { @@ -103,6 +107,8 @@ namespace Umbraco.Tests.TestHelpers { File.Delete(filePath); } + + UmbracoSettings.ResetSetters(); } protected ApplicationContext ApplicationContext diff --git a/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs b/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs index 4f1e3c158e..ae5eb1cc1f 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs @@ -9,6 +9,9 @@ using Umbraco.Core.Configuration; using Umbraco.Core.IO; using Umbraco.Core.ObjectResolution; using Umbraco.Core.Persistence; +using Umbraco.Core.Persistence.UnitOfWork; +using Umbraco.Core.Publishing; +using Umbraco.Core.Services; using Umbraco.Tests.Stubs; using Umbraco.Web; using Umbraco.Web.Routing; @@ -18,77 +21,27 @@ using umbraco.cms.businesslogic.cache; namespace Umbraco.Tests.TestHelpers { [TestFixture, RequiresSTA] - public abstract class BaseWebTest + public abstract class BaseWebTest : BaseDatabaseFactoryTest { [SetUp] - public virtual void Initialize() + public override void Initialize() { - TestHelper.SetupLog4NetForTests(); - TestHelper.InitializeContentDirectories(); - - AppDomain.CurrentDomain.SetData("DataDirectory", TestHelper.CurrentAssemblyDirectory); + base.Initialize(); + } + protected override void InitializeDatabase() + { if (RequiresDbSetup) - TestHelper.InitializeDatabase(); - - Resolution.Freeze(); - - //NOTE: We are not constructing with the service context here because it is not required for these tests (currently) - // if we do, this means that we have to initialized the RepositoryResolver too. - ApplicationContext.Current = new ApplicationContext - { - IsReady = true, - //assign the db context - DatabaseContext = new DatabaseContext(new DefaultDatabaseFactory()) - }; - + base.InitializeDatabase(); } [TearDown] - public virtual void TearDown() + public override void TearDown() { - TestHelper.CleanContentDirectories(); - - //reset the app context - DatabaseContext.Database.Dispose(); - ApplicationContext.ApplicationCache.ClearAllCache(); - ApplicationContext.Current = null; - Resolution.IsFrozen = false; - - if (RequiresDbSetup) - { - TestHelper.ClearDatabase(); - SqlCeContextGuardian.CloseBackgroundConnection(); - } - - AppDomain.CurrentDomain.SetData("DataDirectory", null); - - Cache.ClearAllCache(); - - UmbracoSettings.ResetSetters(); - } - - protected virtual void CreateDirectories(string[] directories) - { - foreach (var directory in directories) - { - var directoryInfo = new DirectoryInfo(IOHelper.MapPath(directory)); - if (directoryInfo.Exists == false) - Directory.CreateDirectory(IOHelper.MapPath(directory)); - } + base.TearDown(); } - protected virtual void CleanDirectories(string[] directories) - { - foreach (var directory in directories) - { - var directoryInfo = new DirectoryInfo(IOHelper.MapPath(directory)); - if (directoryInfo.Exists) - directoryInfo.GetFiles().ForEach(x => x.Delete()); - } - } - /// /// By default this unit test will create and initialize an umbraco database /// @@ -96,46 +49,8 @@ namespace Umbraco.Tests.TestHelpers { get { return true; } } - - protected FakeHttpContextFactory GetHttpContextFactory(string url, RouteData routeData = null) - { - var factory = routeData != null - ? new FakeHttpContextFactory(url, routeData) - : new FakeHttpContextFactory(url); - - - //set the state helper - StateHelper.HttpContext = factory.HttpContext; - - return factory; - } - - protected ApplicationContext ApplicationContext - { - get { return ApplicationContext.Current; } - } - - protected DatabaseContext DatabaseContext - { - get { return ApplicationContext.DatabaseContext; } - } - - internal virtual IRoutesCache GetRoutesCache() - { - return new FakeRoutesCache(); - } - - protected UmbracoContext GetUmbracoContext(string url, int templateId, RouteData routeData = null) - { - var ctx = new UmbracoContext( - GetHttpContextFactory(url, routeData).HttpContext, - ApplicationContext, - GetRoutesCache()); - SetupUmbracoContextForTest(ctx, templateId); - return ctx; - } - - protected virtual string GetXmlContent(int templateId) + + protected override string GetXmlContent(int templateId) { return @" "; } - /// - /// Initlializes the UmbracoContext with specific XML - /// - /// - /// - protected void SetupUmbracoContextForTest(UmbracoContext umbracoContext, int templateId) - { - umbracoContext.GetXmlDelegate = () => - { - var xDoc = new XmlDocument(); - - //create a custom xml structure to return - - xDoc.LoadXml(GetXmlContent(templateId)); - //return the custom x doc - return xDoc; - }; - } } } \ No newline at end of file diff --git a/src/Umbraco.Web/DefaultPublishedMediaStore.cs b/src/Umbraco.Web/DefaultPublishedMediaStore.cs index afe1aa24d7..2a35ca3619 100644 --- a/src/Umbraco.Web/DefaultPublishedMediaStore.cs +++ b/src/Umbraco.Web/DefaultPublishedMediaStore.cs @@ -11,6 +11,7 @@ using Umbraco.Core; using Umbraco.Core.Dynamics; using Umbraco.Core.Models; using Umbraco.Web.Models; +using UmbracoExamine; using umbraco; using umbraco.cms.businesslogic; using ContentType = umbraco.cms.businesslogic.ContentType; @@ -107,7 +108,7 @@ namespace Umbraco.Web { //first check in Examine as this is WAY faster var criteria = searchProvider.CreateSearchCriteria("media"); - var filter = criteria.Id(id); + var filter = criteria.Id(id).Not().Field(UmbracoContentIndexer.IndexPathFieldName, "-21"); var results = searchProvider.Search(filter.Compile()); if (results.Any()) { diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/Search/ExamineEvents.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/Search/ExamineEvents.cs index f04cb9ede1..45abc5be22 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/Search/ExamineEvents.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/Search/ExamineEvents.cs @@ -38,11 +38,14 @@ namespace umbraco.presentation.umbraco.Search // in the core. This is only temporary to get this task completed for 6.0: // http://issues.umbraco.org/issue/U4-1530 MediaService.Saved += MediaService_Saved; - MediaService.Trashed += MediaService_Trashed; + MediaService.Deleted += MediaService_Deleted; MediaService.Moved += MediaService_Moved; + MediaService.Trashed += MediaService_Trashed; + ContentService.Saved += ContentService_Saved; - ContentService.Trashed += ContentService_Trashed; + ContentService.Deleted += ContentService_Deleted; ContentService.Moved += ContentService_Moved; + ContentService.Trashed += ContentService_Trashed; //bind to examine events var contentIndexer = ExamineManager.Instance.IndexProviderCollection["InternalIndexer"] as UmbracoContentIndexer; @@ -59,36 +62,47 @@ namespace umbraco.presentation.umbraco.Search void ContentService_Trashed(IContentService sender, Umbraco.Core.Events.MoveEventArgs e) { - ExamineManager.Instance.DeleteFromIndex(e.Entity.Id.ToString(), - ExamineManager.Instance.IndexProviderCollection - .OfType() - .Where(x => x.EnableDefaultEventHandler)); - + IndexContent(e.Entity); } void MediaService_Trashed(IMediaService sender, Umbraco.Core.Events.MoveEventArgs e) { - ExamineManager.Instance.DeleteFromIndex(e.Entity.Id.ToString(), - ExamineManager.Instance.IndexProviderCollection - .OfType() - .Where(x => x.EnableDefaultEventHandler)); + IndexMedia(e.Entity); } void ContentService_Moved(IContentService sender, Umbraco.Core.Events.MoveEventArgs e) { - IndexConent(e.Entity); + IndexContent(e.Entity); + } + + void ContentService_Deleted(IContentService sender, Umbraco.Core.Events.DeleteEventArgs e) + { + e.DeletedEntities.ForEach( + content => + ExamineManager.Instance.DeleteFromIndex( + content.Id.ToString(), + ExamineManager.Instance.IndexProviderCollection.OfType().Where(x => x.EnableDefaultEventHandler))); } void ContentService_Saved(IContentService sender, Umbraco.Core.Events.SaveEventArgs e) { - e.SavedEntities.ForEach(IndexConent); + e.SavedEntities.ForEach(IndexContent); } void MediaService_Moved(IMediaService sender, Umbraco.Core.Events.MoveEventArgs e) { IndexMedia(e.Entity); } - + + void MediaService_Deleted(IMediaService sender, Umbraco.Core.Events.DeleteEventArgs e) + { + e.DeletedEntities.ForEach( + media => + ExamineManager.Instance.DeleteFromIndex( + media.Id.ToString(), + ExamineManager.Instance.IndexProviderCollection.OfType().Where(x => x.EnableDefaultEventHandler))); + } + void MediaService_Saved(IMediaService sender, Umbraco.Core.Events.SaveEventArgs e) { e.SavedEntities.ForEach(IndexMedia); @@ -101,7 +115,7 @@ namespace umbraco.presentation.umbraco.Search ExamineManager.Instance.IndexProviderCollection.OfType().Where(x => x.EnableDefaultEventHandler)); } - private void IndexConent(IContent sender) + private void IndexContent(IContent sender) { ExamineManager.Instance.ReIndexNode( sender.ToXml(), "content",