public void VerifyThatMigrationVersionsWork()
        {
            MigrationEngine.Reset();

            MigrationEngine.Migrate(excludes: new List<string>() { "BadMigration", "BadSeed", "BadSave", "BadReverse" });

            Assert.IsTrue(DatabaseSession.Instance.Connector.CheckTableExists(new Migration()));
            Assert.AreEqual(4, Migration.All().Count);

            MigrationEngine.ResetTo(new Version(1,0,0));

            Assert.AreEqual(3, Migration.All().Count);

            MigrationEngine.Reset();

            MigrationEngine.Migrate(excludes: new List<string>() { "BadMigration", "BadSeed", "BadSave" });

            Assert.IsTrue(DatabaseSession.Instance.Connector.CheckTableExists(new Migration()));
            Assert.AreEqual(5, Migration.All().Count);

            var migrationDeleteBase = new BadMigration();

            Assert.Throws<InvalidDataException>(() => migrationDeleteBase.Delete());

            Assert.Throws<Exception>(() => MigrationEngine.ResetTo(new Version(0, 0, 0)));

            MigrationEngine.Reset(hard: true);
            Assert.IsFalse(DatabaseSession.Instance.Connector.CheckTableExists(new Migration()));
        }
        public void VerifyThatMigrationVersionsWork()
        {
            MigrationEngine.Reset();

            MigrationEngine.Migrate(excludes: new List <string>()
            {
                "BadMigration", "BadSeed", "BadSave", "BadReverse"
            });

            Assert.IsTrue(DatabaseSession.Instance.Connector.CheckTableExists(new MigrationRecord()));
            Assert.AreEqual(4, MigrationRecord.All().Count);

            MigrationEngine.ResetTo(new Version(1, 0, 0));

            Assert.AreEqual(3, MigrationRecord.All().Count);

            MigrationEngine.Reset();

            MigrationEngine.Migrate(excludes: new List <string>()
            {
                "BadMigration", "BadSeed", "BadSave"
            });

            Assert.IsTrue(DatabaseSession.Instance.Connector.CheckTableExists(new MigrationRecord()));
            Assert.AreEqual(5, MigrationRecord.All().Count);

            var migrationDeleteBase = new BadMigration();

            Assert.Throws <InvalidDataException>(() => migrationDeleteBase.Delete());

            Assert.Throws <Exception>(() => MigrationEngine.ResetTo(new Version(0, 0, 0)));

            MigrationEngine.Reset(hard: true);
            Assert.IsFalse(DatabaseSession.Instance.Connector.CheckTableExists(new MigrationRecord()));
        }