Radarr/src/NzbDrone.Core.Test/Framework/MigrationTest.cs

55 lines
1.7 KiB
C#
Raw Normal View History

2014-12-02 20:08:37 +00:00
using System;
using System.Data;
2014-12-02 20:08:37 +00:00
using FluentMigrator;
2019-10-14 20:21:00 +00:00
using Microsoft.Extensions.Logging;
using NLog.Extensions.Logging;
2014-12-02 20:08:37 +00:00
using NUnit.Framework;
using NzbDrone.Core.Datastore.Migration.Framework;
2014-12-02 20:08:37 +00:00
namespace NzbDrone.Core.Test.Framework
{
[Category("DbMigrationTest")]
[Category("DbTest")]
2019-12-22 22:08:53 +00:00
public abstract class MigrationTest<TMigration> : DbTest
where TMigration : NzbDroneMigrationBase
2014-12-02 20:08:37 +00:00
{
protected long MigrationVersion => ((MigrationAttribute)Attribute.GetCustomAttribute(typeof(TMigration), typeof(MigrationAttribute))).Version;
[SetUp]
public override void SetupDb()
2014-12-02 20:08:37 +00:00
{
SetupContainer();
}
protected virtual IDirectDataMapper WithMigrationTestDb(Action<TMigration> beforeMigration = null)
{
return WithMigrationAction(beforeMigration).GetDirectDataMapper();
}
protected virtual IDbConnection WithDapperMigrationTestDb(Action<TMigration> beforeMigration = null)
{
return WithMigrationAction(beforeMigration).OpenConnection();
}
protected override void SetupLogging()
{
Mocker.SetConstant<ILoggerProvider>(Mocker.Resolve<NLogLoggerProvider>());
}
private ITestDatabase WithMigrationAction(Action<TMigration> beforeMigration = null)
{
return WithTestDb(new MigrationContext(MigrationType, MigrationVersion)
{
BeforeMigration = m =>
2014-12-02 20:08:37 +00:00
{
var migration = m as TMigration;
if (beforeMigration != null && migration is TMigration)
{
beforeMigration(migration);
}
2014-12-02 20:08:37 +00:00
}
});
}
}
2019-10-14 20:21:00 +00:00
}