2009-11-10 06:15:21 +00:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using Autofac;
|
|
|
|
|
using Autofac.Builder;
|
2009-12-01 21:29:16 +00:00
|
|
|
|
using Autofac.Modules;
|
2009-11-10 06:15:21 +00:00
|
|
|
|
using NUnit.Framework;
|
|
|
|
|
using Orchard.Packages;
|
2009-12-01 21:29:16 +00:00
|
|
|
|
using Orchard.Packages.Loaders;
|
2009-11-10 06:15:21 +00:00
|
|
|
|
using Yaml.Grammar;
|
|
|
|
|
|
|
|
|
|
namespace Orchard.Tests.Packages {
|
|
|
|
|
[TestFixture]
|
|
|
|
|
public class PackageManagerTests {
|
|
|
|
|
private IContainer _container;
|
|
|
|
|
private IPackageManager _manager;
|
|
|
|
|
private StubFolders _folders;
|
|
|
|
|
|
|
|
|
|
[SetUp]
|
|
|
|
|
public void Init() {
|
|
|
|
|
var builder = new ContainerBuilder();
|
|
|
|
|
_folders = new StubFolders();
|
2009-12-01 21:29:16 +00:00
|
|
|
|
builder.RegisterModule(new ImplicitCollectionSupportModule());
|
2009-11-10 06:15:21 +00:00
|
|
|
|
builder.Register(_folders).As<IPackageFolders>();
|
|
|
|
|
builder.Register<PackageManager>().As<IPackageManager>();
|
|
|
|
|
_container = builder.Build();
|
|
|
|
|
_manager = _container.Resolve<IPackageManager>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class StubFolders : IPackageFolders {
|
|
|
|
|
public StubFolders() {
|
|
|
|
|
Manifests = new Dictionary<string, string>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public IDictionary<string, string> Manifests { get; set; }
|
|
|
|
|
|
|
|
|
|
public IEnumerable<string> ListNames() {
|
|
|
|
|
return Manifests.Keys;
|
|
|
|
|
}
|
|
|
|
|
|
2009-11-18 05:36:09 +00:00
|
|
|
|
public ParseResult ParseManifest(string name) {
|
2009-11-10 06:15:21 +00:00
|
|
|
|
var parser = new YamlParser();
|
|
|
|
|
bool success;
|
|
|
|
|
var stream = parser.ParseYamlStream(new TextInput(Manifests[name]), out success);
|
2009-11-18 05:36:09 +00:00
|
|
|
|
if (success) {
|
|
|
|
|
return new ParseResult {
|
|
|
|
|
Location = "~/InMemory",
|
|
|
|
|
Name = name,
|
|
|
|
|
YamlDocument = stream.Documents.Single()
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
return null;
|
2009-11-10 06:15:21 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2009-11-18 05:36:09 +00:00
|
|
|
|
|
2009-11-10 06:15:21 +00:00
|
|
|
|
[Test]
|
|
|
|
|
public void AvailablePackagesShouldFollowCatalogLocations() {
|
|
|
|
|
_folders.Manifests.Add("foo", "name: Foo");
|
|
|
|
|
_folders.Manifests.Add("bar", "name: Bar");
|
|
|
|
|
_folders.Manifests.Add("frap", "name: Frap");
|
|
|
|
|
_folders.Manifests.Add("quad", "name: Quad");
|
|
|
|
|
|
|
|
|
|
var available = _manager.AvailablePackages();
|
|
|
|
|
|
|
|
|
|
Assert.That(available.Count(), Is.EqualTo(4));
|
|
|
|
|
Assert.That(available, Has.Some.Property("Name").EqualTo("foo"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void PackageDescriptorsShouldHaveNameAndDescription() {
|
|
|
|
|
|
|
|
|
|
_folders.Manifests.Add("Sample", @"
|
|
|
|
|
name: Sample Package
|
|
|
|
|
description: This is the description
|
|
|
|
|
version: 2.x
|
|
|
|
|
");
|
|
|
|
|
|
|
|
|
|
var descriptor = _manager.AvailablePackages().Single();
|
|
|
|
|
Assert.That(descriptor.Name, Is.EqualTo("Sample"));
|
|
|
|
|
Assert.That(descriptor.DisplayName, Is.EqualTo("Sample Package"));
|
|
|
|
|
Assert.That(descriptor.Description, Is.EqualTo("This is the description"));
|
|
|
|
|
Assert.That(descriptor.Version, Is.EqualTo("2.x"));
|
|
|
|
|
}
|
2009-11-10 07:39:09 +00:00
|
|
|
|
|
2009-11-10 06:15:21 +00:00
|
|
|
|
}
|
|
|
|
|
}
|