mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Adding some unit tests on Themes unification with Modules
--HG-- branch : dev
This commit is contained in:
@@ -22,7 +22,7 @@ namespace Orchard.Tests.Environment.Extensions {
|
|||||||
[SetUp]
|
[SetUp]
|
||||||
public void Init() {
|
public void Init() {
|
||||||
var builder = new ContainerBuilder();
|
var builder = new ContainerBuilder();
|
||||||
_folders = new StubFolders();
|
_folders = new StubFolders("Module");
|
||||||
builder.RegisterInstance(_folders).As<IExtensionFolders>();
|
builder.RegisterInstance(_folders).As<IExtensionFolders>();
|
||||||
builder.RegisterType<ExtensionManager>().As<IExtensionManager>();
|
builder.RegisterType<ExtensionManager>().As<IExtensionManager>();
|
||||||
_container = builder.Build();
|
_container = builder.Build();
|
||||||
@@ -30,7 +30,10 @@ namespace Orchard.Tests.Environment.Extensions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public class StubFolders : IExtensionFolders {
|
public class StubFolders : IExtensionFolders {
|
||||||
public StubFolders() {
|
private readonly string _extensionType;
|
||||||
|
|
||||||
|
public StubFolders(string extensionType) {
|
||||||
|
_extensionType = extensionType;
|
||||||
Manifests = new Dictionary<string, string>();
|
Manifests = new Dictionary<string, string>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -40,7 +43,7 @@ namespace Orchard.Tests.Environment.Extensions {
|
|||||||
foreach (var e in Manifests) {
|
foreach (var e in Manifests) {
|
||||||
string name = e.Key;
|
string name = e.Key;
|
||||||
var parseResult = ExtensionFolders.ParseManifest(Manifests[name]);
|
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]
|
[Test]
|
||||||
public void ExtensionManagerShouldLoadFeatures() {
|
public void ExtensionManagerShouldLoadFeatures() {
|
||||||
var extensionLoader = new StubLoaders();
|
var extensionLoader = new StubLoaders();
|
||||||
var extensionFolder = new StubFolders();
|
var extensionFolder = new StubFolders("Module");
|
||||||
|
|
||||||
extensionFolder.Manifests.Add("TestModule", @"
|
extensionFolder.Manifests.Add("TestModule", @"
|
||||||
name: TestModule
|
name: TestModule
|
||||||
@@ -275,7 +278,7 @@ features:
|
|||||||
[Test]
|
[Test]
|
||||||
public void ExtensionManagerFeaturesContainNonAbstractClasses() {
|
public void ExtensionManagerFeaturesContainNonAbstractClasses() {
|
||||||
var extensionLoader = new StubLoaders();
|
var extensionLoader = new StubLoaders();
|
||||||
var extensionFolder = new StubFolders();
|
var extensionFolder = new StubFolders("Module");
|
||||||
|
|
||||||
extensionFolder.Manifests.Add("TestModule", @"
|
extensionFolder.Manifests.Add("TestModule", @"
|
||||||
name: TestModule
|
name: TestModule
|
||||||
@@ -310,7 +313,7 @@ features:
|
|||||||
[Test]
|
[Test]
|
||||||
public void ExtensionManagerTestFeatureAttribute() {
|
public void ExtensionManagerTestFeatureAttribute() {
|
||||||
var extensionLoader = new StubLoaders();
|
var extensionLoader = new StubLoaders();
|
||||||
var extensionFolder = new StubFolders();
|
var extensionFolder = new StubFolders("Module");
|
||||||
|
|
||||||
extensionFolder.Manifests.Add("TestModule", @"
|
extensionFolder.Manifests.Add("TestModule", @"
|
||||||
name: TestModule
|
name: TestModule
|
||||||
@@ -340,7 +343,7 @@ features:
|
|||||||
[Test]
|
[Test]
|
||||||
public void ExtensionManagerLoadFeatureReturnsTypesFromSpecificFeaturesWithFeatureAttribute() {
|
public void ExtensionManagerLoadFeatureReturnsTypesFromSpecificFeaturesWithFeatureAttribute() {
|
||||||
var extensionLoader = new StubLoaders();
|
var extensionLoader = new StubLoaders();
|
||||||
var extensionFolder = new StubFolders();
|
var extensionFolder = new StubFolders("Module");
|
||||||
|
|
||||||
extensionFolder.Manifests.Add("TestModule", @"
|
extensionFolder.Manifests.Add("TestModule", @"
|
||||||
name: TestModule
|
name: TestModule
|
||||||
@@ -368,7 +371,7 @@ features:
|
|||||||
[Test]
|
[Test]
|
||||||
public void ExtensionManagerLoadFeatureDoesNotReturnTypesFromNonMatchingFeatures() {
|
public void ExtensionManagerLoadFeatureDoesNotReturnTypesFromNonMatchingFeatures() {
|
||||||
var extensionLoader = new StubLoaders();
|
var extensionLoader = new StubLoaders();
|
||||||
var extensionFolder = new StubFolders();
|
var extensionFolder = new StubFolders("Module");
|
||||||
|
|
||||||
extensionFolder.Manifests.Add("TestModule", @"
|
extensionFolder.Manifests.Add("TestModule", @"
|
||||||
name: TestModule
|
name: TestModule
|
||||||
@@ -397,7 +400,26 @@ features:
|
|||||||
[Test]
|
[Test]
|
||||||
public void ModuleNameIsIntroducedAsFeatureImplicitly() {
|
public void ModuleNameIsIntroducedAsFeatureImplicitly() {
|
||||||
var extensionLoader = new StubLoaders();
|
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", @"
|
extensionFolder.Manifests.Add("Minimalistic", @"
|
||||||
name: Minimalistic
|
name: Minimalistic
|
||||||
|
@@ -30,8 +30,14 @@ namespace Orchard.Tests.Environment.Extensions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public class StubFolders : IExtensionFolders {
|
public class StubFolders : IExtensionFolders {
|
||||||
public StubFolders() {
|
private readonly string _extensionType;
|
||||||
|
|
||||||
|
public StubFolders(string extensionType) {
|
||||||
Manifests = new Dictionary<string, string>();
|
Manifests = new Dictionary<string, string>();
|
||||||
|
_extensionType = extensionType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public StubFolders() : this("Module") {
|
||||||
}
|
}
|
||||||
|
|
||||||
public IDictionary<string, string> Manifests { get; set; }
|
public IDictionary<string, string> Manifests { get; set; }
|
||||||
@@ -40,7 +46,7 @@ namespace Orchard.Tests.Environment.Extensions {
|
|||||||
foreach (var e in Manifests) {
|
foreach (var e in Manifests) {
|
||||||
string name = e.Key;
|
string name = e.Key;
|
||||||
var parseResult = ExtensionFolders.ParseManifest(Manifests[name]);
|
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();
|
var features = extensionManager.AvailableFeatures();
|
||||||
Assert.That(features.Aggregate("<", (a,b)=>a+b.Name+"<"), Is.EqualTo("<Beta<Gamma<Alpha<"));
|
Assert.That(features.Aggregate("<", (a,b)=>a+b.Name+"<"), Is.EqualTo("<Beta<Gamma<Alpha<"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void FeatureDescriptorsShouldBeLoadedInThemes() {
|
||||||
|
var extensionLoader = new StubLoaders();
|
||||||
|
var moduleExtensionFolder = new StubFolders();
|
||||||
|
var themeExtensionFolder = new StubFolders("Theme");
|
||||||
|
|
||||||
|
moduleExtensionFolder.Manifests.Add("Alpha", @"
|
||||||
|
name: Alpha
|
||||||
|
version: 1.0.3
|
||||||
|
orchardversion: 1
|
||||||
|
features:
|
||||||
|
Alpha:
|
||||||
|
Dependencies: Gamma
|
||||||
|
");
|
||||||
|
|
||||||
|
moduleExtensionFolder.Manifests.Add("Beta", @"
|
||||||
|
name: Beta
|
||||||
|
version: 1.0.3
|
||||||
|
orchardversion: 1
|
||||||
|
");
|
||||||
|
moduleExtensionFolder.Manifests.Add("Gamma", @"
|
||||||
|
name: Gamma
|
||||||
|
version: 1.0.3
|
||||||
|
orchardversion: 1
|
||||||
|
features:
|
||||||
|
Gamma:
|
||||||
|
Dependencies: Beta
|
||||||
|
");
|
||||||
|
|
||||||
|
moduleExtensionFolder.Manifests.Add("Classic", @"
|
||||||
|
name: Classic
|
||||||
|
version: 1.0.3
|
||||||
|
orchardversion: 1
|
||||||
|
");
|
||||||
|
|
||||||
|
IExtensionManager extensionManager = new ExtensionManager(new[] { moduleExtensionFolder, themeExtensionFolder }, new[] { extensionLoader });
|
||||||
|
var features = extensionManager.AvailableFeatures();
|
||||||
|
Assert.That(features.Count(), Is.EqualTo(4));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ThemeFeatureDescriptorsShouldBeAbleToDependOnModules() {
|
||||||
|
var extensionLoader = new StubLoaders();
|
||||||
|
var moduleExtensionFolder = new StubFolders();
|
||||||
|
var themeExtensionFolder = new StubFolders("Theme");
|
||||||
|
|
||||||
|
moduleExtensionFolder.Manifests.Add("Alpha", @"
|
||||||
|
name: Alpha
|
||||||
|
version: 1.0.3
|
||||||
|
orchardversion: 1
|
||||||
|
features:
|
||||||
|
Alpha:
|
||||||
|
Dependencies: Gamma
|
||||||
|
");
|
||||||
|
|
||||||
|
moduleExtensionFolder.Manifests.Add("Beta", @"
|
||||||
|
name: Beta
|
||||||
|
version: 1.0.3
|
||||||
|
orchardversion: 1
|
||||||
|
");
|
||||||
|
moduleExtensionFolder.Manifests.Add("Gamma", @"
|
||||||
|
name: Gamma
|
||||||
|
version: 1.0.3
|
||||||
|
orchardversion: 1
|
||||||
|
features:
|
||||||
|
Gamma:
|
||||||
|
Dependencies: Beta
|
||||||
|
");
|
||||||
|
|
||||||
|
moduleExtensionFolder.Manifests.Add("Classic", @"
|
||||||
|
name: Classic
|
||||||
|
version: 1.0.3
|
||||||
|
orchardversion: 1
|
||||||
|
features:
|
||||||
|
Classic:
|
||||||
|
Dependencies: Alpha
|
||||||
|
");
|
||||||
|
|
||||||
|
IExtensionManager extensionManager = new ExtensionManager(new[] { moduleExtensionFolder, themeExtensionFolder }, new[] { extensionLoader });
|
||||||
|
var features = extensionManager.AvailableFeatures();
|
||||||
|
Assert.That(features.Aggregate("<", (a, b) => a + b.Name + "<"), Is.EqualTo("<Beta<Gamma<Alpha<Classic<"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -5,6 +5,7 @@ using System.Linq;
|
|||||||
using Orchard.Caching;
|
using Orchard.Caching;
|
||||||
using Orchard.Environment.Extensions.Models;
|
using Orchard.Environment.Extensions.Models;
|
||||||
using Orchard.FileSystems.WebSite;
|
using Orchard.FileSystems.WebSite;
|
||||||
|
using Orchard.Localization;
|
||||||
using Orchard.Logging;
|
using Orchard.Logging;
|
||||||
using Yaml.Grammar;
|
using Yaml.Grammar;
|
||||||
|
|
||||||
@@ -36,8 +37,10 @@ namespace Orchard.Environment.Extensions.Folders {
|
|||||||
_cacheManager = cacheManager;
|
_cacheManager = cacheManager;
|
||||||
_webSiteFolder = webSiteFolder;
|
_webSiteFolder = webSiteFolder;
|
||||||
Logger = NullLogger.Instance;
|
Logger = NullLogger.Instance;
|
||||||
|
T = NullLocalizer.Instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Localizer T { get; set; }
|
||||||
ILogger Logger { get; set; }
|
ILogger Logger { get; set; }
|
||||||
|
|
||||||
public IEnumerable<ExtensionDescriptor> AvailableExtensions() {
|
public IEnumerable<ExtensionDescriptor> AvailableExtensions() {
|
||||||
@@ -126,20 +129,7 @@ namespace Orchard.Environment.Extensions.Folders {
|
|||||||
Zones = GetValue(fields, "zones"),
|
Zones = GetValue(fields, "zones"),
|
||||||
};
|
};
|
||||||
|
|
||||||
// in case of themes, there are no features
|
extensionDescriptor.Features = GetFeaturesForExtension(GetMapping(fields, "features"), extensionDescriptor);
|
||||||
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};
|
|
||||||
}
|
|
||||||
|
|
||||||
return extensionDescriptor;
|
return extensionDescriptor;
|
||||||
}
|
}
|
||||||
@@ -171,7 +161,7 @@ namespace Orchard.Environment.Extensions.Folders {
|
|||||||
featureDescriptors.Add(new FeatureDescriptor {
|
featureDescriptors.Add(new FeatureDescriptor {
|
||||||
Name = extensionDescriptor.Name,
|
Name = extensionDescriptor.Name,
|
||||||
Dependencies = new string[0],
|
Dependencies = new string[0],
|
||||||
Extension = extensionDescriptor,
|
Extension = extensionDescriptor
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return featureDescriptors;
|
return featureDescriptors;
|
||||||
|
Reference in New Issue
Block a user