mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Fix unit tests
--HG-- branch : dev
This commit is contained in:
@@ -54,8 +54,8 @@ namespace Orchard.Tests.Environment.Extensions {
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void NamesFromFoldersWithModuleTxtShouldBeListed() {
|
public void NamesFromFoldersWithModuleTxtShouldBeListed() {
|
||||||
var folders = new ModuleFolders(new[] { _tempFolderName },null,null);
|
IExtensionFolders folders = new ModuleFolders(new[] { _tempFolderName }, null, null);
|
||||||
var names = folders.ListNames();
|
var names = folders.AvailableExtensions().Select(d => d.Name);
|
||||||
Assert.That(names.Count(), Is.EqualTo(2));
|
Assert.That(names.Count(), Is.EqualTo(2));
|
||||||
Assert.That(names, Has.Some.EqualTo("Sample1"));
|
Assert.That(names, Has.Some.EqualTo("Sample1"));
|
||||||
Assert.That(names, Has.Some.EqualTo("Sample3"));
|
Assert.That(names, Has.Some.EqualTo("Sample3"));
|
||||||
@@ -63,7 +63,7 @@ namespace Orchard.Tests.Environment.Extensions {
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void ModuleTxtShouldBeParsedAndReturnedAsYamlDocument() {
|
public void ModuleTxtShouldBeParsedAndReturnedAsYamlDocument() {
|
||||||
var folders = new ModuleFolders(new[] { _tempFolderName }, new StubCacheManager(), new StubWebSiteFolder());
|
IExtensionFolders folders = new ModuleFolders(new[] { _tempFolderName }, new StubCacheManager(), new StubWebSiteFolder());
|
||||||
var sample1 = folders.AvailableExtensions().Single(d => d.Name == "Sample1");
|
var sample1 = folders.AvailableExtensions().Single(d => d.Name == "Sample1");
|
||||||
Assert.That(sample1.Name, Is.Not.Empty);
|
Assert.That(sample1.Name, Is.Not.Empty);
|
||||||
Assert.That(sample1.Author, Is.EqualTo("Bertrand Le Roy"));
|
Assert.That(sample1.Author, Is.EqualTo("Bertrand Le Roy"));
|
||||||
|
@@ -34,26 +34,12 @@ namespace Orchard.Tests.Environment.Extensions {
|
|||||||
|
|
||||||
public IDictionary<string, string> Manifests { get; set; }
|
public IDictionary<string, string> Manifests { get; set; }
|
||||||
|
|
||||||
public IEnumerable<string> ListNames() {
|
|
||||||
return Manifests.Keys;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ParseResult ParseManifest(string name) {
|
|
||||||
var parser = new YamlParser();
|
|
||||||
bool success;
|
|
||||||
var stream = parser.ParseYamlStream(new TextInput(Manifests[name]), out success);
|
|
||||||
if (success) {
|
|
||||||
return new ParseResult {
|
|
||||||
Location = "~/InMemory",
|
|
||||||
Name = name,
|
|
||||||
YamlDocument = stream.Documents.Single()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IEnumerable<ExtensionDescriptor> AvailableExtensions() {
|
public IEnumerable<ExtensionDescriptor> AvailableExtensions() {
|
||||||
throw new NotImplementedException();
|
foreach(var e in Manifests) {
|
||||||
|
string name = e.Key;
|
||||||
|
var parseResult = ExtensionFolders.ParseManifest(Manifests[name]);
|
||||||
|
yield return ExtensionFolders.GetDescriptorForExtension("~/", name, "InMemory", parseResult);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -218,7 +204,7 @@ features:
|
|||||||
Description: Contains the Phi type.
|
Description: Contains the Phi type.
|
||||||
");
|
");
|
||||||
|
|
||||||
ExtensionManager extensionManager = new ExtensionManager(new[] { extensionFolder }, new[] { extensionLoader });
|
IExtensionManager extensionManager = new ExtensionManager(new[] { extensionFolder }, new[] { extensionLoader });
|
||||||
var testFeature = extensionManager.AvailableExtensions()
|
var testFeature = extensionManager.AvailableExtensions()
|
||||||
.SelectMany(x => x.Features);
|
.SelectMany(x => x.Features);
|
||||||
|
|
||||||
@@ -244,7 +230,7 @@ features:
|
|||||||
Description: Contains the Phi type.
|
Description: Contains the Phi type.
|
||||||
");
|
");
|
||||||
|
|
||||||
ExtensionManager extensionManager = new ExtensionManager(new[] { extensionFolder }, new[] { extensionLoader });
|
IExtensionManager extensionManager = new ExtensionManager(new[] { extensionFolder }, new[] { extensionLoader });
|
||||||
var testFeature = extensionManager.AvailableExtensions()
|
var testFeature = extensionManager.AvailableExtensions()
|
||||||
.SelectMany(x => x.Features);
|
.SelectMany(x => x.Features);
|
||||||
|
|
||||||
@@ -301,7 +287,7 @@ features:
|
|||||||
Description: Contains the Phi type.
|
Description: Contains the Phi type.
|
||||||
");
|
");
|
||||||
|
|
||||||
ExtensionManager extensionManager = new ExtensionManager(new[] { extensionFolder }, new[] { extensionLoader });
|
IExtensionManager extensionManager = new ExtensionManager(new[] { extensionFolder }, new[] { extensionLoader });
|
||||||
var testFeature = extensionManager.AvailableExtensions()
|
var testFeature = extensionManager.AvailableExtensions()
|
||||||
.SelectMany(x => x.Features)
|
.SelectMany(x => x.Features)
|
||||||
.Single(x => x.Name == "TestFeature");
|
.Single(x => x.Name == "TestFeature");
|
||||||
@@ -329,7 +315,7 @@ features:
|
|||||||
Description: Contains the Phi type.
|
Description: Contains the Phi type.
|
||||||
");
|
");
|
||||||
|
|
||||||
ExtensionManager extensionManager = new ExtensionManager(new[] { extensionFolder }, new[] { extensionLoader });
|
IExtensionManager extensionManager = new ExtensionManager(new[] { extensionFolder }, new[] { extensionLoader });
|
||||||
var testModule = extensionManager.AvailableExtensions()
|
var testModule = extensionManager.AvailableExtensions()
|
||||||
.SelectMany(x => x.Features)
|
.SelectMany(x => x.Features)
|
||||||
.Single(x => x.Name == "TestModule");
|
.Single(x => x.Name == "TestModule");
|
||||||
@@ -353,7 +339,7 @@ version: 1.0.3
|
|||||||
orchardversion: 1
|
orchardversion: 1
|
||||||
");
|
");
|
||||||
|
|
||||||
ExtensionManager extensionManager = new ExtensionManager(new[] { extensionFolder }, new[] { extensionLoader });
|
IExtensionManager extensionManager = new ExtensionManager(new[] { extensionFolder }, new[] { extensionLoader });
|
||||||
var minimalisticModule = extensionManager.AvailableExtensions().Single(x => x.Name == "Minimalistic");
|
var minimalisticModule = extensionManager.AvailableExtensions().Single(x => x.Name == "Minimalistic");
|
||||||
|
|
||||||
Assert.That(minimalisticModule.Features.Count(), Is.EqualTo(1));
|
Assert.That(minimalisticModule.Features.Count(), Is.EqualTo(1));
|
||||||
|
@@ -2,9 +2,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Web.Hosting;
|
|
||||||
using Orchard.Caching;
|
using Orchard.Caching;
|
||||||
using Orchard.Environment.Extensions.Helpers;
|
|
||||||
using Orchard.Environment.Extensions.Models;
|
using Orchard.Environment.Extensions.Models;
|
||||||
using Orchard.FileSystems.WebSite;
|
using Orchard.FileSystems.WebSite;
|
||||||
using Yaml.Grammar;
|
using Yaml.Grammar;
|
||||||
@@ -56,7 +54,7 @@ namespace Orchard.Environment.Extensions.Folders {
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
ExtensionDescriptor GetExtensionDescriptor(string locationPath, string extensionName, string manifestPath) {
|
private ExtensionDescriptor GetExtensionDescriptor(string locationPath, string extensionName, string manifestPath) {
|
||||||
return _cacheManager.Get(manifestPath, context => {
|
return _cacheManager.Get(manifestPath, context => {
|
||||||
|
|
||||||
context.Monitor(_webSiteFolder.WhenPathChanges(manifestPath));
|
context.Monitor(_webSiteFolder.WhenPathChanges(manifestPath));
|
||||||
@@ -75,20 +73,11 @@ namespace Orchard.Environment.Extensions.Folders {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<string> ListNames() {
|
private ExtensionDescriptor GetDescriptorForExtension(string locationPath, string extensionName, ParseResult parseResult) {
|
||||||
foreach (var path in _paths) {
|
return GetDescriptorForExtension(locationPath, extensionName, _extensionType, parseResult);
|
||||||
if (!Directory.Exists(PathHelpers.GetPhysicalPath(path)))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
foreach (var directoryName in Directory.GetDirectories(PathHelpers.GetPhysicalPath(path))) {
|
|
||||||
if (_manifestIsOptional || File.Exists(Path.Combine(directoryName, _manifestName))) {
|
|
||||||
yield return Path.GetFileName(directoryName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ParseResult ParseManifest(string manifestText) {
|
public static ParseResult ParseManifest(string manifestText) {
|
||||||
bool success;
|
bool success;
|
||||||
var yamlStream = new YamlParser().ParseYamlStream(new TextInput(manifestText), out success);
|
var yamlStream = new YamlParser().ParseYamlStream(new TextInput(manifestText), out success);
|
||||||
if (yamlStream == null || !success) {
|
if (yamlStream == null || !success) {
|
||||||
@@ -100,8 +89,7 @@ namespace Orchard.Environment.Extensions.Folders {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ExtensionDescriptor GetDescriptorForExtension(string locationPath, string extensionName, string extensionType, ParseResult parseResult) {
|
||||||
private ExtensionDescriptor GetDescriptorForExtension(string locationPath, string extensionName, ParseResult parseResult) {
|
|
||||||
var mapping = (Mapping)parseResult.YamlDocument.Root;
|
var mapping = (Mapping)parseResult.YamlDocument.Root;
|
||||||
var fields = mapping.Entities
|
var fields = mapping.Entities
|
||||||
.Where(x => x.Key is Scalar)
|
.Where(x => x.Key is Scalar)
|
||||||
@@ -110,7 +98,7 @@ namespace Orchard.Environment.Extensions.Folders {
|
|||||||
var extensionDescriptor = new ExtensionDescriptor {
|
var extensionDescriptor = new ExtensionDescriptor {
|
||||||
Location = locationPath,
|
Location = locationPath,
|
||||||
Name = extensionName,
|
Name = extensionName,
|
||||||
ExtensionType = _extensionType,
|
ExtensionType = extensionType,
|
||||||
DisplayName = GetValue(fields, "name") ?? extensionName,
|
DisplayName = GetValue(fields, "name") ?? extensionName,
|
||||||
Description = GetValue(fields, "description"),
|
Description = GetValue(fields, "description"),
|
||||||
Version = GetValue(fields, "version"),
|
Version = GetValue(fields, "version"),
|
||||||
@@ -158,25 +146,19 @@ namespace Orchard.Environment.Extensions.Folders {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static string[] ParseFeatureDependenciesEntry(string dependenciesEntry) {
|
private static string[] ParseFeatureDependenciesEntry(string dependenciesEntry) {
|
||||||
List<string> dependencies = new List<string>();
|
var dependencies = new List<string>();
|
||||||
foreach (var s in dependenciesEntry.Split(',')) {
|
foreach (var s in dependenciesEntry.Split(',')) {
|
||||||
dependencies.Add(s.Trim());
|
dependencies.Add(s.Trim());
|
||||||
}
|
}
|
||||||
return dependencies.ToArray();
|
return dependencies.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Mapping GetMapping(
|
private static Mapping GetMapping(IDictionary<string, DataItem> fields, string key) {
|
||||||
IDictionary<string, DataItem> fields,
|
|
||||||
string key) {
|
|
||||||
|
|
||||||
DataItem value;
|
DataItem value;
|
||||||
return fields.TryGetValue(key, out value) ? (Mapping)value : null;
|
return fields.TryGetValue(key, out value) ? (Mapping)value : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string GetValue(
|
private static string GetValue(IDictionary<string, DataItem> fields, string key) {
|
||||||
IDictionary<string, DataItem> fields,
|
|
||||||
string key) {
|
|
||||||
|
|
||||||
DataItem value;
|
DataItem value;
|
||||||
return fields.TryGetValue(key, out value) ? value.ToString() : null;
|
return fields.TryGetValue(key, out value) ? value.ToString() : null;
|
||||||
}
|
}
|
||||||
|
@@ -6,6 +6,4 @@ namespace Orchard.Environment.Extensions.Folders {
|
|||||||
public interface IExtensionFolders {
|
public interface IExtensionFolders {
|
||||||
IEnumerable<ExtensionDescriptor> AvailableExtensions();
|
IEnumerable<ExtensionDescriptor> AvailableExtensions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
Reference in New Issue
Block a user