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()));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Sets up the database connection and migration engine
        /// </summary>
        private void SetupDatabaseConnection()
        {
            // read all settings from the db
            var settings = AppSettingsManager.ReadAllSettings();

            try
            {
                // Create the connection.
                DatabaseSession.Instance.CreateConnector(settings["dbhost"], settings["dbport"], settings["dbname"], settings["dbuser"], settings["dbpassword"]);
            }
            catch (Exception ex)
            {
                throw new HttpRequestException(string.Format("The connection to database could not be made: {0}", ex.Message));
            }

#if DEBUG
            // when debugging reset the full database
            MigrationEngine.Reset();
#endif
            // perform the migration
            MigrationEngine.Migrate();
        }
        public void VerifyThatMigrationEngineWorks()
        {
            // Reset all migrations
            MigrationEngine.Reset();

            Assert.IsFalse(DatabaseSession.Instance.Connector.CheckTableExists(new MigrationRecord()));
            Assert.Throws <Exception>(() => MigrationEngine.Migrate());
            Assert.IsTrue(DatabaseSession.Instance.Connector.CheckTableExists(new MigrationRecord()));
            Assert.Throws <Exception>(() => MigrationEngine.Migrate(new List <string>()
            {
                "BadMigration"
            }));
            Assert.Throws <Exception>(() => MigrationEngine.Migrate(excludes: new List <string>()
            {
                "BadMigration", "BadSeed"
            }));
            MigrationEngine.Migrate(excludes: new List <string>()
            {
                "BadMigration", "BadSeed", "BadSave", "CreateMigrationTable"
            });
            Assert.Throws <Exception>(() => MigrationEngine.Reset("BadReverse"));
            MigrationEngine.Reset(hard: true);
            Assert.IsFalse(DatabaseSession.Instance.Connector.CheckTableExists(new MigrationRecord()));
        }