From 02759d0c5bcdc2771180d35dd08e7e9977be1032 Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Thu, 30 Sep 2010 17:46:36 -0700 Subject: [PATCH] Adding some unit tests on Themes unification with Modules --HG-- branch : dev --- .../ExtensionLoaderCoordinatorTests.cs | 40 ++++++-- .../Extensions/ExtensionManagerTests.cs | 93 ++++++++++++++++++- .../Extensions/Folders/ExtensionFolders.cs | 20 +--- 3 files changed, 127 insertions(+), 26 deletions(-) diff --git a/src/Orchard.Tests/Environment/Extensions/ExtensionLoaderCoordinatorTests.cs b/src/Orchard.Tests/Environment/Extensions/ExtensionLoaderCoordinatorTests.cs index 3924b5eea..6e3d71c6a 100644 --- a/src/Orchard.Tests/Environment/Extensions/ExtensionLoaderCoordinatorTests.cs +++ b/src/Orchard.Tests/Environment/Extensions/ExtensionLoaderCoordinatorTests.cs @@ -22,7 +22,7 @@ namespace Orchard.Tests.Environment.Extensions { [SetUp] public void Init() { var builder = new ContainerBuilder(); - _folders = new StubFolders(); + _folders = new StubFolders("Module"); builder.RegisterInstance(_folders).As(); builder.RegisterType().As(); _container = builder.Build(); @@ -30,7 +30,10 @@ namespace Orchard.Tests.Environment.Extensions { } public class StubFolders : IExtensionFolders { - public StubFolders() { + private readonly string _extensionType; + + public StubFolders(string extensionType) { + _extensionType = extensionType; Manifests = new Dictionary(); } @@ -40,7 +43,7 @@ namespace Orchard.Tests.Environment.Extensions { foreach (var e in Manifests) { string name = e.Key; var parseResult = ExtensionFolders.ParseManifest(Manifests[name]); - yield return ExtensionFolders.GetDescriptorForExtension("~/", name, "Module", parseResult); + yield return ExtensionFolders.GetDescriptorForExtension("~/", name, _extensionType, parseResult); } } } @@ -249,7 +252,7 @@ features: [Test] public void ExtensionManagerShouldLoadFeatures() { var extensionLoader = new StubLoaders(); - var extensionFolder = new StubFolders(); + var extensionFolder = new StubFolders("Module"); extensionFolder.Manifests.Add("TestModule", @" name: TestModule @@ -275,7 +278,7 @@ features: [Test] public void ExtensionManagerFeaturesContainNonAbstractClasses() { var extensionLoader = new StubLoaders(); - var extensionFolder = new StubFolders(); + var extensionFolder = new StubFolders("Module"); extensionFolder.Manifests.Add("TestModule", @" name: TestModule @@ -310,7 +313,7 @@ features: [Test] public void ExtensionManagerTestFeatureAttribute() { var extensionLoader = new StubLoaders(); - var extensionFolder = new StubFolders(); + var extensionFolder = new StubFolders("Module"); extensionFolder.Manifests.Add("TestModule", @" name: TestModule @@ -340,7 +343,7 @@ features: [Test] public void ExtensionManagerLoadFeatureReturnsTypesFromSpecificFeaturesWithFeatureAttribute() { var extensionLoader = new StubLoaders(); - var extensionFolder = new StubFolders(); + var extensionFolder = new StubFolders("Module"); extensionFolder.Manifests.Add("TestModule", @" name: TestModule @@ -368,7 +371,7 @@ features: [Test] public void ExtensionManagerLoadFeatureDoesNotReturnTypesFromNonMatchingFeatures() { var extensionLoader = new StubLoaders(); - var extensionFolder = new StubFolders(); + var extensionFolder = new StubFolders("Module"); extensionFolder.Manifests.Add("TestModule", @" name: TestModule @@ -397,7 +400,26 @@ features: [Test] public void ModuleNameIsIntroducedAsFeatureImplicitly() { var extensionLoader = new StubLoaders(); - var extensionFolder = new StubFolders(); + var extensionFolder = new StubFolders("Module"); + + extensionFolder.Manifests.Add("Minimalistic", @" +name: Minimalistic +version: 1.0.3 +orchardversion: 1 +"); + + IExtensionManager extensionManager = new ExtensionManager(new[] { extensionFolder }, new[] { extensionLoader }); + var minimalisticModule = extensionManager.AvailableExtensions().Single(x => x.Name == "Minimalistic"); + + Assert.That(minimalisticModule.Features.Count(), Is.EqualTo(1)); + Assert.That(minimalisticModule.Features.Single().Name, Is.EqualTo("Minimalistic")); + } + + + [Test] + public void ThemeNameIsIntroducedAsFeatureImplicitly() { + var extensionLoader = new StubLoaders(); + var extensionFolder = new StubFolders("Theme"); extensionFolder.Manifests.Add("Minimalistic", @" name: Minimalistic diff --git a/src/Orchard.Tests/Environment/Extensions/ExtensionManagerTests.cs b/src/Orchard.Tests/Environment/Extensions/ExtensionManagerTests.cs index 1301f5604..fad984630 100644 --- a/src/Orchard.Tests/Environment/Extensions/ExtensionManagerTests.cs +++ b/src/Orchard.Tests/Environment/Extensions/ExtensionManagerTests.cs @@ -30,8 +30,14 @@ namespace Orchard.Tests.Environment.Extensions { } public class StubFolders : IExtensionFolders { - public StubFolders() { + private readonly string _extensionType; + + public StubFolders(string extensionType) { Manifests = new Dictionary(); + _extensionType = extensionType; + } + + public StubFolders() : this("Module") { } public IDictionary Manifests { get; set; } @@ -40,7 +46,7 @@ namespace Orchard.Tests.Environment.Extensions { foreach (var e in Manifests) { string name = e.Key; var parseResult = ExtensionFolders.ParseManifest(Manifests[name]); - yield return ExtensionFolders.GetDescriptorForExtension("~/", name, "Module", parseResult); + yield return ExtensionFolders.GetDescriptorForExtension("~/", name, _extensionType, parseResult); } } } @@ -445,5 +451,88 @@ features: var features = extensionManager.AvailableFeatures(); Assert.That(features.Aggregate("<", (a,b)=>a+b.Name+"<"), Is.EqualTo(" a + b.Name + "<"), Is.EqualTo(" AvailableExtensions() { @@ -126,20 +129,7 @@ namespace Orchard.Environment.Extensions.Folders { Zones = GetValue(fields, "zones"), }; - // in case of themes, there are no features - if ( extensionDescriptor.ExtensionType == "Module" ) { - extensionDescriptor.Features = GetFeaturesForExtension(GetMapping(fields, "features"), extensionDescriptor); - } - else { - var featureDescriptor = new FeatureDescriptor { - Extension = extensionDescriptor, - Name = extensionDescriptor.Name, - Category = "Themes", - Description = extensionDescriptor.Description - }; - - extensionDescriptor.Features = new[] {featureDescriptor}; - } + extensionDescriptor.Features = GetFeaturesForExtension(GetMapping(fields, "features"), extensionDescriptor); return extensionDescriptor; } @@ -171,7 +161,7 @@ namespace Orchard.Environment.Extensions.Folders { featureDescriptors.Add(new FeatureDescriptor { Name = extensionDescriptor.Name, Dependencies = new string[0], - Extension = extensionDescriptor, + Extension = extensionDescriptor }); } return featureDescriptors;