mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Merge
--HG-- branch : dev
This commit is contained in:
@@ -5,10 +5,12 @@ using System.Text;
|
|||||||
using System.Web;
|
using System.Web;
|
||||||
using System.Web.Mvc;
|
using System.Web.Mvc;
|
||||||
using Autofac;
|
using Autofac;
|
||||||
|
using Autofac.Integration.Web;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using Orchard.DisplayManagement.Descriptors;
|
using Orchard.DisplayManagement.Descriptors;
|
||||||
using Orchard.DisplayManagement.Implementation;
|
using Orchard.DisplayManagement.Implementation;
|
||||||
using Orchard.DisplayManagement.Shapes;
|
using Orchard.DisplayManagement.Shapes;
|
||||||
|
using Orchard.Tests.Stubs;
|
||||||
using Orchard.Themes;
|
using Orchard.Themes;
|
||||||
|
|
||||||
namespace Orchard.Tests.DisplayManagement {
|
namespace Orchard.Tests.DisplayManagement {
|
||||||
@@ -79,8 +81,14 @@ namespace Orchard.Tests.DisplayManagement {
|
|||||||
|
|
||||||
public class TestWorkContext : WorkContext {
|
public class TestWorkContext : WorkContext {
|
||||||
readonly IDictionary<string, object> _state = new Dictionary<string, object>();
|
readonly IDictionary<string, object> _state = new Dictionary<string, object>();
|
||||||
|
public IContainerProvider ContainerProvider { get; set; }
|
||||||
|
|
||||||
public override T Resolve<T>() {
|
public override T Resolve<T>() {
|
||||||
|
if (typeof(T) == typeof(ILifetimeScope))
|
||||||
|
{
|
||||||
|
return (T) ContainerProvider.RequestLifetime;
|
||||||
|
}
|
||||||
|
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -5,6 +5,7 @@ using System.Web.Mvc;
|
|||||||
using System.Web.Routing;
|
using System.Web.Routing;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using Orchard.Mvc;
|
using Orchard.Mvc;
|
||||||
|
using Orchard.Tests.DisplayManagement;
|
||||||
using Orchard.Tests.Stubs;
|
using Orchard.Tests.Stubs;
|
||||||
using Autofac;
|
using Autofac;
|
||||||
|
|
||||||
@@ -12,6 +13,7 @@ namespace Orchard.Tests.Mvc {
|
|||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class OrchardControllerFactoryTests {
|
public class OrchardControllerFactoryTests {
|
||||||
private OrchardControllerFactory _controllerFactory;
|
private OrchardControllerFactory _controllerFactory;
|
||||||
|
private IWorkContextAccessor _workContextAccessor;
|
||||||
private StubContainerProvider _containerProvider;
|
private StubContainerProvider _containerProvider;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
@@ -24,14 +26,20 @@ namespace Orchard.Tests.Mvc {
|
|||||||
var container = builder.Build();
|
var container = builder.Build();
|
||||||
_containerProvider = new StubContainerProvider(container, container.BeginLifetimeScope());
|
_containerProvider = new StubContainerProvider(container, container.BeginLifetimeScope());
|
||||||
|
|
||||||
|
var workContext = new DefaultDisplayManagerTests.TestWorkContext
|
||||||
|
{
|
||||||
|
CurrentTheme = new DefaultDisplayManagerTests.Theme { ThemeName = "Hello" },
|
||||||
|
ContainerProvider = _containerProvider
|
||||||
|
};
|
||||||
|
_workContextAccessor = new DefaultDisplayManagerTests.TestWorkContextAccessor(workContext);
|
||||||
|
|
||||||
_controllerFactory = new OrchardControllerFactory();
|
_controllerFactory = new OrchardControllerFactory();
|
||||||
InjectKnownControllerTypes(_controllerFactory, typeof (FooController), typeof (BarController));
|
InjectKnownControllerTypes(_controllerFactory, typeof(ReplacementFooController), typeof (FooController), typeof (BarController));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void IContainerProvidersRequestContainerFromRouteDataShouldUseTokenWhenPresent() {
|
public void IContainerProvidersRequestContainerFromRouteDataShouldUseTokenWhenPresent() {
|
||||||
var requestContext = GetRequestContext(_containerProvider);
|
var requestContext = GetRequestContext(_workContextAccessor);
|
||||||
var controller = _controllerFactory.CreateController(requestContext, "foo");
|
var controller = _controllerFactory.CreateController(requestContext, "foo");
|
||||||
|
|
||||||
Assert.That(controller, Is.TypeOf<ReplacementFooController>());
|
Assert.That(controller, Is.TypeOf<ReplacementFooController>());
|
||||||
@@ -46,9 +54,8 @@ namespace Orchard.Tests.Mvc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void
|
public void WhenContainerIsPresentButNamedControllerIsNotResolvedNormalControllerFactoryRulesShouldBeUsedAsFallback() {
|
||||||
WhenContainerIsPresentButNamedControllerIsNotResolvedNormalControllerFactoryRulesShouldBeUsedAsFallback() {
|
var requestContext = GetRequestContext(_workContextAccessor);
|
||||||
var requestContext = GetRequestContext(_containerProvider);
|
|
||||||
var controller = _controllerFactory.CreateController(requestContext, "bar");
|
var controller = _controllerFactory.CreateController(requestContext, "bar");
|
||||||
|
|
||||||
Assert.That(controller, Is.TypeOf<BarController>());
|
Assert.That(controller, Is.TypeOf<BarController>());
|
||||||
@@ -56,7 +63,7 @@ namespace Orchard.Tests.Mvc {
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void DisposingControllerThatCameFromContainerShouldNotCauseProblemWhenContainerIsDisposed() {
|
public void DisposingControllerThatCameFromContainerShouldNotCauseProblemWhenContainerIsDisposed() {
|
||||||
var requestContext = GetRequestContext(_containerProvider);
|
var requestContext = GetRequestContext(_workContextAccessor);
|
||||||
var controller = _controllerFactory.CreateController(requestContext, "foo");
|
var controller = _controllerFactory.CreateController(requestContext, "foo");
|
||||||
|
|
||||||
Assert.That(controller, Is.TypeOf<ReplacementFooController>());
|
Assert.That(controller, Is.TypeOf<ReplacementFooController>());
|
||||||
@@ -71,12 +78,12 @@ namespace Orchard.Tests.Mvc {
|
|||||||
Assert.That(((ReplacementFooController) controller).Disposals, Is.EqualTo(4));
|
Assert.That(((ReplacementFooController) controller).Disposals, Is.EqualTo(4));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static RequestContext GetRequestContext(StubContainerProvider containerProvider) {
|
private static RequestContext GetRequestContext(IWorkContextAccessor workContextAccessor)
|
||||||
|
{
|
||||||
var handler = new MvcRouteHandler();
|
var handler = new MvcRouteHandler();
|
||||||
var route = new Route("yadda", handler) {
|
var route = new Route("yadda", handler) {
|
||||||
DataTokens =
|
DataTokens =
|
||||||
new RouteValueDictionary
|
new RouteValueDictionary { { "IWorkContextAccessor", workContextAccessor } }
|
||||||
{{"IContainerProvider", containerProvider}}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var httpContext = new StubHttpContext();
|
var httpContext = new StubHttpContext();
|
||||||
|
@@ -33,7 +33,7 @@ namespace Orchard.Tests.UI {
|
|||||||
_workContext = container.Resolve<IWorkContextAccessor>().CreateWorkContextScope().WorkContext;
|
_workContext = container.Resolve<IWorkContextAccessor>().CreateWorkContextScope().WorkContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test, Ignore("implementation pending")]
|
||||||
public void WorkContextPageIsLayoutShape() {
|
public void WorkContextPageIsLayoutShape() {
|
||||||
var page = _workContext.Page;
|
var page = _workContext.Page;
|
||||||
ShapeMetadata pageMetadata = page.Metadata;
|
ShapeMetadata pageMetadata = page.Metadata;
|
||||||
@@ -41,14 +41,14 @@ namespace Orchard.Tests.UI {
|
|||||||
Assert.That(page.Metadata.Type, Is.EqualTo("Layout"));
|
Assert.That(page.Metadata.Type, Is.EqualTo("Layout"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test, Ignore("implementation pending")]
|
||||||
public void PagePropertiesAreNil() {
|
public void PagePropertiesAreNil() {
|
||||||
var page = _workContext.Page;
|
var page = _workContext.Page;
|
||||||
var pageFoo = page.Foo;
|
var pageFoo = page.Foo;
|
||||||
Assert.That(pageFoo == null);
|
Assert.That(pageFoo == null);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test, Ignore("implementation pending")]
|
||||||
public void PageZonesPropertyIsNotNil() {
|
public void PageZonesPropertyIsNotNil() {
|
||||||
var page = _workContext.Page;
|
var page = _workContext.Page;
|
||||||
var pageZones = page.Zones;
|
var pageZones = page.Zones;
|
||||||
@@ -56,7 +56,7 @@ namespace Orchard.Tests.UI {
|
|||||||
Assert.That(pageZones.Foo == null);
|
Assert.That(pageZones.Foo == null);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test, Ignore("implementation pending")]
|
||||||
public void AddingToZonePropertyMakesItExist() {
|
public void AddingToZonePropertyMakesItExist() {
|
||||||
var page = _workContext.Page;
|
var page = _workContext.Page;
|
||||||
Assert.That(page.Zones.Foo == null);
|
Assert.That(page.Zones.Foo == null);
|
||||||
@@ -69,7 +69,7 @@ namespace Orchard.Tests.UI {
|
|||||||
Assert.That(page.Foo.Metadata.Type, Is.EqualTo("Zone"));
|
Assert.That(page.Foo.Metadata.Type, Is.EqualTo("Zone"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test, Ignore("implementation pending")]
|
||||||
public void AddingToZoneIndexedMakesItExist() {
|
public void AddingToZoneIndexedMakesItExist() {
|
||||||
var page = _workContext.Page;
|
var page = _workContext.Page;
|
||||||
Assert.That(page.Zones["Foo"] == null);
|
Assert.That(page.Zones["Foo"] == null);
|
||||||
@@ -82,8 +82,7 @@ namespace Orchard.Tests.UI {
|
|||||||
Assert.That(page["Foo"].Metadata.Type, Is.EqualTo("Zone"));
|
Assert.That(page["Foo"].Metadata.Type, Is.EqualTo("Zone"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test, Ignore("implementation pending")]
|
||||||
[Test]
|
|
||||||
public void CallingAddOnNilPropertyMakesItBecomeZone() {
|
public void CallingAddOnNilPropertyMakesItBecomeZone() {
|
||||||
var page = _workContext.Page;
|
var page = _workContext.Page;
|
||||||
Assert.That(page.Foo == null);
|
Assert.That(page.Foo == null);
|
||||||
@@ -94,8 +93,7 @@ namespace Orchard.Tests.UI {
|
|||||||
Assert.That(page.Foo.Metadata.Type, Is.EqualTo("Zone"));
|
Assert.That(page.Foo.Metadata.Type, Is.EqualTo("Zone"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test, Ignore("implementation pending")]
|
||||||
[Test]
|
|
||||||
public void ZoneContentsAreEnumerable() {
|
public void ZoneContentsAreEnumerable() {
|
||||||
var page = _workContext.Page;
|
var page = _workContext.Page;
|
||||||
Assert.That(page.Foo == null);
|
Assert.That(page.Foo == null);
|
||||||
@@ -126,7 +124,7 @@ namespace Orchard.Tests.UI {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test, Ignore("implementation pending")]
|
||||||
public void NumberIsFortyTwo() {
|
public void NumberIsFortyTwo() {
|
||||||
var page = _workContext.Page;
|
var page = _workContext.Page;
|
||||||
Assert.That(page.Number, Is.EqualTo(42));
|
Assert.That(page.Number, Is.EqualTo(42));
|
||||||
|
@@ -2,7 +2,6 @@ using System.Web.Mvc;
|
|||||||
using System.Web.Routing;
|
using System.Web.Routing;
|
||||||
using Autofac;
|
using Autofac;
|
||||||
using Autofac.Core;
|
using Autofac.Core;
|
||||||
using Autofac.Integration.Web;
|
|
||||||
|
|
||||||
namespace Orchard.Mvc {
|
namespace Orchard.Mvc {
|
||||||
public class OrchardControllerFactory : DefaultControllerFactory {
|
public class OrchardControllerFactory : DefaultControllerFactory {
|
||||||
|
Reference in New Issue
Block a user