From 236b104d6c6c14b5e32151b1e024961ab1669e66 Mon Sep 17 00:00:00 2001 From: Chuck Hagenbuch Date: Wed, 13 Jan 2010 22:31:30 -0500 Subject: [PATCH] Refactor Horde_Db_Migration_Migrator to require a Logger object and allow configuring the schema_info table name. --- framework/Db/lib/Horde/Db/Migration/Migrator.php | 23 +++++++++++----------- .../Db/test/Horde/Db/Migration/MigratorTest.php | 20 ++++++++++--------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/framework/Db/lib/Horde/Db/Migration/Migrator.php b/framework/Db/lib/Horde/Db/Migration/Migrator.php index d92e55a36..6dc133965 100644 --- a/framework/Db/lib/Horde/Db/Migration/Migrator.php +++ b/framework/Db/lib/Horde/Db/Migration/Migrator.php @@ -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) diff --git a/framework/Db/test/Horde/Db/Migration/MigratorTest.php b/framework/Db/test/Horde/Db/Migration/MigratorTest.php index a486d6cb8..e3cd1c082 100644 --- a/framework/Db/test/Horde/Db/Migration/MigratorTest.php +++ b/framework/Db/test/Horde/Db/Migration/MigratorTest.php @@ -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()); -- 2.11.0