Updated recipes unit test to accommodate Orchard.Recipes changes.

This commit is contained in:
Sipke Schoorstra
2015-07-23 10:34:39 +01:00
parent aa143054fc
commit 9f9a0cc4e5
4 changed files with 256 additions and 215 deletions

View File

@@ -159,8 +159,9 @@
<Compile Include="Packaging\Services\FileBasedProjectSystemTests.cs" /> <Compile Include="Packaging\Services\FileBasedProjectSystemTests.cs" />
<Compile Include="Packaging\Services\FolderUpdaterTests.cs" /> <Compile Include="Packaging\Services\FolderUpdaterTests.cs" />
<Compile Include="Packaging\Services\PackageInstallerTests.cs" /> <Compile Include="Packaging\Services\PackageInstallerTests.cs" />
<Compile Include="Recipes\RecipeHandlers\RecipeExecutionStepHandlerTest.cs" />
<Compile Include="Recipes\RecipeHandlers\ModuleStepTest.cs" /> <Compile Include="Recipes\RecipeHandlers\ModuleStepTest.cs" />
<Compile Include="Recipes\RecipeHandlers\ThemeRecipeHandlerTest.cs" /> <Compile Include="Recipes\RecipeHandlers\ThemeStepTest.cs" />
<Compile Include="Recipes\Services\RecipeManagerTests.cs" /> <Compile Include="Recipes\Services\RecipeManagerTests.cs" />
<Compile Include="Scripting.Dlr\EvaluatorTests.cs" /> <Compile Include="Scripting.Dlr\EvaluatorTests.cs" />
<Compile Include="Scripting\EvaluatorTestsBase.cs" /> <Compile Include="Scripting\EvaluatorTestsBase.cs" />

View File

