protected $_migrationsPath = null;
/**
- * @var int
+ * @var integer
*/
protected $_targetVersion = null;
/**
* @param string $direction
* @param string $migrationsPath
- * @param int $targetVersion
+ * @param integer $targetVersion
*/
- public function __construct($connection, $migrationsPath)
+ public function __construct(Horde_Db_Adapter_Base $connection, Horde_Log_Logger $logger, $options = array())
{
if (!$connection->supportsMigrations()) {
$msg = 'This database does not yet support migrations';
}
$this->_connection = $connection;
- $this->_migrationsPath = $migrationsPath;
- /* @TODO */
- //$this->_logger = $logger;
- //$this->_inflector = $inflector;
- $this->_logger = new Horde_Support_Stub();
+ $this->_logger = $logger;
$this->_inflector = new Horde_Support_Inflector();
+ if (isset($options['migrationsPath'])) { $this->_migrationsPath = $options['migrationsPath']; }
+ if (isset($options['schemaTableName'])) { $this->_schemaTableName = $options['schemaTableName']; }
+
$this->_initializeSchemaInformation();
}
}
/**
- * @param string $schemaTableName
+ * @param string $migrationsPath Path to migration files
*/
- public function setSchemaTableName($schemaTableName)
+ public function setMigrationsPath($migrationsPath)
{
- $this->_schemaTableName = $schemaTableName;
+ $this->_migrationsPath = $migrationsPath;
}
/**
* Actually return object, and not class
*
* @param string $migrationName
- * @param int $version
+ * @param integer $version
* @return Horde_Db_Migration_Base
*/
protected function _getMigrationClass($migrationName, $version)
{
public function setUp()
{
+ $this->_logger = new Horde_Log_Logger(new Horde_Log_Handler_Null());
+
$this->_conn = Horde_Db_Adapter::factory(array(
'adapter' => 'pdo_sqlite',
'dbname' => ':memory:',
public function testInitializeSchemaInformation()
{
$dir = dirname(dirname(__FILE__)).'/fixtures/migrations/';
- $migrator = new Horde_Db_Migration_Migrator($this->_conn, $dir);
+ $migrator = new Horde_Db_Migration_Migrator($this->_conn, $this->_logger, array('migrationsPath' => $dir));
$sql = "SELECT version FROM schema_info";
$this->assertEquals(0, $this->_conn->selectValue($sql));
$this->assertType('Horde_Db_Exception', $e);
$dir = dirname(dirname(__FILE__)).'/fixtures/migrations/';
- $migrator = new Horde_Db_Migration_Migrator($this->_conn, $dir);
+ $migrator = new Horde_Db_Migration_Migrator($this->_conn, $this->_logger, array('migrationsPath' => $dir));
$migrator->up();
$this->assertEquals(3, $migrator->getCurrentVersion());
$this->assertEquals('hello world', $reminder->content);
$dir = dirname(dirname(__FILE__)).'/fixtures/migrations/';
- $migrator = new Horde_Db_Migration_Migrator($this->_conn, $dir);
+ $migrator = new Horde_Db_Migration_Migrator($this->_conn, $this->_logger, array('migrationsPath' => $dir));
$migrator->down();
$this->assertEquals(0, $migrator->getCurrentVersion());
$this->assertType('Horde_Db_Exception', $e);
$dir = dirname(dirname(__FILE__)).'/fixtures/migrations/';
- $migrator = new Horde_Db_Migration_Migrator($this->_conn, $dir);
+ $migrator = new Horde_Db_Migration_Migrator($this->_conn, $this->_logger, array('migrationsPath' => $dir));
$migrator->up(1);
$this->assertEquals(1, $migrator->getCurrentVersion());
public function testOneDown()
{
$dir = dirname(dirname(__FILE__)).'/fixtures/migrations/';
- $migrator = new Horde_Db_Migration_Migrator($this->_conn, $dir);
+ $migrator = new Horde_Db_Migration_Migrator($this->_conn, $this->_logger, array('migrationsPath' => $dir));
$migrator->up();
$migrator->down(1);
public function testOneUpOneDown()
{
$dir = dirname(dirname(__FILE__)).'/fixtures/migrations/';
- $migrator = new Horde_Db_Migration_Migrator($this->_conn, $dir);
+ $migrator = new Horde_Db_Migration_Migrator($this->_conn, $this->_logger, array('migrationsPath' => $dir));
$migrator->up(1);
$migrator->down(0);
public function testMigratorGoingDownDueToVersionTarget()
{
$dir = dirname(dirname(__FILE__)).'/fixtures/migrations/';
- $migrator = new Horde_Db_Migration_Migrator($this->_conn, $dir);
+ $migrator = new Horde_Db_Migration_Migrator($this->_conn, $this->_logger, array('migrationsPath' => $dir));
$migrator->up(1);
$migrator->down(0);
{
try {
$dir = dirname(dirname(__FILE__)).'/fixtures/migrations_with_duplicate/';
- $migrator = new Horde_Db_Migration_Migrator($this->_conn, $dir);
+ $migrator = new Horde_Db_Migration_Migrator($this->_conn, $this->_logger, array('migrationsPath' => $dir));
$migrator->up();
} catch (Exception $e) { return; }
$this->fail('Expected exception wasn\'t raised');
public function testWithMissingVersionNumbers()
{
$dir = dirname(dirname(__FILE__)).'/fixtures/migrations_with_missing_versions/';
- $migrator = new Horde_Db_Migration_Migrator($this->_conn, $dir);
+ $migrator = new Horde_Db_Migration_Migrator($this->_conn, $this->_logger, array('migrationsPath' => $dir));
$migrator->migrate(500);
$this->assertEquals(4, $migrator->getCurrentVersion());