diff --git a/src/Umbraco.Core/StringExtensions.cs b/src/Umbraco.Core/StringExtensions.cs
index d93ec84ff0..9a56fe87b0 100644
--- a/src/Umbraco.Core/StringExtensions.cs
+++ b/src/Umbraco.Core/StringExtensions.cs
@@ -188,6 +188,8 @@ namespace Umbraco.Core
public static string TrimEnd(this string value, string forRemoving)
{
if (string.IsNullOrEmpty(value)) return value;
+ if (string.IsNullOrEmpty(forRemoving)) return value;
+
while (value.EndsWith(forRemoving, StringComparison.InvariantCultureIgnoreCase))
{
value = value.Remove(value.LastIndexOf(forRemoving, StringComparison.InvariantCultureIgnoreCase));
@@ -198,6 +200,8 @@ namespace Umbraco.Core
public static string TrimStart(this string value, string forRemoving)
{
if (string.IsNullOrEmpty(value)) return value;
+ if (string.IsNullOrEmpty(forRemoving)) return value;
+
while (value.StartsWith(forRemoving, StringComparison.InvariantCultureIgnoreCase))
{
value = value.Substring(forRemoving.Length);
diff --git a/src/Umbraco.Tests/BusinessLogic/BaseTest.cs b/src/Umbraco.Tests/BusinessLogic/BaseTest.cs
index 06c62a9de2..ad727d1df7 100644
--- a/src/Umbraco.Tests/BusinessLogic/BaseTest.cs
+++ b/src/Umbraco.Tests/BusinessLogic/BaseTest.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Configuration;
using NUnit.Framework;
using SqlCE4Umbraco;
+using Umbraco.Core;
using Umbraco.Tests.TestHelpers;
using umbraco.BusinessLogic;
using umbraco.DataLayer;
@@ -22,6 +23,7 @@ namespace Umbraco.Tests.BusinessLogic
{
ClearDatabase();
ConfigurationManager.AppSettings.Set(Core.Configuration.GlobalSettings.UmbracoConnectionName, "");
+ ApplicationContext.Current.DisposeIfDisposable();
}
///
@@ -30,6 +32,7 @@ namespace Umbraco.Tests.BusinessLogic
[SetUp]
public void Initialize()
{
+ ApplicationContext.Current = new ApplicationContext(){IsReady = true};
InitializeDatabase();
InitializeApps();
InitializeAppConfigFile();
diff --git a/src/Umbraco.Tests/GlobalSettingsTests.cs b/src/Umbraco.Tests/GlobalSettingsTests.cs
index 6ea6b93e38..0c86a20a77 100644
--- a/src/Umbraco.Tests/GlobalSettingsTests.cs
+++ b/src/Umbraco.Tests/GlobalSettingsTests.cs
@@ -11,10 +11,10 @@ namespace Umbraco.Tests
[TestFixture]
public class GlobalSettingsTests : BaseWebTest
{
- protected override bool RequiresDbSetup
- {
- get { return false; }
- }
+ protected override DatabaseBehavior DatabaseTestBehavior
+ {
+ get { return DatabaseBehavior.NoDatabasePerFixture; }
+ }
public override void Initialize()
{
diff --git a/src/Umbraco.Tests/LibraryTests.cs b/src/Umbraco.Tests/LibraryTests.cs
index 38ea6da5f1..7174094e5a 100644
--- a/src/Umbraco.Tests/LibraryTests.cs
+++ b/src/Umbraco.Tests/LibraryTests.cs
@@ -51,10 +51,10 @@ namespace Umbraco.Tests
UmbracoContext.Current = null;
}
- protected override bool RequiresDbSetup
- {
- get { return false; }
- }
+ protected override DatabaseBehavior DatabaseTestBehavior
+ {
+ get { return DatabaseBehavior.NoDatabasePerFixture; }
+ }
[Test]
public void Get_Item_User_Property()
diff --git a/src/Umbraco.Tests/PublishedContent/DynamicDocumentTestsBase.cs b/src/Umbraco.Tests/PublishedContent/DynamicDocumentTestsBase.cs
index 867e574abd..897c01cf70 100644
--- a/src/Umbraco.Tests/PublishedContent/DynamicDocumentTestsBase.cs
+++ b/src/Umbraco.Tests/PublishedContent/DynamicDocumentTestsBase.cs
@@ -24,10 +24,10 @@ namespace Umbraco.Tests.PublishedContent
}
- protected override bool RequiresDbSetup
- {
- get { return false; }
- }
+ protected override DatabaseBehavior DatabaseTestBehavior
+ {
+ get { return DatabaseBehavior.NoDatabasePerFixture; }
+ }
protected override string GetXmlContent(int templateId)
{
diff --git a/src/Umbraco.Tests/PublishedContent/DynamicNodeTests.cs b/src/Umbraco.Tests/PublishedContent/DynamicNodeTests.cs
index 2d7e6aa69d..2540c4bf53 100644
--- a/src/Umbraco.Tests/PublishedContent/DynamicNodeTests.cs
+++ b/src/Umbraco.Tests/PublishedContent/DynamicNodeTests.cs
@@ -15,17 +15,12 @@ namespace Umbraco.Tests.PublishedContent
[TestFixture]
public class DynamicNodeTests : DynamicDocumentTestsBase
{
- protected override bool RequiresDbSetup
- {
- get { return true; }
- }
-
///
/// We only need a new schema per fixture... speeds up testing
///
- protected override DbInitBehavior DatabaseTestBehavior
+ protected override DatabaseBehavior DatabaseTestBehavior
{
- get { return DbInitBehavior.NewSchemaPerFixture; }
+ get { return DatabaseBehavior.NewSchemaPerFixture; }
}
public override void Initialize()
diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs
index 50b8f7d39b..cfce19ecd1 100644
--- a/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs
+++ b/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs
@@ -17,10 +17,10 @@ namespace Umbraco.Tests.PublishedContent
[TestFixture]
public class PublishedContentTests : PublishedContentTestBase
{
- protected override bool RequiresDbSetup
- {
- get { return false; }
- }
+ protected override DatabaseBehavior DatabaseTestBehavior
+ {
+ get { return DatabaseBehavior.NoDatabasePerFixture; }
+ }
protected override string GetXmlContent(int templateId)
{
diff --git a/src/Umbraco.Tests/PublishedContent/StronglyTypedQueryTests.cs b/src/Umbraco.Tests/PublishedContent/StronglyTypedQueryTests.cs
index 40371a653a..a5ae0874fc 100644
--- a/src/Umbraco.Tests/PublishedContent/StronglyTypedQueryTests.cs
+++ b/src/Umbraco.Tests/PublishedContent/StronglyTypedQueryTests.cs
@@ -24,10 +24,10 @@ namespace Umbraco.Tests.PublishedContent
base.TearDown();
}
- protected override bool RequiresDbSetup
- {
- get { return false; }
- }
+ protected override DatabaseBehavior DatabaseTestBehavior
+ {
+ get { return DatabaseBehavior.NoDatabasePerFixture; }
+ }
protected override string GetXmlContent(int templateId)
{
diff --git a/src/Umbraco.Tests/Routing/ContentFinderByAliasTests.cs b/src/Umbraco.Tests/Routing/ContentFinderByAliasTests.cs
index bd3c838e8e..70ca81fcc4 100644
--- a/src/Umbraco.Tests/Routing/ContentFinderByAliasTests.cs
+++ b/src/Umbraco.Tests/Routing/ContentFinderByAliasTests.cs
@@ -8,9 +8,9 @@ namespace Umbraco.Tests.Routing
[TestFixture]
public class ContentFinderByAliasTests : BaseRoutingTest
{
- protected override bool RequiresDbSetup
+ protected override DatabaseBehavior DatabaseTestBehavior
{
- get { return false; }
+ get { return DatabaseBehavior.NoDatabasePerFixture; }
}
[TestCase("/this/is/my/alias", 1001)]
diff --git a/src/Umbraco.Tests/Routing/ContentFinderByAliasWithDomainsTests.cs b/src/Umbraco.Tests/Routing/ContentFinderByAliasWithDomainsTests.cs
index 4bc57de463..95215333b8 100644
--- a/src/Umbraco.Tests/Routing/ContentFinderByAliasWithDomainsTests.cs
+++ b/src/Umbraco.Tests/Routing/ContentFinderByAliasWithDomainsTests.cs
@@ -20,9 +20,9 @@ namespace Umbraco.Tests.Routing
InitializeLanguagesAndDomains();
}
- protected override bool RequiresDbSetup
+ protected override DatabaseBehavior DatabaseTestBehavior
{
- get { return true; }
+ get { return DatabaseBehavior.NewSchemaPerFixture; }
}
void InitializeLanguagesAndDomains()
diff --git a/src/Umbraco.Tests/Routing/ContentFinderByIdTests.cs b/src/Umbraco.Tests/Routing/ContentFinderByIdTests.cs
index 5a4b51082e..14bf23d0a2 100644
--- a/src/Umbraco.Tests/Routing/ContentFinderByIdTests.cs
+++ b/src/Umbraco.Tests/Routing/ContentFinderByIdTests.cs
@@ -12,10 +12,10 @@ namespace Umbraco.Tests.Routing
///
/// We don't need a db for this test, will run faster without one
///
- protected override bool RequiresDbSetup
- {
- get { return false; }
- }
+ protected override DatabaseBehavior DatabaseTestBehavior
+ {
+ get { return DatabaseBehavior.NoDatabasePerFixture; }
+ }
[TestCase("/1046", 1046)]
[TestCase("/1046.aspx", 1046)]
diff --git a/src/Umbraco.Tests/Routing/ContentFinderByNiceUrlTests.cs b/src/Umbraco.Tests/Routing/ContentFinderByNiceUrlTests.cs
index c8c64aeaf2..bee591e6a1 100644
--- a/src/Umbraco.Tests/Routing/ContentFinderByNiceUrlTests.cs
+++ b/src/Umbraco.Tests/Routing/ContentFinderByNiceUrlTests.cs
@@ -13,10 +13,10 @@ namespace Umbraco.Tests.Routing
///
/// We don't need a db for this test, will run faster without one
///
- protected override bool RequiresDbSetup
- {
- get { return false; }
- }
+ protected override DatabaseBehavior DatabaseTestBehavior
+ {
+ get { return DatabaseBehavior.NoDatabasePerFixture; }
+ }
[TestCase("/", 1046)]
[TestCase("/default.aspx", 1046)] //this one is actually rather important since this is the path that comes through when we are running in pre-IIS 7 for the root document '/' !
diff --git a/src/Umbraco.Tests/Routing/ContentFinderByPageIdQueryTests.cs b/src/Umbraco.Tests/Routing/ContentFinderByPageIdQueryTests.cs
index b82e25e020..6852f72fe0 100644
--- a/src/Umbraco.Tests/Routing/ContentFinderByPageIdQueryTests.cs
+++ b/src/Umbraco.Tests/Routing/ContentFinderByPageIdQueryTests.cs
@@ -13,10 +13,10 @@ namespace Umbraco.Tests.Routing
///
/// We don't need a db for this test, will run faster without one
///
- protected override bool RequiresDbSetup
- {
- get { return false; }
- }
+ protected override DatabaseBehavior DatabaseTestBehavior
+ {
+ get { return DatabaseBehavior.NoDatabasePerFixture; }
+ }
[TestCase("/?umbPageId=1046", 1046)]
[TestCase("/?UMBPAGEID=1046", 1046)]
diff --git a/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs b/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs
index cbb8b161e9..8bc4f58786 100644
--- a/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs
+++ b/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs
@@ -18,6 +18,11 @@ namespace Umbraco.Tests.Routing
[TestFixture]
public class RenderRouteHandlerTests : BaseRoutingTest
{
+ protected override DatabaseBehavior DatabaseTestBehavior
+ {
+ get { return DatabaseBehavior.NewSchemaPerFixture; }
+ }
+
public override void Initialize()
{
base.Initialize();
diff --git a/src/Umbraco.Tests/Surface/PluginControllerAreaTests.cs b/src/Umbraco.Tests/Surface/PluginControllerAreaTests.cs
index ce0895e98f..c20723ffd4 100644
--- a/src/Umbraco.Tests/Surface/PluginControllerAreaTests.cs
+++ b/src/Umbraco.Tests/Surface/PluginControllerAreaTests.cs
@@ -12,10 +12,10 @@ namespace Umbraco.Tests.Surface
[TestFixture]
public class PluginControllerAreaTests : BaseWebTest
{
- protected override bool RequiresDbSetup
- {
- get { return false; }
- }
+ protected override DatabaseBehavior DatabaseTestBehavior
+ {
+ get { return DatabaseBehavior.NoDatabasePerFixture; }
+ }
[Test]
public void Ensure_Same_Area1()
diff --git a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs
index cbbfc23bb3..a9209cf9c9 100644
--- a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs
+++ b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs
@@ -73,9 +73,9 @@ namespace Umbraco.Tests.TestHelpers
///
/// The database behavior to use for the test/fixture
///
- protected virtual DbInitBehavior DatabaseTestBehavior
+ protected virtual DatabaseBehavior DatabaseTestBehavior
{
- get { return DbInitBehavior.NewSchemaPerTest; }
+ get { return DatabaseBehavior.NewSchemaPerTest; }
}
///
@@ -83,6 +83,9 @@ namespace Umbraco.Tests.TestHelpers
///
protected virtual void CreateDatabase()
{
+ if (DatabaseTestBehavior == DatabaseBehavior.NoDatabasePerFixture)
+ return;
+
var path = TestHelper.CurrentAssemblyDirectory;
//Get the connectionstring settings from config
@@ -99,8 +102,8 @@ namespace Umbraco.Tests.TestHelpers
//if this is the first test in the session, always ensure a new db file is created
if (_isFirstRunInTestSession || !File.Exists(dbFilePath)
- || DatabaseTestBehavior == DbInitBehavior.NewDbFileAndSchemaPerTest
- || (_isFirstTestInFixture && DatabaseTestBehavior == DbInitBehavior.NewDbFileAndSchemaPerFixture))
+ || DatabaseTestBehavior == DatabaseBehavior.NewDbFileAndSchemaPerTest
+ || (_isFirstTestInFixture && DatabaseTestBehavior == DatabaseBehavior.NewDbFileAndSchemaPerFixture))
{
RemoveDatabaseFile(ex =>
@@ -120,8 +123,8 @@ namespace Umbraco.Tests.TestHelpers
// - NewSchemaPerTest
// - _isFirstTestInFixture + DbInitBehavior.NewSchemaPerFixture
- else if (DatabaseTestBehavior == DbInitBehavior.NewSchemaPerTest
- || (_isFirstTestInFixture && DatabaseTestBehavior == DbInitBehavior.NewSchemaPerFixture))
+ else if (DatabaseTestBehavior == DatabaseBehavior.NewSchemaPerTest
+ || (_isFirstTestInFixture && DatabaseTestBehavior == DatabaseBehavior.NewSchemaPerFixture))
{
DatabaseContext.Database.UninstallDatabaseSchema();
}
@@ -152,6 +155,9 @@ namespace Umbraco.Tests.TestHelpers
///
protected virtual void InitializeDatabase()
{
+ if (DatabaseTestBehavior == DatabaseBehavior.NoDatabasePerFixture)
+ return;
+
//create the schema and load default data if:
// - is the first test in the session
// - NewSchemaPerTest
@@ -160,8 +166,8 @@ namespace Umbraco.Tests.TestHelpers
// - _isFirstTestInFixture + DbInitBehavior.NewDbFileAndSchemaPerFixture
if (_isFirstRunInTestSession
- || DatabaseTestBehavior == DbInitBehavior.NewSchemaPerTest
- || (_isFirstTestInFixture && DatabaseTestBehavior == DbInitBehavior.NewSchemaPerFixture))
+ || DatabaseTestBehavior == DatabaseBehavior.NewSchemaPerTest
+ || (_isFirstTestInFixture && DatabaseTestBehavior == DatabaseBehavior.NewSchemaPerFixture))
{
//Create the umbraco database and its base data
DatabaseContext.Database.CreateDatabaseSchema(false);
@@ -171,7 +177,7 @@ namespace Umbraco.Tests.TestHelpers
[TestFixtureTearDown]
public void FixtureTearDown()
{
- if (DatabaseTestBehavior == DbInitBehavior.NewDbFileAndSchemaPerFixture)
+ if (DatabaseTestBehavior == DatabaseBehavior.NewDbFileAndSchemaPerFixture)
{
RemoveDatabaseFile();
}
@@ -182,15 +188,14 @@ namespace Umbraco.Tests.TestHelpers
{
_isFirstTestInFixture = false; //ensure this is false before anything!
- if (DatabaseTestBehavior == DbInitBehavior.NewDbFileAndSchemaPerTest)
+ if (DatabaseTestBehavior == DatabaseBehavior.NewDbFileAndSchemaPerTest)
{
RemoveDatabaseFile();
}
- else if (DatabaseTestBehavior == DbInitBehavior.NewSchemaPerTest)
+ else if (DatabaseTestBehavior == DatabaseBehavior.NewSchemaPerTest)
{
DatabaseContext.Database.UninstallDatabaseSchema();
- //TestHelper.ClearDatabase();
- }
+ }
AppDomain.CurrentDomain.SetData("DataDirectory", null);
diff --git a/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs b/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs
index ae5eb1cc1f..101c5c7ccc 100644
--- a/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs
+++ b/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs
@@ -30,26 +30,12 @@ namespace Umbraco.Tests.TestHelpers
base.Initialize();
}
- protected override void InitializeDatabase()
- {
- if (RequiresDbSetup)
- base.InitializeDatabase();
- }
-
[TearDown]
public override void TearDown()
{
base.TearDown();
}
- ///
- /// By default this unit test will create and initialize an umbraco database
- ///
- protected virtual bool RequiresDbSetup
- {
- get { return true; }
- }
-
protected override string GetXmlContent(int templateId)
{
return @"
diff --git a/src/Umbraco.Tests/TestHelpers/DbInitBehavior.cs b/src/Umbraco.Tests/TestHelpers/DatabaseBehavior.cs
similarity index 81%
rename from src/Umbraco.Tests/TestHelpers/DbInitBehavior.cs
rename to src/Umbraco.Tests/TestHelpers/DatabaseBehavior.cs
index ec9f2419f2..40c5190047 100644
--- a/src/Umbraco.Tests/TestHelpers/DbInitBehavior.cs
+++ b/src/Umbraco.Tests/TestHelpers/DatabaseBehavior.cs
@@ -3,8 +3,13 @@
///
/// The behavior used to control how the database is handled for test fixtures inheriting from BaseDatabaseFactoryTest
///
- public enum DbInitBehavior
+ public enum DatabaseBehavior
{
+ ///
+ /// A database is not required whatsoever for the fixture
+ ///
+ NoDatabasePerFixture,
+
///
/// For each test a new database file and schema will be created
///
diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj
index 2373fc3f4d..eab3db317e 100644
--- a/src/Umbraco.Tests/Umbraco.Tests.csproj
+++ b/src/Umbraco.Tests/Umbraco.Tests.csproj
@@ -302,7 +302,7 @@
-
+