--HG--
branch : dev
This commit is contained in:
Louis DeJardin
2010-11-08 11:41:32 -08:00
108 changed files with 959 additions and 993 deletions
@@ -4,6 +4,7 @@ using System.Linq;
using System.Web;
using System.Xml.Linq;
using Autofac;
using Moq;
using NHibernate;
using NUnit.Framework;
using Orchard.Caching;
@@ -28,6 +29,7 @@ using Orchard.Environment.Descriptor;
using Orchard.Environment.Descriptor.Models;
using Orchard.Environment.Extensions;
using Orchard.Environment.Extensions.Models;
using Orchard.Environment.Features;
using Orchard.Localization;
using Orchard.Modules;
using Orchard.Modules.Services;
@@ -35,6 +37,7 @@ using Orchard.Security;
using Orchard.Security.Permissions;
using Orchard.Settings;
using Orchard.Tests.Stubs;
using Orchard.Tests.Utility;
using Orchard.Themes;
using Orchard.Themes.Handlers;
using Orchard.Themes.Models;
@@ -42,12 +45,15 @@ using Orchard.Themes.Services;
using Orchard.UI.Notify;
namespace Orchard.Tests.Modules.Themes.Services {
[TestFixture]
#if REFACTORING
[TestFixture, Ignore]
public class ThemeServiceTests {
private IThemeService _themeService;
private ISiteThemeService _siteThemeService;
private IContainer _container;
private ISessionFactory _sessionFactory;
private ISession _session;
private IFeatureManager _featureManager;
[TestFixtureSetUp]
public void InitFixture() {
@@ -67,12 +73,11 @@ namespace Orchard.Tests.Modules.Themes.Services {
public void Init() {
var context = new DynamicProxyContext();
var builder = new ContainerBuilder();
builder.RegisterModule(new SettingsModule());
builder.RegisterType<StubWorkContextAccessor>().As<IWorkContextAccessor>();
builder.RegisterType<ThemeService>().EnableDynamicProxy(context).As<IThemeService>();
builder.RegisterType<SettingsModuleInterceptor>().As<ISettingsModuleInterceptor>();
builder.RegisterType<SiteService>().As<ISiteService>();
builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>));
builder.RegisterType<Orchard.Localization.Text>().As<IText>();
builder.RegisterType<DefaultContentManager>().As<IContentManager>();
builder.RegisterType<StubCacheManager>().As<ICacheManager>();
builder.RegisterType<ContentDefinitionManager>().As<IContentDefinitionManager>();
@@ -83,7 +88,8 @@ namespace Orchard.Tests.Modules.Themes.Services {
builder.RegisterType<DefaultContentQuery>().As<IContentQuery>();
builder.RegisterType<SiteSettingsPartHandler>().As<IContentHandler>();
builder.RegisterType<ThemeSiteSettingsPartHandler>().As<IContentHandler>();
builder.RegisterType<ModuleService>().As<IModuleService>();
//builder.RegisterType<ModuleService>().As<IModuleService>();
builder.RegisterType<ShellDescriptor>();
builder.RegisterType<OrchardServices>().As<IOrchardServices>();
builder.RegisterType<StubShellDescriptorManager>().As<IShellDescriptorManager>().InstancePerLifetimeScope();
builder.RegisterType<TransactionManager>().As<ITransactionManager>();
@@ -95,68 +101,71 @@ namespace Orchard.Tests.Modules.Themes.Services {
.As(typeof(IMapper<SettingsDictionary, XElement>));
_session = _sessionFactory.OpenSession();
builder.RegisterInstance(new TestSessionLocator(_session)).As<ISessionLocator>();
builder.RegisterAutoMocking(MockBehavior.Loose);
_container = builder.Build();
_themeService = _container.Resolve<IThemeService>();
_siteThemeService = _container.Resolve<ISiteThemeService>();
_featureManager = _container.Resolve<IFeatureManager>();
}
//todo: test theme feature enablement
[Test]
public void ThemeWithNoBaseThemeCanBeSetAsSiteTheme() {
_themeService.SetSiteTheme("ThemeOne");
var siteTheme = _themeService.GetSiteTheme();
Assert.That(siteTheme.ThemeName, Is.EqualTo("ThemeOne"));
_siteThemeService.SetSiteTheme("ThemeOne");
var siteTheme = _siteThemeService.GetSiteTheme();
Assert.That(siteTheme.Name, Is.EqualTo("ThemeOne"));
}
[Test]
public void ThemeWithAvailableBaseThemeCanBeSetAsSiteTheme() {
_themeService.SetSiteTheme("ThemeTwo");
var siteTheme = _themeService.GetSiteTheme();
Assert.That(siteTheme.ThemeName, Is.EqualTo("ThemeTwo"));
_siteThemeService.SetSiteTheme("ThemeTwo");
var siteTheme = _siteThemeService.GetSiteTheme();
Assert.That(siteTheme.Name, Is.EqualTo("ThemeTwo"));
Assert.That(siteTheme.BaseTheme, Is.EqualTo("ThemeOne"));
}
[Test]
public void ThemeWithUnavailableBaseThemeCanBeSetAsSiteTheme() {
_themeService.SetSiteTheme("ThemeOne");
_themeService.SetSiteTheme("ThemeThree");
var siteTheme = _themeService.GetSiteTheme();
Assert.That(siteTheme.ThemeName, Is.EqualTo("ThemeOne"));
_siteThemeService.SetSiteTheme("ThemeOne");
_siteThemeService.SetSiteTheme("ThemeThree");
var siteTheme = _siteThemeService.GetSiteTheme();
Assert.That(siteTheme.Name, Is.EqualTo("ThemeOne"));
}
[Test]
public void ThemeWithCircularBaseDepTrowsExceptionOnActivation() {
_themeService.SetSiteTheme("ThemeOne");
_siteThemeService.SetSiteTheme("ThemeOne");
try {
_themeService.SetSiteTheme("ThemeFourBasedOnFive");
_siteThemeService.SetSiteTheme("ThemeFourBasedOnFive");
} catch (InvalidOperationException ex) {
Assert.That(ex.Message, Is.StringMatching("ThemeFiveBasedOnFour"));
}
var siteTheme = _themeService.GetSiteTheme();
Assert.That(siteTheme.ThemeName, Is.EqualTo("ThemeOne"));
var siteTheme = _siteThemeService.GetSiteTheme();
Assert.That(siteTheme.Name, Is.EqualTo("ThemeOne"));
}
[Test]
public void CanEnableAndDisableThemes() {
_themeService.EnableTheme("ThemeOne");
_featureManager.EnableFeature("ThemeOne");
Assert.IsTrue(_themeService.GetThemeByName("ThemeOne").Enabled);
Assert.IsTrue(_container.Resolve<IShellDescriptorManager>().GetShellDescriptor().Features.Any(sf => sf.Name == "ThemeOne"));
_themeService.DisableTheme("ThemeOne");
_featureManager.DisableFeature("ThemeOne");
Assert.IsFalse(_themeService.GetThemeByName("ThemeOne").Enabled);
Assert.IsFalse(_container.Resolve<IShellDescriptorManager>().GetShellDescriptor().Features.Any(sf => sf.Name == "ThemeOne"));
}
[Test]
public void ActivatingThemeEnablesIt() {
_themeService.SetSiteTheme("ThemeOne");
_siteThemeService.SetSiteTheme("ThemeOne");
Assert.IsTrue(_themeService.GetThemeByName("ThemeOne").Enabled);
Assert.IsTrue(_container.Resolve<IShellDescriptorManager>().GetShellDescriptor().Features.Any(sf => sf.Name == "ThemeOne"));
}
[Test]
public void ActivatingThemeDoesNotDisableOldTheme() {
_themeService.SetSiteTheme("ThemeOne");
_themeService.SetSiteTheme("ThemeTwo");
_siteThemeService.SetSiteTheme("ThemeOne");
_siteThemeService.SetSiteTheme("ThemeTwo");
Assert.IsTrue(_themeService.GetThemeByName("ThemeOne").Enabled);
Assert.IsTrue(_themeService.GetThemeByName("ThemeTwo").Enabled);
Assert.IsTrue(_container.Resolve<IShellDescriptorManager>().GetShellDescriptor().Features.Any(sf => sf.Name == "ThemeOne"));
@@ -269,4 +278,5 @@ namespace Orchard.Tests.Modules.Themes.Services {
#endregion
}
}
#endif
}
@@ -54,6 +54,7 @@ namespace Orchard.Tests.Modules.Users.Controllers {
builder.RegisterType<MembershipService>().As<IMembershipService>();
builder.RegisterType<UserService>().As<IUserService>();
builder.RegisterType<UserPartHandler>().As<IContentHandler>();
builder.RegisterType<StubWorkContextAccessor>().As<IWorkContextAccessor>();
builder.RegisterType<OrchardServices>().As<IOrchardServices>();
builder.RegisterType<TransactionManager>().As<ITransactionManager>();
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
@@ -17,11 +17,13 @@ using Orchard.ContentManagement.Records;
using Orchard.DisplayManagement;
using Orchard.DisplayManagement.Descriptors;
using Orchard.DisplayManagement.Implementation;
using Orchard.Environment;
using Orchard.Environment.Extensions;
using Orchard.Messaging.Events;
using Orchard.Messaging.Services;
using Orchard.Security;
using Orchard.Tests.Stubs;
using Orchard.Tests.Utility;
using Orchard.Users.Handlers;
using Orchard.Users.Models;
using Orchard.Users.Services;
@@ -76,6 +78,9 @@ namespace Orchard.Tests.Modules.Users.Services {
builder.RegisterType<ContentDefinitionManager>().As<IContentDefinitionManager>();
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterType<UserPartHandler>().As<IContentHandler>();
builder.RegisterType<StubWorkContextAccessor>().As<IWorkContextAccessor>();
builder.RegisterType<OrchardServices>().As<IOrchardServices>();
builder.RegisterAutoMocking(MockBehavior.Loose);
builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>));
builder.RegisterInstance(new Mock<IMessageEventHandler>().Object);
builder.RegisterType<DefaultMessageManager>().As<IMessageManager>();
@@ -16,6 +16,8 @@ using Orchard.DisplayManagement.Descriptors;
using Orchard.DisplayManagement.Implementation;
using Orchard.Environment;
using Orchard.Environment.Extensions;
using Orchard.Environment.Extensions.Models;
using Orchard.Environment.Features;
using Orchard.Security;
using Orchard.Tests.Stubs;
using Orchard.Themes;
@@ -25,7 +27,7 @@ using Orchard.Widgets.Models;
using Orchard.Widgets.Services;
namespace Orchard.Tests.Modules.Widgets.Services {
[TestFixture]
public class WidgetsServiceTest : DatabaseEnabledTestsBase {
@@ -76,28 +78,32 @@ namespace Orchard.Tests.Modules.Widgets.Services {
}
public override void Register(ContainerBuilder builder) {
var mockFeatureManager = new Mock<IFeatureManager>();
var theme1 = new FeatureDescriptor {Extension = new ExtensionDescriptor {Zones = ThemeZoneName1}};
var theme2 = new FeatureDescriptor {Extension = new ExtensionDescriptor {Zones = ThemeZoneName2}};
mockFeatureManager.Setup(x => x.GetEnabledFeatures())
.Returns(new[] { theme1, theme2 });
builder.RegisterType<DefaultContentManager>().As<IContentManager>();
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterInstance(new Mock<IContentDefinitionManager>().Object);
builder.RegisterInstance(new Mock<ITransactionManager>().Object);
builder.RegisterInstance(new Mock<IAuthorizer>().Object);
builder.RegisterInstance(new Mock<INotifier>().Object);
builder.RegisterInstance(mockFeatureManager.Object);
builder.RegisterType<OrchardServices>().As<IOrchardServices>();
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
builder.RegisterType<WidgetsService>().As<IWidgetsService>();
builder.RegisterType<StubExtensionManager>().As<IExtensionManager>();
Theme theme1 = new Theme { Zones = ThemeZoneName1 };
Theme theme2 = new Theme { Zones = ThemeZoneName2 };
Mock<IThemeService> themeServiceMock = new Mock<IThemeService>();
themeServiceMock.Setup(x => x.GetInstalledThemes()).Returns(
(new ITheme[] { theme1, theme2 }));
builder.RegisterInstance(themeServiceMock.Object).As<IThemeService>();
builder.RegisterType<StubWidgetPartHandler>().As<IContentHandler>();
builder.RegisterType<StubLayerPartHandler>().As<IContentHandler>();
builder.RegisterType<DefaultContentQuery>().As<IContentQuery>();
builder.RegisterType<DefaultContentDisplay>().As<IContentDisplay>();
}
[Test]
@@ -153,7 +159,7 @@ namespace Orchard.Tests.Modules.Widgets.Services {
WidgetPart widgetPart = _widgetService.CreateWidget(layerPart.Id, "HtmlWidget", WidgetTitle1, "1", "");
Assert.That(widgetPart, Is.Not.Null);
widgetResult = _widgetService.GetWidget(0);
Assert.That(widgetResult, Is.Null, "Still yields null on an invalid identifier");
@@ -225,7 +231,7 @@ namespace Orchard.Tests.Modules.Widgets.Services {
widgetPart1 = _widgetService.GetWidget(widgetPart1.Id);
Assert.That(widgetPart1.Position, Is.EqualTo(Position2), "First widget moved to second widget position");
widgetPart2 = _widgetService.GetWidget(widgetPart2.Id);
Assert.That(widgetPart2.Position, Is.EqualTo(Position1), "Second widget moved to first widget position");