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:
Louis DeJardin
2010-09-13 20:57:37 -07:00
parent a0188e8aca
commit 6bfde2891c
20 changed files with 181 additions and 138 deletions

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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; });

View File

@@ -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"));
}
}

View File

@@ -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();
}

View File

@@ -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();
}

View File

@@ -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>();

View File

@@ -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" />

View File

@@ -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");