Refactor Horde_Db_Migration_Migrator to require a Logger object and allow
authorChuck Hagenbuch <chuck@horde.org>
Thu, 14 Jan 2010 03:31:30 +0000 (22:31 -0500)
committerChuck Hagenbuch <chuck@horde.org>
Thu, 14 Jan 2010 03:31:30 +0000 (22:31 -0500)
configuring the schema_info table name.

framework/Db/lib/Horde/Db/Migration/Migrator.php
framework/Db/test/Horde/Db/Migration/MigratorTest.php

index d92e55a..6dc1339 100644 (file)
@@ -34,7 +34,7 @@ class Horde_Db_Migration_Migrator
     protected $_migrationsPath = null;
 
     /**
-     * @var int
+     * @var integer
      */
     protected $_targetVersion = null;
 
@@ -51,9 +51,9 @@ class Horde_Db_Migration_Migrator
     /**
      * @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';
@@ -61,13 +61,12 @@ class Horde_Db_Migration_Migrator
         }
 
         $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();
     }
 
@@ -131,11 +130,11 @@ class Horde_Db_Migration_Migrator
     }
 
     /**
-     * @param  string  $schemaTableName
+     * @param  string  $migrationsPath  Path to migration files
      */
-    public function setSchemaTableName($schemaTableName)
+    public function setMigrationsPath($migrationsPath)
     {
-        $this->_schemaTableName = $schemaTableName;
+        $this->_migrationsPath = $migrationsPath;
     }
 
     /**
@@ -227,7 +226,7 @@ class Horde_Db_Migration_Migrator
      * 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)
index a486d6c..e3cd1c0 100644 (file)
@@ -26,6 +26,8 @@ class Horde_Db_Migration_MigratorTest extends PHPUnit_Framework_TestCase
 {
     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:',
@@ -99,7 +101,7 @@ client:
     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));
@@ -117,7 +119,7 @@ client:
         $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());
 
@@ -129,7 +131,7 @@ client:
         $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());
 
@@ -152,7 +154,7 @@ client:
         $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());
 
@@ -176,7 +178,7 @@ client:
     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);
@@ -188,7 +190,7 @@ client:
     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);
@@ -200,7 +202,7 @@ client:
     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);
@@ -228,7 +230,7 @@ client:
     {
         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');
@@ -237,7 +239,7 @@ client:
     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());