Fixed up base web test, removes RequiresDbSetup in place of new database behavior - NoDatabasePerFixture.

Fixed issue with another test... no idea how it didn't show up failing before.
Fixes issue with string extensions and an infinite loop when the string to strip is empty/null.
This commit is contained in:
Shannon Deminick
2013-03-15 11:28:05 +06:00
parent bd81507ecb
commit 2b750843c5
19 changed files with 79 additions and 76 deletions

View File

@@ -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);

View File

@@ -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();
}
/// <summary>
@@ -30,6 +32,7 @@ namespace Umbraco.Tests.BusinessLogic
[SetUp]
public void Initialize()
{
ApplicationContext.Current = new ApplicationContext(){IsReady = true};
InitializeDatabase();
InitializeApps();
InitializeAppConfigFile();

View File

@@ -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()
{

View File

@@ -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()

View File

@@ -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)
{

View File

@@ -15,17 +15,12 @@ namespace Umbraco.Tests.PublishedContent
[TestFixture]
public class DynamicNodeTests : DynamicDocumentTestsBase<DynamicNode, DynamicNodeList>
{
protected override bool RequiresDbSetup
{
get { return true; }
}
/// <summary>
/// We only need a new schema per fixture... speeds up testing
/// </summary>
protected override DbInitBehavior DatabaseTestBehavior
protected override DatabaseBehavior DatabaseTestBehavior
{
get { return DbInitBehavior.NewSchemaPerFixture; }
get { return DatabaseBehavior.NewSchemaPerFixture; }
}
public override void Initialize()

View File

@@ -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)
{

View File

@@ -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)
{

View File

@@ -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)]

View File

@@ -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()

View File

@@ -12,10 +12,10 @@ namespace Umbraco.Tests.Routing
/// <summary>
/// We don't need a db for this test, will run faster without one
/// </summary>
protected override bool RequiresDbSetup
{
get { return false; }
}
protected override DatabaseBehavior DatabaseTestBehavior
{
get { return DatabaseBehavior.NoDatabasePerFixture; }
}
[TestCase("/1046", 1046)]
[TestCase("/1046.aspx", 1046)]

View File

@@ -13,10 +13,10 @@ namespace Umbraco.Tests.Routing
/// <summary>
/// We don't need a db for this test, will run faster without one
/// </summary>
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 '/' !

View File

@@ -13,10 +13,10 @@ namespace Umbraco.Tests.Routing
/// <summary>
/// We don't need a db for this test, will run faster without one
/// </summary>
protected override bool RequiresDbSetup
{
get { return false; }
}
protected override DatabaseBehavior DatabaseTestBehavior
{
get { return DatabaseBehavior.NoDatabasePerFixture; }
}
[TestCase("/?umbPageId=1046", 1046)]
[TestCase("/?UMBPAGEID=1046", 1046)]

View File

@@ -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();

View File

@@ -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()

View File

@@ -73,9 +73,9 @@ namespace Umbraco.Tests.TestHelpers
/// <summary>
/// The database behavior to use for the test/fixture
/// </summary>
protected virtual DbInitBehavior DatabaseTestBehavior
protected virtual DatabaseBehavior DatabaseTestBehavior
{
get { return DbInitBehavior.NewSchemaPerTest; }
get { return DatabaseBehavior.NewSchemaPerTest; }
}
/// <summary>
@@ -83,6 +83,9 @@ namespace Umbraco.Tests.TestHelpers
/// </summary>
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
/// </summary>
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);

View File

@@ -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();
}
/// <summary>
/// By default this unit test will create and initialize an umbraco database
/// </summary>
protected virtual bool RequiresDbSetup
{
get { return true; }
}
protected override string GetXmlContent(int templateId)
{
return @"<?xml version=""1.0"" encoding=""utf-8""?>

View File

@@ -3,8 +3,13 @@
/// <summary>
/// The behavior used to control how the database is handled for test fixtures inheriting from BaseDatabaseFactoryTest
/// </summary>
public enum DbInitBehavior
public enum DatabaseBehavior
{
/// <summary>
/// A database is not required whatsoever for the fixture
/// </summary>
NoDatabasePerFixture,
/// <summary>
/// For each test a new database file and schema will be created
/// </summary>

View File

@@ -302,7 +302,7 @@
<Compile Include="TestHelpers\BaseDatabaseFactoryTest.cs" />
<Compile Include="TestHelpers\BaseRoutingTest.cs" />
<Compile Include="TestHelpers\BaseUmbracoApplicationTest.cs" />
<Compile Include="TestHelpers\DbInitBehavior.cs" />
<Compile Include="TestHelpers\DatabaseBehavior.cs" />
<Compile Include="TestHelpers\SettingsForTests.cs" />
<Compile Include="GlobalSettingsTests.cs" />
<Compile Include="Routing\ContentFinderByAliasTests.cs" />