diff --git a/src/Umbraco.Tests/MockTests.cs b/src/Umbraco.Tests/MockTests.cs index 9b9e59ed8a..8c3ea0d25d 100644 --- a/src/Umbraco.Tests/MockTests.cs +++ b/src/Umbraco.Tests/MockTests.cs @@ -119,9 +119,14 @@ namespace Umbraco.Tests CacheHelper.CreateDisabledCacheHelper(), new ProfilingLogger(Mock.Of(), Mock.Of())); + var facade = new Mock(); + facade.Setup(x => x.MemberCache).Returns(Mock.Of()); + var facadeService = new Mock(); + facadeService.Setup(x => x.CreateFacade(It.IsAny())).Returns(facade.Object); + var umbCtx = UmbracoContext.EnsureContext( Mock.Of(), appCtx, - Mock.Of(), + facadeService.Object, new Mock(null, null).Object, Mock.Of(), Enumerable.Empty(), @@ -146,10 +151,15 @@ namespace Umbraco.Tests var appCtx = new ApplicationContext( CacheHelper.CreateDisabledCacheHelper(), new ProfilingLogger(Mock.Of(), Mock.Of())); - + + var facade = new Mock(); + facade.Setup(x => x.MemberCache).Returns(Mock.Of()); + var facadeService = new Mock(); + facadeService.Setup(x => x.CreateFacade(It.IsAny())).Returns(facade.Object); + var umbCtx = UmbracoContext.EnsureContext( Mock.Of(), appCtx, - Mock.Of(), + facadeService.Object, new Mock(null, null).Object, Mock.Of(), Enumerable.Empty(), diff --git a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs index e85f0b370c..b5e5b06529 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs @@ -11,6 +11,7 @@ using SQLCE4Umbraco; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Configuration; +using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.IO; using Umbraco.Core.Logging; using Umbraco.Core.Manifest; @@ -431,9 +432,8 @@ namespace Umbraco.Tests.TestHelpers ApplicationContext, service, new WebSecurity(httpContext, ApplicationContext), - null, - Enumerable.Empty(), - null); + Mock.Of(), + Enumerable.Empty()); if (setSingleton) { diff --git a/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs b/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs index 4efb12250a..21759a0ff5 100644 --- a/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs +++ b/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs @@ -103,9 +103,14 @@ namespace Umbraco.Tests.Web.Mvc CacheHelper.CreateDisabledCacheHelper(), new ProfilingLogger(Mock.Of(), Mock.Of())); + var facade = new Mock(); + facade.Setup(x => x.MemberCache).Returns(Mock.Of()); + var facadeService = new Mock(); + facadeService.Setup(x => x.CreateFacade(It.IsAny())).Returns(facade.Object); + var umbCtx = UmbracoContext.EnsureContext( new Mock().Object, appCtx, - Mock.Of(), + facadeService.Object, new Mock(null, null).Object, Mock.Of(section => section.WebRouting == Mock.Of(routingSection => routingSection.UrlProviderMode == "AutoLegacy")), Enumerable.Empty(), diff --git a/src/Umbraco.Tests/Web/Mvc/UmbracoViewPageTests.cs b/src/Umbraco.Tests/Web/Mvc/UmbracoViewPageTests.cs index 406001adb4..64fcdb8ebb 100644 --- a/src/Umbraco.Tests/Web/Mvc/UmbracoViewPageTests.cs +++ b/src/Umbraco.Tests/Web/Mvc/UmbracoViewPageTests.cs @@ -19,6 +19,7 @@ using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; using Umbraco.Core.Profiling; using Umbraco.Core.Services; +using Umbraco.Core.Strings; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.TestHelpers.Stubs; using Umbraco.Web; @@ -437,7 +438,7 @@ namespace Umbraco.Tests.Web.Mvc var cache = new NullCacheProvider(); var provider = new NPocoUnitOfWorkProvider(databaseFactory, new RepositoryFactory(Mock.Of())); - _service = new FacadeService(svcCtx, provider, cache, true, false); // no events + _service = new FacadeService(svcCtx, provider, cache, Enumerable.Empty(), true, false); // no events var http = GetHttpContextFactory(url, routeData).HttpContext; diff --git a/src/Umbraco.Web/PublishedCache/XmlPublishedCache/FacadeService.cs b/src/Umbraco.Web/PublishedCache/XmlPublishedCache/FacadeService.cs index 83d12759de..3bf3ab9b87 100644 --- a/src/Umbraco.Web/PublishedCache/XmlPublishedCache/FacadeService.cs +++ b/src/Umbraco.Web/PublishedCache/XmlPublishedCache/FacadeService.cs @@ -1,4 +1,5 @@ -using System.Linq; +using System.Collections.Generic; +using System.Linq; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Models; @@ -25,31 +26,41 @@ namespace Umbraco.Web.PublishedCache.XmlPublishedCache #region Constructors - // used in StandaloneBootManager only, should get rid of that one eventually - internal FacadeService(ServiceContext serviceContext, IDatabaseUnitOfWorkProvider uowProvider, ICacheProvider requestCache) - : this(serviceContext, uowProvider, requestCache, null, false, true) - { } - - // used in some tests + in WebBootManager - internal FacadeService(ServiceContext serviceContext, IDatabaseUnitOfWorkProvider uowProvider, ICacheProvider requestCache, - bool testing, bool enableRepositoryEvents) - : this(serviceContext, uowProvider, requestCache, null, testing, enableRepositoryEvents) + // used in WebBootManager + tests + public FacadeService(ServiceContext serviceContext, + IDatabaseUnitOfWorkProvider uowProvider, + ICacheProvider requestCache, + IEnumerable segmentProviders, + bool testing = false, bool enableRepositoryEvents = true) + : this(serviceContext, uowProvider, requestCache, segmentProviders, null, testing, enableRepositoryEvents) { } // used in some tests - internal FacadeService(ServiceContext serviceContext, IDatabaseUnitOfWorkProvider uowProvider, ICacheProvider requestCache, - PublishedContentTypeCache contentTypeCache, bool testing, bool enableRepositoryEvents) + internal FacadeService(ServiceContext serviceContext, + IDatabaseUnitOfWorkProvider uowProvider, + ICacheProvider requestCache, + PublishedContentTypeCache contentTypeCache, + bool testing, bool enableRepositoryEvents) + : this(serviceContext, uowProvider, requestCache, Enumerable.Empty(), contentTypeCache, testing, enableRepositoryEvents) + { } + + private FacadeService(ServiceContext serviceContext, + IDatabaseUnitOfWorkProvider uowProvider, + ICacheProvider requestCache, + IEnumerable segmentProviders, + PublishedContentTypeCache contentTypeCache, + bool testing, bool enableRepositoryEvents) { _routesCache = new RoutesCache(); _contentTypeCache = contentTypeCache ?? new PublishedContentTypeCache(serviceContext.ContentTypeService, serviceContext.MediaTypeService, serviceContext.MemberTypeService); - var providers = UrlSegmentProviderResolver.Current.Providers; // fixme - inject! - _xmlStore = new XmlStore(serviceContext, uowProvider, _routesCache, _contentTypeCache, providers, testing, enableRepositoryEvents); + _xmlStore = new XmlStore(serviceContext, uowProvider, _routesCache, _contentTypeCache, segmentProviders, testing, enableRepositoryEvents); _domainService = serviceContext.DomainService; _memberService = serviceContext.MemberService; _mediaService = serviceContext.MediaService; + _requestCache = requestCache; } diff --git a/src/Umbraco.Web/WebBootManager.cs b/src/Umbraco.Web/WebBootManager.cs index a58c15548b..773933b374 100644 --- a/src/Umbraco.Web/WebBootManager.cs +++ b/src/Umbraco.Web/WebBootManager.cs @@ -39,6 +39,7 @@ using Umbraco.Web.Editors; using Umbraco.Core.DependencyInjection; using Umbraco.Core.Persistence.UnitOfWork; using Umbraco.Core.Services.Changes; +using Umbraco.Core.Strings; using Umbraco.Web.Cache; using Umbraco.Web.DependencyInjection; using Umbraco.Web._Legacy.Actions; @@ -335,7 +336,8 @@ namespace Umbraco.Web container.RegisterSingleton(factory => new FacadeService( factory.GetInstance(), factory.GetInstance(), - factory.GetInstance().RequestCache)); + factory.GetInstance().RequestCache, + factory.GetAllInstances())); //no need to declare as per request, currently we manage it's lifetime as the singleton container.Register(factory => UmbracoContext.Current);