@@ -24,7 +24,6 @@ using Orchard.Packaging.Models;
using Orchard.Packaging.Services; using Orchard.Packaging.Services;
using Orchard.Recipes.Models; using Orchard.Recipes.Models;
using Orchard.Recipes.Providers.Executors; using Orchard.Recipes.Providers.Executors;
using Orchard.Recipes.Services;
using Orchard.Tests.Environment.Extensions; using Orchard.Tests.Environment.Extensions;
using Orchard.Tests.Environment.Features; using Orchard.Tests.Environment.Features;
using Orchard.Tests.Stubs; using Orchard.Tests.Stubs;
@@ -87,27 +86,26 @@ Features:
IsLatestVersion = true, IsLatestVersion = true,
}); });
IShellDescriptorManager shellDescriptorManager = _container.Resolve<IShellDescriptorManager>(); var shellDescriptorManager = _container.Resolve<IShellDescriptorManager>();
// No features enabled // No features enabled
shellDescriptorManager.UpdateShellDescriptor(0, shellDescriptorManager.UpdateShellDescriptor(
Enumerable.Empty<ShellFeature>(), 0,
Enumerable.Empty<ShellParameter>()); Enumerable.Empty<ShellFeature>(),
Enumerable.Empty<ShellParameter>());
var moduleStep = _container.Resolve<ModuleStep>(); var moduleStep = _container.Resolve<ModuleStep>();
var recipeContext = new RecipeContext { RecipeStep = new RecipeStep { Name = "Module", Step = new XElement("SuperWiki") } }; var recipeExecutionContext = new RecipeExecutionContext {RecipeStep = new RecipeStep { Name = "Module", Step = new XElement("SuperWiki") } };
var recipeExecutionContext = new RecipeExecutionContext {RecipeStep = recipeContext.RecipeStep}; recipeExecutionContext.RecipeStep.Step.Add(new XAttribute("packageId", "Orchard.Module.SuperWiki"));
recipeContext.RecipeStep.Step.Add(new XAttribute("packageId", "Orchard.Module.SuperWiki")); recipeExecutionContext.RecipeStep.Step.Add(new XAttribute("repository", "test"));
recipeContext.RecipeStep.Step.Add(new XAttribute("repository", "test"));
IFeatureManager featureManager = _container.Resolve<IFeatureManager>(); var featureManager = _container.Resolve<IFeatureManager>();
IEnumerable<FeatureDescriptor> enabledFeatures = featureManager.GetEnabledFeatures(); var enabledFeatures = featureManager.GetEnabledFeatures();
Assert.That(enabledFeatures.Count(), Is.EqualTo(0)); Assert.That(enabledFeatures.Count(), Is.EqualTo(0));
moduleStep.Execute(recipeExecutionContext); moduleStep.Execute(recipeExecutionContext);
var availableFeatures = featureManager.GetAvailableFeatures().Where(x => x.Id == "SuperWiki").FirstOrDefault(); var availableFeatures = featureManager.GetAvailableFeatures().FirstOrDefault(x => x.Id == "SuperWiki");
Assert.That(availableFeatures.Id, Is.EqualTo("SuperWiki")); Assert.That(availableFeatures.Id, Is.EqualTo("SuperWiki"));
Assert.That(recipeContext.Executed, Is.True);
} }
[Test] [Test]
@@ -147,19 +145,17 @@ Features:
}); });
var moduleStep = _container.Resolve<ModuleStep>(); var moduleStep = _container.Resolve<ModuleStep>();
var recipeContext = new RecipeContext { RecipeStep = new RecipeStep { Name = "Module", Step = new XElement("SuperWiki") } }; var recipeExecutionContext = new RecipeExecutionContext { RecipeStep = new RecipeStep { Name = "Module", Step = new XElement("SuperWiki") } };
var recipeExecutionContext = new RecipeExecutionContext { RecipeStep = recipeContext.RecipeStep };
recipeContext.RecipeStep.Step.Add(new XAttribute("packageId", "Orchard.Module.SuperWiki")); recipeExecutionContext.RecipeStep.Step.Add(new XAttribute("packageId", "Orchard.Module.SuperWiki"));
recipeContext.RecipeStep.Step.Add(new XAttribute("repository", "test")); recipeExecutionContext.RecipeStep.Step.Add(new XAttribute("repository", "test"));
recipeContext.RecipeStep.Step.Add(new XAttribute("version", "1.0.2")); recipeExecutionContext.RecipeStep.Step.Add(new XAttribute("version", "1.0.2"));
moduleStep.Execute(recipeExecutionContext); moduleStep.Execute(recipeExecutionContext);
var installedPackage = _packageManager.GetInstalledPackages().FirstOrDefault(info => info.ExtensionName == "Orchard.Module.SuperWiki"); var installedPackage = _packageManager.GetInstalledPackages().FirstOrDefault(info => info.ExtensionName == "Orchard.Module.SuperWiki");
Assert.That(installedPackage, Is.Not.Null); Assert.That(installedPackage, Is.Not.Null);
Assert.That(installedPackage.ExtensionVersion, Is.EqualTo("1.0.2")); Assert.That(installedPackage.ExtensionVersion, Is.EqualTo("1.0.2"));
Assert.That(recipeContext.Executed, Is.True);
} }
internal class StubPackagingSourceManager : IPackagingSourceManager { internal class StubPackagingSourceManager : IPackagingSourceManager {

View File

@@ -0,0 +1,50 @@
using System.Xml.Linq;
using Autofac;
using NUnit.Framework;
using Orchard.Recipes.Models;
using Orchard.Recipes.Providers.RecipeHandlers;
using Orchard.Recipes.Services;
namespace Orchard.Tests.Modules.Recipes.RecipeHandlers {
[TestFixture]
public class RecipeExecutionStepHandlerTest {
protected IContainer _container;
[SetUp]
public void Init() {
var builder = new ContainerBuilder();
builder.RegisterType<StubRecipeExecutionStep>().As<IRecipeExecutionStep>().AsSelf().SingleInstance();
builder.RegisterType<RecipeExecutionStepHandler>().SingleInstance();
_container = builder.Build();
}
[Test]
public void ExecuteRecipeExecutionStepHandlerTest() {
var handlerUnderTest = _container.Resolve<RecipeExecutionStepHandler>();
var fakeRecipeStep = _container.Resolve<StubRecipeExecutionStep>();
var context = new RecipeContext {
RecipeStep = new RecipeStep { Name = "FakeRecipeStep", Step = new XElement("FakeRecipeStep")},
ExecutionId = "12345"
};
handlerUnderTest.ExecuteRecipeStep(context);
Assert.That(fakeRecipeStep.IsExecuted, Is.True);
Assert.That(context.Executed, Is.True);
}
}
public class StubRecipeExecutionStep : RecipeExecutionStep {
public override string Name {
get { return "FakeRecipeStep"; }
}
public bool IsExecuted { get; set; }
public override void Execute(RecipeExecutionContext context) {
IsExecuted = true;
}
}
}

View File

@@ -1,195 +1,189 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Xml.Linq; using System.Xml.Linq;
using Autofac; using Autofac;
using NUnit.Framework; using NUnit.Framework;
using Orchard.Caching; using Orchard.Caching;
using Orchard.Core.Settings.Descriptor; using Orchard.Core.Settings.Descriptor;
using Orchard.Core.Settings.Descriptor.Records; using Orchard.Core.Settings.Descriptor.Records;
using Orchard.Core.Settings.State; using Orchard.Core.Settings.State;
using Orchard.Data.Migration; using Orchard.Data.Migration;
using Orchard.Environment.Configuration; using Orchard.Environment.Configuration;
using Orchard.Environment.Descriptor; using Orchard.Environment.Descriptor;
using Orchard.Environment.Descriptor.Models; using Orchard.Environment.Descriptor.Models;
using Orchard.Environment.Extensions; using Orchard.Environment.Extensions;
using Orchard.Environment.Extensions.Folders; using Orchard.Environment.Extensions.Folders;
using Orchard.Environment.Extensions.Models; using Orchard.Environment.Extensions.Models;
using Orchard.Environment.Features; using Orchard.Environment.Features;
using Orchard.Environment.State; using Orchard.Environment.State;
using Orchard.Events; using Orchard.Events;
using Orchard.FileSystems.VirtualPath; using Orchard.FileSystems.VirtualPath;
using Orchard.Packaging.GalleryServer; using Orchard.Packaging.GalleryServer;
using Orchard.Packaging.Services; using Orchard.Packaging.Services;
using Orchard.Recipes.Models; using Orchard.Recipes.Models;
using Orchard.Recipes.Services; using Orchard.Tests.DisplayManagement.Descriptors;
using Orchard.Tests.DisplayManagement.Descriptors; using Orchard.Tests.Environment.Extensions;
using Orchard.Tests.Environment.Extensions; using Orchard.Tests.Environment.Features;
using Orchard.Tests.Environment.Features; using Orchard.Tests.Stubs;
using Orchard.Tests.Stubs; using Orchard.Tests.UI.Navigation;
using Orchard.Tests.UI.Navigation; using Orchard.Themes.Recipes.Executors;
using Orchard.Themes.Recipes.Executors; using Orchard.Themes.Services;
using Orchard.Themes.Services;
namespace Orchard.Tests.Modules.Recipes.RecipeHandlers {
namespace Orchard.Tests.Modules.Recipes.RecipeHandlers { [TestFixture]
[TestFixture] public class ThemeStepTest : DatabaseEnabledTestsBase {
public class ThemeRecipeHandlerTest : DatabaseEnabledTestsBase { private ExtensionManagerTests.StubFolders _folders;
private ExtensionManagerTests.StubFolders _folders; private ModuleStepTest.StubPackagingSourceManager _packagesInRepository;
private ModuleStepTest.StubPackagingSourceManager _packagesInRepository; private ModuleStepTest.StubPackageManager _packageManager;
private ModuleStepTest.StubPackageManager _packageManager;
protected override IEnumerable<Type> DatabaseTypes {
protected override IEnumerable<Type> DatabaseTypes { get {
get { return new[] {
return new[] { typeof (ShellDescriptorRecord),
typeof (ShellDescriptorRecord), typeof (ShellFeatureRecord),
typeof (ShellFeatureRecord), typeof (ShellParameterRecord),
typeof (ShellParameterRecord), };
}; }
} }
}
public override void Register(ContainerBuilder builder) {
public override void Register(ContainerBuilder builder) { var testVirtualPathProvider = new StylesheetBindingStrategyTests.TestVirtualPathProvider();
var testVirtualPathProvider = new StylesheetBindingStrategyTests.TestVirtualPathProvider();
builder.RegisterInstance(new ShellSettings { Name = "Default" });
builder.RegisterInstance(new ShellSettings { Name = "Default" });
_folders = new ExtensionManagerTests.StubFolders();
_folders = new ExtensionManagerTests.StubFolders(); _packagesInRepository = new ModuleStepTest.StubPackagingSourceManager();
_packagesInRepository = new ModuleStepTest.StubPackagingSourceManager(); _packageManager = new ModuleStepTest.StubPackageManager();
_packageManager = new ModuleStepTest.StubPackageManager(); builder.RegisterInstance(_folders).As<IExtensionFolders>();
builder.RegisterInstance(_folders).As<IExtensionFolders>(); builder.RegisterType<ExtensionManager>().As<IExtensionManager>();
builder.RegisterType<ExtensionManager>().As<IExtensionManager>(); builder.RegisterType<FeatureManager>().As<IFeatureManager>();
builder.RegisterType<FeatureManager>().As<IFeatureManager>(); builder.RegisterType<StubCacheManager>().As<ICacheManager>();
builder.RegisterType<StubCacheManager>().As<ICacheManager>(); builder.RegisterType<StubParallelCacheContext>().As<IParallelCacheContext>();
builder.RegisterType<StubParallelCacheContext>().As<IParallelCacheContext>(); builder.RegisterType<StubAsyncTokenProvider>().As<IAsyncTokenProvider>();
builder.RegisterType<StubAsyncTokenProvider>().As<IAsyncTokenProvider>(); builder.RegisterType<ShellDescriptorManager>().As<IShellDescriptorManager>().SingleInstance();
builder.RegisterType<ShellDescriptorManager>().As<IShellDescriptorManager>().SingleInstance(); builder.RegisterType<ModuleStepTest.StubDataMigrationManager>().As<IDataMigrationManager>();
builder.RegisterType<ModuleStepTest.StubDataMigrationManager>().As<IDataMigrationManager>(); builder.RegisterInstance(_packagesInRepository).As<IPackagingSourceManager>();
builder.RegisterInstance(_packagesInRepository).As<IPackagingSourceManager>(); builder.RegisterInstance(_packageManager).As<IPackageManager>();
builder.RegisterInstance(_packageManager).As<IPackageManager>(); builder.RegisterType<ShellStateManager>().As<IShellStateManager>().SingleInstance();
builder.RegisterType<ShellStateManager>().As<IShellStateManager>().SingleInstance(); builder.RegisterInstance(testVirtualPathProvider).As<IVirtualPathProvider>();
builder.RegisterInstance(testVirtualPathProvider).As<IVirtualPathProvider>(); builder.RegisterType<StubEventBus>().As<IEventBus>().SingleInstance();
builder.RegisterType<StubEventBus>().As<IEventBus>().SingleInstance(); builder.RegisterType<ThemeService>().As<IThemeService>();
builder.RegisterType<ThemeService>().As<IThemeService>(); builder.RegisterType<StubOrchardServices>().As<IOrchardServices>();
builder.RegisterType<StubOrchardServices>().As<IOrchardServices>(); builder.RegisterType<StubSiteThemeService>().As<ISiteThemeService>();
builder.RegisterType<StubSiteThemeService>().As<ISiteThemeService>(); builder.RegisterType<ThemeStep>();
builder.RegisterType<ThemeStep>(); builder.RegisterSource(new EventsRegistrationSource());
builder.RegisterSource(new EventsRegistrationSource()); }
}
[Test]
[Test] public void ExecuteRecipeStepTest() {
public void ExecuteRecipeStepTest() { _folders.Manifests.Add("SuperWiki", @"
_folders.Manifests.Add("SuperWiki", @" Name: SuperWiki
Name: SuperWiki Version: 1.0.3
Version: 1.0.3 OrchardVersion: 1
OrchardVersion: 1 Features:
Features: SuperWiki:
SuperWiki: Description: My super wiki theme for Orchard.
Description: My super wiki theme for Orchard. ");
"); _packagesInRepository.AddPublishedPackage(new PublishedPackage {
_packagesInRepository.AddPublishedPackage(new PublishedPackage { Id = "Orchard.Theme.SuperWiki",
Id = "Orchard.Theme.SuperWiki", PackageType = DefaultExtensionTypes.Theme,
PackageType = DefaultExtensionTypes.Theme, Title = "SuperWiki",
Title = "SuperWiki", Version = "1.0.3",
Version = "1.0.3", IsLatestVersion = true,
IsLatestVersion = true, });
});
IShellDescriptorManager shellDescriptorManager = _container.Resolve<IShellDescriptorManager>();
IShellDescriptorManager shellDescriptorManager = _container.Resolve<IShellDescriptorManager>(); // No features enabled.
// No features enabled shellDescriptorManager.UpdateShellDescriptor(0,
shellDescriptorManager.UpdateShellDescriptor(0, Enumerable.Empty<ShellFeature>(),
Enumerable.Empty<ShellFeature>(), Enumerable.Empty<ShellParameter>());
Enumerable.Empty<ShellParameter>());
var themeStep = _container.Resolve<ThemeStep>();
var themeStep = _container.Resolve<ThemeStep>(); var recipeExecutionContext = new RecipeExecutionContext {RecipeStep = new RecipeStep { Name = "Theme", Step = new XElement("SuperWiki") } };
var recipeContext = new RecipeContext { RecipeStep = new RecipeStep { Name = "Theme", Step = new XElement("SuperWiki") } };
var recipeExecutionContext = new RecipeExecutionContext {RecipeStep = recipeContext.RecipeStep}; recipeExecutionContext.RecipeStep.Step.Add(new XAttribute("packageId", "Orchard.Theme.SuperWiki"));
recipeExecutionContext.RecipeStep.Step.Add(new XAttribute("repository", "test"));
recipeContext.RecipeStep.Step.Add(new XAttribute("packageId", "Orchard.Theme.SuperWiki"));
recipeContext.RecipeStep.Step.Add(new XAttribute("repository", "test")); var featureManager = _container.Resolve<IFeatureManager>();
var enabledFeatures = featureManager.GetEnabledFeatures();
var featureManager = _container.Resolve<IFeatureManager>(); Assert.That(enabledFeatures.Count(), Is.EqualTo(0));
var enabledFeatures = featureManager.GetEnabledFeatures(); themeStep.Execute(recipeExecutionContext);
Assert.That(enabledFeatures.Count(), Is.EqualTo(0));
themeStep.Execute(recipeExecutionContext); // Without setting enable no feature should be activated...
featureManager.GetEnabledFeatures();
// without setting enable no feature should be activated... Assert.That(enabledFeatures.Count(), Is.EqualTo(0));
featureManager.GetEnabledFeatures();
Assert.That(enabledFeatures.Count(), Is.EqualTo(0)); // Adding enable the feature should get active.
recipeExecutionContext.RecipeStep.Step.Add(new XAttribute("enable", true));
// Adding enable the feature should get active themeStep.Execute(recipeExecutionContext);
recipeContext.RecipeStep.Step.Add(new XAttribute("enable", true));
themeStep.Execute(recipeExecutionContext); enabledFeatures = featureManager.GetEnabledFeatures();
Assert.That(enabledFeatures.FirstOrDefault(feature => feature.Id.Equals("SuperWiki")), Is.Not.Null);
enabledFeatures = featureManager.GetEnabledFeatures(); Assert.That(enabledFeatures.Count(), Is.EqualTo(1));
Assert.That(enabledFeatures.FirstOrDefault(feature => feature.Id.Equals("SuperWiki")), Is.Not.Null); }
Assert.That(enabledFeatures.Count(), Is.EqualTo(1));
Assert.That(recipeContext.Executed, Is.True); [Test]
} public void ExecuteRecipeStepNeedsNameTest() {
_folders.Manifests.Add("SuperWiki", @"
[Test] Name: SuperWiki
public void ExecuteRecipeStepNeedsNameTest() { Version: 1.0.3
_folders.Manifests.Add("SuperWiki", @" OrchardVersion: 1
Name: SuperWiki Features:
Version: 1.0.3 SuperWiki:
OrchardVersion: 1 Description: My super wiki module for Orchard.
Features: ");
SuperWiki:
Description: My super wiki module for Orchard. var themeStep = _container.Resolve<ThemeStep>();
"); var recipeExecutionContext = new RecipeExecutionContext { RecipeStep = new RecipeStep { Name = "Theme", Step = new XElement("SuperWiki") } };
var themeStep = _container.Resolve<ThemeStep>(); recipeExecutionContext.RecipeStep.Step.Add(new XAttribute("repository", "test"));
var recipeContext = new RecipeContext { RecipeStep = new RecipeStep { Name = "Theme", Step = new XElement("SuperWiki") } }; Assert.Throws(typeof (InvalidOperationException), () => themeStep.Execute(recipeExecutionContext));
var recipeExecutionContext = new RecipeExecutionContext { RecipeStep = recipeContext.RecipeStep }; }
recipeContext.RecipeStep.Step.Add(new XAttribute("repository", "test")); [Test]
Assert.Throws(typeof (InvalidOperationException), () => themeStep.Execute(recipeExecutionContext)); public void ExecuteRecipeStepWithRepositoryAndVersionNotLatestTest() {
} _packagesInRepository.AddPublishedPackage(new PublishedPackage {
Id = "Orchard.Theme.SuperWiki",
[Test] PackageType = DefaultExtensionTypes.Theme,
public void ExecuteRecipeStepWithRepositoryAndVersionNotLatestTest() { Title = "SuperWiki",
_packagesInRepository.AddPublishedPackage(new PublishedPackage { Version = "1.0.3",
Id = "Orchard.Theme.SuperWiki", IsLatestVersion = true,
PackageType = DefaultExtensionTypes.Theme, });
Title = "SuperWiki", _packagesInRepository.AddPublishedPackage(new PublishedPackage {
Version = "1.0.3", Id = "Orchard.Theme.SuperWiki",
IsLatestVersion = true, PackageType = DefaultExtensionTypes.Theme,
}); Title = "SuperWiki",
_packagesInRepository.AddPublishedPackage(new PublishedPackage { Version = "1.0.2",
Id = "Orchard.Theme.SuperWiki", IsLatestVersion = false,
PackageType = DefaultExtensionTypes.Theme, });
Title = "SuperWiki",
Version = "1.0.2", var themeStep = _container.Resolve<ThemeStep>();
IsLatestVersion = false, var recipeExecutionContext = new RecipeExecutionContext { RecipeStep = new RecipeStep { Name = "Theme", Step = new XElement("SuperWiki") } };
});
recipeExecutionContext.RecipeStep.Step.Add(new XAttribute("packageId", "Orchard.Theme.SuperWiki"));
var themeStep = _container.Resolve<ThemeStep>(); recipeExecutionContext.RecipeStep.Step.Add(new XAttribute("repository", "test"));
var recipeContext = new RecipeContext { RecipeStep = new RecipeStep { Name = "Theme", Step = new XElement("SuperWiki") } }; recipeExecutionContext.RecipeStep.Step.Add(new XAttribute("version", "1.0.2"));
var recipeExecutionContext = new RecipeExecutionContext { RecipeStep = recipeContext.RecipeStep };
themeStep.Execute(recipeExecutionContext);
recipeContext.RecipeStep.Step.Add(new XAttribute("packageId", "Orchard.Theme.SuperWiki"));
recipeContext.RecipeStep.Step.Add(new XAttribute("repository", "test")); var installedPackage = _packageManager.GetInstalledPackages().FirstOrDefault(info => info.ExtensionName == "Orchard.Theme.SuperWiki");
recipeContext.RecipeStep.Step.Add(new XAttribute("version", "1.0.2")); Assert.That(installedPackage, Is.Not.Null);
Assert.That(installedPackage.ExtensionVersion, Is.EqualTo("1.0.2"));
themeStep.Execute(recipeExecutionContext); }
var installedPackage = _packageManager.GetInstalledPackages().FirstOrDefault(info => info.ExtensionName == "Orchard.Theme.SuperWiki"); internal class StubSiteThemeService : ISiteThemeService {
Assert.That(installedPackage, Is.Not.Null); public ExtensionDescriptor GetSiteTheme() {
Assert.That(installedPackage.ExtensionVersion, Is.EqualTo("1.0.2")); throw new NotImplementedException();
Assert.That(recipeContext.Executed, Is.True); }
}
public void SetSiteTheme(string themeName) {
internal class StubSiteThemeService : ISiteThemeService { throw new NotImplementedException();
public ExtensionDescriptor GetSiteTheme() { }
throw new NotImplementedException();
} public string GetCurrentThemeName() {
throw new NotImplementedException();
public void SetSiteTheme(string themeName) { }
throw new NotImplementedException(); }
} }
}
public string GetCurrentThemeName() {
throw new NotImplementedException();
}
}
}
}