Galen.Ci.EntityFramework.Testing.MigrationTestRunner.AssertEachPossibleDownwardMigration C# (CSharp) Method

AssertEachPossibleDownwardMigration() public method

public AssertEachPossibleDownwardMigration ( string configurationType, System.Data.Entity.Infrastructure.DbConnectionInfo targetDatabase ) : void
configurationType string
targetDatabase System.Data.Entity.Infrastructure.DbConnectionInfo
return void
        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);
            }
        }