mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Some refactoring in DisplayManagement namespace
Removing unused IShapeTableFactory ShapeTableBuilder has default Feature - components describing shapes from their own module do not need to pass feature in Fixing some tests IShapeDescriptorBindingStrategy becomes IShapeTableProvider --HG-- branch : theming
This commit is contained in:
@@ -1,24 +0,0 @@
|
||||
using System;
|
||||
using Autofac;
|
||||
using NUnit.Framework;
|
||||
using Orchard.DisplayManagement.Descriptors;
|
||||
|
||||
namespace Orchard.Tests.DisplayManagement.Descriptors {
|
||||
[TestFixture]
|
||||
public class DefaultShapeTableFactoryTests : ContainerTestBase {
|
||||
private IShapeTableFactory _factory;
|
||||
|
||||
protected override void Register(ContainerBuilder builder) {
|
||||
builder.RegisterType<DefaultShapeTableFactory>().As<IShapeTableFactory>();
|
||||
}
|
||||
|
||||
protected override void Resolve(IContainer container) {
|
||||
_factory = container.Resolve<IShapeTableFactory>();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void FactoryIsResolved() {
|
||||
Assert.That(_factory, Is.Not.Null);
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,8 +1,52 @@
|
||||
using NUnit.Framework;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using Autofac;
|
||||
using NUnit.Framework;
|
||||
using Orchard.DisplayManagement.Descriptors;
|
||||
using Orchard.Environment.Extensions.Models;
|
||||
|
||||
namespace Orchard.Tests.DisplayManagement.Descriptors {
|
||||
[TestFixture]
|
||||
public class DefaultShapeTableManagerTests {
|
||||
public class DefaultShapeTableManagerTests : ContainerTestBase {
|
||||
protected override void Register(Autofac.ContainerBuilder builder) {
|
||||
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
|
||||
|
||||
builder.RegisterType<TestShapeProvider>().As<IShapeTableProvider>()
|
||||
.WithMetadata("Feature", TestFeature());
|
||||
}
|
||||
|
||||
static Feature TestFeature() {
|
||||
return new Feature {
|
||||
Descriptor = new FeatureDescriptor {
|
||||
Name = "Testing",
|
||||
Dependencies = Enumerable.Empty<string>(),
|
||||
Extension = new ExtensionDescriptor {
|
||||
Name = "Testing",
|
||||
ExtensionType = "Module",
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public class TestShapeProvider : IShapeTableProvider {
|
||||
public void Discover(ShapeTableBuilder builder) {
|
||||
builder.Describe("Hello");
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ManagerCanBeResolved() {
|
||||
var manager = _container.Resolve<IShapeTableManager>();
|
||||
Assert.That(manager, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DefaultShapeTableIsReturnedForNullOrEmpty() {
|
||||
var manager = _container.Resolve<IShapeTableManager>();
|
||||
var shapeTable1 = manager.GetShapeTable(null);
|
||||
var shapeTable2 = manager.GetShapeTable(string.Empty);
|
||||
Assert.That(shapeTable1.Descriptors["Hello"], Is.Not.Null);
|
||||
Assert.That(shapeTable2.Descriptors["Hello"], Is.Not.Null);
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,7 +1,9 @@
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web.Routing;
|
||||
using Autofac;
|
||||
using JetBrains.Annotations;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Orchard.DisplayManagement;
|
||||
@@ -15,12 +17,23 @@ using Orchard.Tests.Utility;
|
||||
namespace Orchard.Tests.DisplayManagement.Descriptors {
|
||||
[TestFixture]
|
||||
public class ShapeAttributeBindingStrategyTests : ContainerTestBase {
|
||||
private FeatureDescriptor _testFeature;
|
||||
private Feature _testFeature;
|
||||
|
||||
protected override void Register(Autofac.ContainerBuilder builder) {
|
||||
protected override void Register([NotNull] Autofac.ContainerBuilder builder) {
|
||||
if (builder == null) {
|
||||
throw new ArgumentNullException("builder");
|
||||
}
|
||||
builder.RegisterAutoMocking();
|
||||
_testFeature = new FeatureDescriptor { Name = "Testing", Extension = new ExtensionDescriptor { Name = "Testing" } };
|
||||
builder.RegisterType<ShapeAttributeBindingStrategy>().As<IShapeDescriptorBindingStrategy>();
|
||||
_testFeature = new Feature {
|
||||
Descriptor = new FeatureDescriptor {
|
||||
Name = "Testing",
|
||||
Extension = new ExtensionDescriptor {
|
||||
Name = "Testing",
|
||||
ExtensionType = "Module",
|
||||
}
|
||||
}
|
||||
};
|
||||
builder.RegisterType<ShapeAttributeBindingStrategy>().As<IShapeTableProvider>();
|
||||
builder.RegisterInstance(new TestProvider()).WithMetadata("Feature", _testFeature);
|
||||
builder.RegisterInstance(new RouteCollection());
|
||||
builder.RegisterModule(new ShapeAttributeBindingModule());
|
||||
@@ -45,11 +58,11 @@ namespace Orchard.Tests.DisplayManagement.Descriptors {
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerable<ShapeAlteration> GetInitializers() {
|
||||
var strategy = _container.Resolve<IShapeDescriptorBindingStrategy>();
|
||||
var builder = new ShapeTableBuilder();
|
||||
static IEnumerable<ShapeAlteration> GetAlterationBuilders(IShapeTableProvider strategy) {
|
||||
IList<ShapeAlterationBuilder> alterationBuilders = new List<ShapeAlterationBuilder>();
|
||||
var builder = new ShapeTableBuilder(alterationBuilders, null);
|
||||
strategy.Discover(builder);
|
||||
return builder.Build();
|
||||
return alterationBuilders.Select(alterationBuilder => alterationBuilder.Build());
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -60,10 +73,8 @@ namespace Orchard.Tests.DisplayManagement.Descriptors {
|
||||
|
||||
[Test]
|
||||
public void InitializersHaveExpectedShapeTypeNames() {
|
||||
var strategy = _container.Resolve<IShapeDescriptorBindingStrategy>();
|
||||
var builder = new ShapeTableBuilder();
|
||||
strategy.Discover(builder);
|
||||
var initializers = builder.Build();
|
||||
var strategy = _container.Resolve<IShapeTableProvider>();
|
||||
var initializers = GetAlterationBuilders(strategy);
|
||||
Assert.That(initializers.Any(i => i.ShapeType == "Simple"));
|
||||
Assert.That(initializers.Any(i => i.ShapeType == "Renamed"));
|
||||
Assert.That(initializers.Any(i => i.ShapeType == "RenamedMethod"), Is.False);
|
||||
@@ -71,27 +82,21 @@ namespace Orchard.Tests.DisplayManagement.Descriptors {
|
||||
|
||||
[Test]
|
||||
public void FeatureMetadataIsDetected() {
|
||||
var strategy = _container.Resolve<IShapeDescriptorBindingStrategy>();
|
||||
var builder = new ShapeTableBuilder();
|
||||
strategy.Discover(builder);
|
||||
var initializers = builder.Build();
|
||||
var strategy = _container.Resolve<IShapeTableProvider>();
|
||||
var initializers = GetAlterationBuilders(strategy);
|
||||
Assert.That(initializers.All(i => i.Feature == _testFeature));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void LifetimeScopeContainersHaveMetadata() {
|
||||
var strategy = _container.Resolve<IShapeDescriptorBindingStrategy>();
|
||||
var builder = new ShapeTableBuilder();
|
||||
strategy.Discover(builder);
|
||||
var initializers = builder.Build();
|
||||
var strategy = _container.Resolve<IShapeTableProvider>();
|
||||
var initializers = GetAlterationBuilders(strategy);
|
||||
Assert.That(initializers.Any(i => i.ShapeType == "Simple"));
|
||||
|
||||
var childContainer = _container.BeginLifetimeScope();
|
||||
|
||||
var strategy2 = childContainer.Resolve<IShapeDescriptorBindingStrategy>();
|
||||
var builder2 = new ShapeTableBuilder();
|
||||
strategy2.Discover(builder2);
|
||||
var initializers2 = builder2.Build();
|
||||
var strategy2 = childContainer.Resolve<IShapeTableProvider>();
|
||||
var initializers2 = GetAlterationBuilders(strategy2);
|
||||
Assert.That(initializers2.Any(i => i.ShapeType == "Simple"));
|
||||
|
||||
Assert.That(strategy, Is.Not.SameAs(strategy2));
|
||||
@@ -99,7 +104,7 @@ namespace Orchard.Tests.DisplayManagement.Descriptors {
|
||||
|
||||
[Test]
|
||||
public void BindingProvidedByStrategyInvokesMethod() {
|
||||
var initializers = GetInitializers();
|
||||
var initializers = GetAlterationBuilders(_container.Resolve<IShapeTableProvider>());
|
||||
|
||||
var shapeDescriptor = initializers.Where(i => i.ShapeType == "Simple")
|
||||
.Aggregate(new ShapeDescriptor { ShapeType = "Simple" }, (d, i) => { i.Alter(d); return d; });
|
||||
|
@@ -25,7 +25,7 @@ namespace Orchard.Tests.DisplayManagement.Descriptors {
|
||||
_testViewEngine = new TestViewEngine();
|
||||
|
||||
builder.Register(ctx => _descriptor);
|
||||
builder.RegisterType<ShapeTemplateBindingStrategy>().As<IShapeDescriptorBindingStrategy>();
|
||||
builder.RegisterType<ShapeTemplateBindingStrategy>().As<IShapeTableProvider>();
|
||||
builder.RegisterType<BasicShapeTemplateHarvester>().As<IShapeTemplateHarvester>();
|
||||
builder.RegisterInstance(_testViewEngine).As<IShapeTemplateViewEngine>();
|
||||
|
||||
@@ -84,12 +84,14 @@ namespace Orchard.Tests.DisplayManagement.Descriptors {
|
||||
AddEnabledFeature("Alpha");
|
||||
|
||||
_testViewEngine.Add("~/Modules/Alpha/Views/AlphaShape.blah", null);
|
||||
var strategy = _container.Resolve<IShapeDescriptorBindingStrategy>();
|
||||
var builder = new ShapeTableBuilder();
|
||||
strategy.Discover(builder);
|
||||
var alterations = builder.Build();
|
||||
var strategy = _container.Resolve<IShapeTableProvider>();
|
||||
|
||||
Assert.That(alterations.Any(alt => alt.ShapeType == "AlphaShape"));
|
||||
IList<ShapeAlterationBuilder> alterationBuilders = new List<ShapeAlterationBuilder>();
|
||||
var builder = new ShapeTableBuilder(alterationBuilders,null);
|
||||
strategy.Discover(builder);
|
||||
var alterations = alterationBuilders.Select(alterationBuilder=>alterationBuilder.Build());
|
||||
|
||||
Assert.That(alterations.Any(alteration => alteration.ShapeType == "AlphaShape"));
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -5,6 +5,7 @@ using System.Text;
|
||||
using Autofac;
|
||||
using NUnit.Framework;
|
||||
using Orchard.DisplayManagement;
|
||||
using Orchard.DisplayManagement.Descriptors;
|
||||
using Orchard.DisplayManagement.Implementation;
|
||||
using Orchard.DisplayManagement.Shapes;
|
||||
|
||||
@@ -17,6 +18,8 @@ namespace Orchard.Tests.DisplayManagement {
|
||||
public void Init() {
|
||||
var builder = new ContainerBuilder();
|
||||
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
|
||||
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
|
||||
builder.RegisterType<ShapeHelperFactory>().As<IShapeHelperFactory>();
|
||||
_container = builder.Build();
|
||||
}
|
||||
|
||||
|
@@ -5,6 +5,7 @@ using System.Text;
|
||||
using Autofac;
|
||||
using NUnit.Framework;
|
||||
using Orchard.DisplayManagement;
|
||||
using Orchard.DisplayManagement.Descriptors;
|
||||
using Orchard.DisplayManagement.Implementation;
|
||||
using Orchard.DisplayManagement.Shapes;
|
||||
|
||||
@@ -18,6 +19,7 @@ namespace Orchard.Tests.DisplayManagement {
|
||||
var builder = new ContainerBuilder();
|
||||
builder.RegisterType<ShapeHelperFactory>().As<IShapeHelperFactory>();
|
||||
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
|
||||
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
|
||||
_container = builder.Build();
|
||||
|
||||
}
|
||||
|
@@ -25,7 +25,7 @@ namespace Orchard.Tests.DisplayManagement {
|
||||
public void Init() {
|
||||
var builder = new ContainerBuilder();
|
||||
builder.RegisterModule(new ShapeAttributeBindingModule());
|
||||
builder.RegisterType<ShapeAttributeBindingStrategy>().As<IShapeDescriptorBindingStrategy>();
|
||||
builder.RegisterType<ShapeAttributeBindingStrategy>().As<IShapeTableProvider>();
|
||||
builder.RegisterType<DefaultDisplayManager>().As<IDisplayManager>();
|
||||
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
|
||||
builder.RegisterType<DisplayHelperFactory>().As<IDisplayHelperFactory>();
|
||||
|
@@ -197,7 +197,6 @@
|
||||
<Compile Include="DisplayManagement\DefaultDisplayManagerTests.cs" />
|
||||
<Compile Include="ContainerTestBase.cs" />
|
||||
<Compile Include="DisplayManagement\Descriptors\BasicShapeTemplateHarvesterTests.cs" />
|
||||
<Compile Include="DisplayManagement\Descriptors\DefaultShapeTableFactoryTests.cs" />
|
||||
<Compile Include="DisplayManagement\Descriptors\DefaultShapeTableManagerTests.cs" />
|
||||
<Compile Include="DisplayManagement\Descriptors\ShapeAttributeBindingStrategyTests.cs" />
|
||||
<Compile Include="DisplayManagement\Descriptors\ShapeTemplateBindingStrategyTests.cs" />
|
||||
|
@@ -23,7 +23,7 @@ namespace Orchard.Tests.UI {
|
||||
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
|
||||
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
|
||||
builder.RegisterType<PageWorkContext>().As<IWorkContextStateProvider>();
|
||||
//builder.RegisterType<CoreShapes>().As<IShapeDescriptorBindingStrategy>();
|
||||
//builder.RegisterType<CoreShapes>().As<IShapeTableProvider>();
|
||||
builder.RegisterType<NumberIsAlwaysFortyTwo>().As<IShapeFactoryEvents>();
|
||||
|
||||
throw new NotImplementedException("this test fixture needs to move to modules tests now");
|
||||
|
Reference in New Issue
Block a user