Ejemplo n.º 1
0
 /**
  * Prepare to do a migration
  *
  * @param string $destination version to migrate to
  * @param $string $direction direction to migrate to 'up'/'down'
  */
 private function prepare_to_migrate($destination, $direction)
 {
     try {
         $this->_return .= "\tMigrating " . strtoupper($direction);
         if (!is_null($destination)) {
             $this->_return .= " to: {$destination}\n";
         } else {
             $this->_return .= ":\n";
         }
         $migrations = $this->_migrator_util->get_runnable_migrations($this->_migratorDirs, $direction, $destination);
         if (count($migrations) == 0) {
             $this->_return .= "\nNo relevant migrations to run. Exiting...\n";
             return;
         }
         $result = $this->run_migrations($migrations, $direction, $destination);
     } catch (Exception $ex) {
         throw $ex;
     }
 }
 /**
  * test target version with runnable migrations going down, no current version
  */
 public function test_get_runnable_migrations_going_down_with_target_version_no_current()
 {
     $migrator_util = new Ruckusing_Util_Migrator($this->adapter);
     $this->insert_dummy_version_data(array(3, '20090122193325'));
     $actual_down_files = $migrator_util->get_runnable_migrations($this->migrations_dirs, 'down', 1, false);
     $expect_down_files = array(array('version' => '20090122193325', 'class' => 'AddNewTable', 'file' => '20090122193325_AddNewTable.php', 'module' => 'default'), array('version' => 3, 'class' => 'AddIndexToBlogs', 'file' => '003_AddIndexToBlogs.php', 'module' => 'default'));
     $this->assertEquals($expect_down_files, $actual_down_files);
     $this->clear_dummy_data();
     $this->insert_dummy_version_data(array(3));
     $actual_down_files = $migrator_util->get_runnable_migrations($this->migrations_dirs, 'down', 1, false);
     $expect_down_files = array(array('version' => 3, 'class' => 'AddIndexToBlogs', 'file' => '003_AddIndexToBlogs.php', 'module' => 'default'));
     $this->assertEquals($expect_down_files, $actual_down_files);
     //go all the way down!
     $this->clear_dummy_data();
     $this->insert_dummy_version_data(array(1, 3, '20090122193325'));
     $actual_down_files = $migrator_util->get_runnable_migrations($this->migrations_dirs, 'down', 0, false);
     $expect_down_files = array(array('version' => '20090122193325', 'class' => 'AddNewTable', 'file' => '20090122193325_AddNewTable.php', 'module' => 'default'), array('version' => 3, 'class' => 'AddIndexToBlogs', 'file' => '003_AddIndexToBlogs.php', 'module' => 'default'), array('version' => 1, 'class' => 'CreateUsers', 'file' => '001_CreateUsers.php', 'module' => 'default'));
     $this->assertEquals($expect_down_files, $actual_down_files);
 }
 /**
  * test target version with runnable migrations going up, no current version, new module just added
  */
 public function test_get_runnable_migrations_going_up_with_target_version_no_current_new_module()
 {
     $migrator_util = new Ruckusing_Util_Migrator($this->adapter);
     $this->insert_dummy_version_data(array(1, 3));
     $actual_up_files = $migrator_util->get_runnable_migrations($this->migrations_dirs, 'up', false);
     // need to up with new migrations form new module folder
     $expect_up_files = array(array('version' => 2, 'class' => 'JustNewMigration', 'file' => '002_JustNewMigration.php', 'module' => 'additional'), array('version' => '20090122193325', 'class' => 'AddNewTable', 'file' => '20090122193325_AddNewTable.php', 'module' => 'default'));
     $this->assertEquals($expect_up_files, $actual_up_files);
     // order of up doesn't influence on order of down
     $this->clear_dummy_data();
     $this->insert_dummy_version_data(array(1, 3, 2, '20090122193325'));
     $actual_down_files = $migrator_util->get_runnable_migrations($this->migrations_dirs, 'down', 0, false);
     $expect_down_files = array(array('version' => '20090122193325', 'class' => 'AddNewTable', 'file' => '20090122193325_AddNewTable.php', 'module' => 'default'), array('version' => 3, 'class' => 'AddIndexToBlogs', 'file' => '003_AddIndexToBlogs.php', 'module' => 'default'), array('version' => 2, 'class' => 'JustNewMigration', 'file' => '002_JustNewMigration.php', 'module' => 'additional'), array('version' => 1, 'class' => 'CreateUsers', 'file' => '001_CreateUsers.php', 'module' => 'default'));
     $this->assertEquals($expect_down_files, $actual_down_files);
 }