50 lines
1.9 KiB
C#
50 lines
1.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using Umbraco.Core.Persistence;
|
|
|
|
namespace Umbraco.Tests.Integration.Testing
|
|
{
|
|
public static class TestLocalDb
|
|
{
|
|
private const string LocalDbInstanceName = "UmbTests";
|
|
|
|
private static LocalDb LocalDb { get; } = new LocalDb();
|
|
|
|
// TODO: We need to borrow logic from this old branch, this is the latest commit at the old branch where we had LocalDb
|
|
// working for tests. There's a lot of hoops to jump through to make it work 'fast'. Turns out it didn't actually run as
|
|
// fast as SqlCe due to the dropping/creating of DB instances since that is faster in SqlCe but this code was all heavily
|
|
// optimized to go as fast as possible.
|
|
// see https://github.com/umbraco/Umbraco-CMS/blob/3a8716ac7b1c48b51258724337086cd0712625a1/src/Umbraco.Tests/TestHelpers/LocalDbTestDatabase.cs
|
|
internal static LocalDb.Instance EnsureLocalDbInstanceAndDatabase(string dbName, string dbFilePath)
|
|
{
|
|
if (!LocalDb.InstanceExists(LocalDbInstanceName) && !LocalDb.CreateInstance(LocalDbInstanceName))
|
|
{
|
|
throw new InvalidOperationException(
|
|
$"Failed to create LocalDb instance {LocalDbInstanceName}, assuming LocalDb is not really available.");
|
|
}
|
|
|
|
var instance = LocalDb.GetInstance(LocalDbInstanceName);
|
|
|
|
if (instance == null)
|
|
{
|
|
throw new InvalidOperationException(
|
|
$"Failed to get LocalDb instance {LocalDbInstanceName}, assuming LocalDb is not really available.");
|
|
}
|
|
|
|
instance.CreateDatabase(dbName, dbFilePath);
|
|
|
|
return instance;
|
|
}
|
|
|
|
public static void Cleanup()
|
|
{
|
|
var instance = LocalDb.GetInstance(LocalDbInstanceName);
|
|
if (instance != null)
|
|
{
|
|
instance.DropDatabases();
|
|
}
|
|
}
|
|
}
|
|
}
|