fixes some tests

This commit is contained in:
Shannon
2015-01-09 11:07:38 +11:00
parent defc9d3bc2
commit 97c18980d8
4 changed files with 40 additions and 6 deletions

View File

@@ -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<ILogger>(),
Mock.Of<IUmbracoSettingsSection>()));
SettingsForTests.GenerateMockSettings()));
Resolution.Freeze();
}

View File

@@ -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<ILogger>()),
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<ILogger>()),
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
/// </summary>
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();
}

View File

@@ -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
/// </summary>
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<ControllerBase>(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)

View File

@@ -20,6 +20,7 @@ namespace Umbraco.Web.Mvc
{
public RenderMvcController()
: base()
{
ActionInvoker = new RenderActionInvoker();
}