public void AssertEachPossibleDownwardMigration(string configurationType, DbConnectionInfo targetDatabase)
{
var migrator = GetMigrator(configurationType, targetDatabase);
var currentMigrationId = migrator
.GetDatabaseMigrations()
.OrderBy(migrationId => migrationId)
.LastOrDefault();
var migrationsToApply = migrator
.GetLocalMigrations()
.OrderByDescending(migrationId => migrationId)
.SkipWhile(migrationId =>
string.Compare(migrationId, currentMigrationId, StringComparison.OrdinalIgnoreCase) >= 0
)
.ToList();
var expectedMigrations = new List<string>(migrationsToApply);
// this will test migrating to before InitialCreate
migrationsToApply.Add("0");
foreach (var migrationId in migrationsToApply)
{
ApplyMigration(migrator, migrationId);
var actualMigrations = migrator.GetDatabaseMigrations().OrderByDescending(actualId => actualId);
AssertDatabaseMigrationsAreEqual(migrationId, expectedMigrations, actualMigrations);
expectedMigrations.Remove(migrationId);
}
}