diff --git a/src/Umbraco.Tests/Persistence/RepositoryResolverTests.cs b/src/Umbraco.Tests/Persistence/RepositoryResolverTests.cs index 8cf3a8cb71..b1917f8f5b 100644 --- a/src/Umbraco.Tests/Persistence/RepositoryResolverTests.cs +++ b/src/Umbraco.Tests/Persistence/RepositoryResolverTests.cs @@ -11,6 +11,7 @@ using Umbraco.Core.ObjectResolution; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.UnitOfWork; +using Umbraco.Tests.TestHelpers; namespace Umbraco.Tests.Persistence { @@ -24,7 +25,7 @@ namespace Umbraco.Tests.Persistence RepositoryResolver.Current = new RepositoryResolver( new RepositoryFactory(true, //disable all repo caches for tests! Mock.Of(), - Mock.Of())); + SettingsForTests.GenerateMockSettings())); Resolution.Freeze(); } diff --git a/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs b/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs index 47ff544fed..39137ff964 100644 --- a/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs +++ b/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs @@ -1,7 +1,9 @@ using System.Web.Mvc; using System.Web.Routing; +using Moq; using NUnit.Framework; using Umbraco.Core; +using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.TestHelpers.Stubs; @@ -80,7 +82,9 @@ namespace Umbraco.Tests.Routing RenderingEngine = RenderingEngine.Mvc }; - var handler = new RenderRouteHandler(new TestControllerFactory(), routingContext.UmbracoContext); + var handler = new RenderRouteHandler( + new TestControllerFactory(routingContext.UmbracoContext, Mock.Of()), + routingContext.UmbracoContext); handler.GetHandlerForRoute(routingContext.UmbracoContext.HttpContext.Request.RequestContext, docRequest); Assert.AreEqual("RenderMvc", routeData.Values["controller"].ToString()); @@ -116,7 +120,9 @@ namespace Umbraco.Tests.Routing TemplateModel = template }; - var handler = new RenderRouteHandler(new TestControllerFactory(), routingContext.UmbracoContext); + var handler = new RenderRouteHandler( + new TestControllerFactory(routingContext.UmbracoContext, Mock.Of()), + routingContext.UmbracoContext); handler.GetHandlerForRoute(routingContext.UmbracoContext.HttpContext.Request.RequestContext, docRequest); Assert.AreEqual("CustomDocument", routeData.Values["controller"].ToString()); @@ -152,8 +158,11 @@ namespace Umbraco.Tests.Routing /// public class CustomDocumentController : RenderMvcController { + public CustomDocumentController(ILogger logger, UmbracoContext umbracoContext) : base(logger, umbracoContext) + { + } - public ActionResult HomePage(RenderModel model) + public ActionResult HomePage(RenderModel model) { return View(); } diff --git a/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs b/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs index 6bd000aaf3..723f621356 100644 --- a/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs +++ b/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs @@ -5,6 +5,8 @@ using System.Web.Mvc; using System.Web.Routing; using System.Web.SessionState; using Umbraco.Core; +using Umbraco.Core.Logging; +using Umbraco.Web; namespace Umbraco.Tests.TestHelpers.Stubs { @@ -13,8 +15,16 @@ namespace Umbraco.Tests.TestHelpers.Stubs /// internal class TestControllerFactory : IControllerFactory { + private readonly UmbracoContext _umbracoContext; + private readonly ILogger _logger; - public IController CreateController(RequestContext requestContext, string controllerName) + public TestControllerFactory(UmbracoContext umbracoContext, ILogger logger) + { + _umbracoContext = umbracoContext; + _logger = logger; + } + + public IController CreateController(RequestContext requestContext, string controllerName) { var types = TypeFinder.FindClassesOfType(new[] { Assembly.GetExecutingAssembly() }); @@ -24,7 +34,20 @@ namespace Umbraco.Tests.TestHelpers.Stubs if (t == null) return null; - return Activator.CreateInstance(t) as IController; + var ctors = t.GetConstructors(); + if (ctors.Any(x => + { + var parameters = x.GetParameters(); + if (parameters.Length != 2) return false; + return parameters.First().ParameterType == typeof (ILogger) && parameters.Last().ParameterType == typeof (UmbracoContext); + })) + { + return Activator.CreateInstance(t, new object[]{_logger, _umbracoContext}) as IController; + } + else + { + return Activator.CreateInstance(t) as IController; + } } public System.Web.SessionState.SessionStateBehavior GetControllerSessionBehavior(RequestContext requestContext, string controllerName) diff --git a/src/Umbraco.Web/Mvc/RenderMvcController.cs b/src/Umbraco.Web/Mvc/RenderMvcController.cs index 1debe0c4a5..8b2658dc84 100644 --- a/src/Umbraco.Web/Mvc/RenderMvcController.cs +++ b/src/Umbraco.Web/Mvc/RenderMvcController.cs @@ -20,6 +20,7 @@ namespace Umbraco.Web.Mvc { public RenderMvcController() + : base() { ActionInvoker = new RenderActionInvoker(); }