From 3f8e063d9ca7d66d862c1eab901201c3a3344259 Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Fri, 4 Sep 2015 15:53:11 -0700 Subject: [PATCH] Fixing OrchardHost unit tests --- src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs | 6 ++++++ .../Environment/ShellBuilders/CompositionStrategy.cs | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs b/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs index 24594d570..8cfc8fbc5 100644 --- a/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs +++ b/src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs @@ -95,6 +95,10 @@ namespace Orchard.Tests.Environment { var ext = new ExtensionDescriptor { Id = "Orchard.Framework" }; ext.Features = new[] { new FeatureDescriptor { Extension = ext, Id = ext.Id } }; yield return ext; + + var settings = new ExtensionDescriptor { Id = "Settings" }; + settings.Features = new[] { new FeatureDescriptor { Extension = settings, Id = settings.Id } }; + yield return settings; } public IEnumerable AvailableFeatures() { @@ -177,6 +181,7 @@ namespace Orchard.Tests.Environment { Assert.That(again2a, Is.SameAs(dep2a)); Assert.That(again2b, Is.SameAs(dep2b)); } + [Test] public void SingletonDependenciesShouldBeUniquePerShell() { var host = _lifetime.Resolve(); @@ -200,6 +205,7 @@ namespace Orchard.Tests.Environment { Assert.That(dep2, Is.SameAs(dep2a)); Assert.That(dep2, Is.SameAs(dep2b)); } + [Test] public void TransientDependenciesShouldBeUniquePerResolve() { var host = _lifetime.Resolve(); diff --git a/src/Orchard/Environment/ShellBuilders/CompositionStrategy.cs b/src/Orchard/Environment/ShellBuilders/CompositionStrategy.cs index 08988203d..b32ee0f1b 100644 --- a/src/Orchard/Environment/ShellBuilders/CompositionStrategy.cs +++ b/src/Orchard/Environment/ShellBuilders/CompositionStrategy.cs @@ -34,7 +34,11 @@ namespace Orchard.Environment.ShellBuilders { var builtinFeatures = BuiltinFeatures().ToList(); var builtinFeatureDescriptors = builtinFeatures.Select(x => x.Descriptor).ToList(); - var availableFeatures = _extensionManager.AvailableFeatures().Concat(builtinFeatureDescriptors).ToDictionary(x => x.Id, StringComparer.OrdinalIgnoreCase); + var availableFeatures = _extensionManager.AvailableFeatures() + .Concat(builtinFeatureDescriptors) + .GroupBy(x => x.Id.ToLowerInvariant()) // prevent duplicates + .Select(x => x.FirstOrDefault()) + .ToDictionary(x => x.Id, StringComparer.OrdinalIgnoreCase); var enabledFeatures = _extensionManager.EnabledFeatures(descriptor).Select(x => x.Id).ToList(); var expandedFeatures = ExpandDependencies(availableFeatures, descriptor.Features.Select(x => x.Name)).ToList(); var autoEnabledDependencyFeatures = expandedFeatures.Except(enabledFeatures).Except(builtinFeatureDescriptors.Select(x => x.Id)).ToList();