Commit 07bacdfe authored by samw3's avatar samw3

MySQL migration unit tests

parent 87d58d99
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.phpdoctrine.com>.
*/
/**
* Doctrine_Migration_Mysql_TestCase
*
* @package Doctrine
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @category Object Relational Mapping
* @link www.phpdoctrine.com
* @since 1.0
* @version $Revision$
*/
class Doctrine_Migration_Mysql_TestCase extends Doctrine_UnitTestCase
{
protected $serverExists = false;
public function setUp()
{
parent::setUp();
try {
$dsn = 'mysql://doctrine_tester:d0cTrynR0x!@localhost/doctrine_unit_test';
$this->conn = $this->manager->openConnection($dsn,'unit_test',true);
$this->conn->connect();
$this->serverExists = true;
} catch (Exception $e){
$this->serverExists = false;
}
}
public function testMigration()
{
if($this->serverExists){
// Clean up any left over tables from broken test runs.
try {
$this->conn->export->dropTable('migration_test');
$this->conn->export->dropTable('migration_version');
} catch(Exception $e) {
}
// New migration for the 'migration_classes' directory
$migration = new Doctrine_Migration('mysql_migration_classes');
// Make sure the current version is 0
$this->assertEqual($migration->getCurrentVersion(), 0);
// migrate to version latest version
$migration->migrate($migration->getLatestVersion());
// Make sure the current version is latest version
$this->assertEqual($migration->getCurrentVersion(), $migration->getLatestVersion());
// now migrate back to original version
$migration->migrate(0);
// Make sure the current version is 0
$this->assertEqual($migration->getCurrentVersion(), 0);
} else {
$this->fail('server does not exist.');
}
}
}
\ No newline at end of file
...@@ -36,13 +36,18 @@ class Doctrine_Migration_TestCase extends Doctrine_UnitTestCase ...@@ -36,13 +36,18 @@ class Doctrine_Migration_TestCase extends Doctrine_UnitTestCase
{ {
// New migration for the 'migration_classes' directory // New migration for the 'migration_classes' directory
$migration = new Doctrine_Migration('migration_classes'); $migration = new Doctrine_Migration('migration_classes');
// migrate to version 3 // Make sure the current version is 0
$migration->migrate(2); $this->assertEqual($migration->getCurrentVersion(), 0);
// migrate to version latest version
$migration->migrate($migration->getLatestVersion());
// Make sure the current version is latest version
$this->assertEqual($migration->getCurrentVersion(), $migration->getLatestVersion());
// now migrate back to original version // now migrate back to original version
$migration->migrate(0); $migration->migrate(0);
// Make sure the current version is 0 // Make sure the current version is 0
$this->assertEqual($migration->getCurrentVersion(), 0); $this->assertEqual($migration->getCurrentVersion(), 0);
} }
......
<?php
class MysqlAddTable extends Doctrine_Migration
{
public function up()
{
$this->createTable('migration_test', array('field1' => array('type' => 'string')));
$this->addColumn('migration_test', 'field2', 'integer');
}
public function down()
{
$this->dropTable('migration_test');
}
}
\ No newline at end of file
<?php <?php
class ChangeColumn extends Doctrine_Migration class MysqlChangeColumn extends Doctrine_Migration
{ {
public function up() public function up()
{ {
$this->renameColumn('migration_test','field2','field3');
} }
public function down() public function down()
{ {
$this->renameColumn('migration_test','field3','field2');
} }
} }
...@@ -253,9 +253,14 @@ $cache->addTestCase(new Doctrine_Cache_Apc_TestCase()); ...@@ -253,9 +253,14 @@ $cache->addTestCase(new Doctrine_Cache_Apc_TestCase());
//$cache->addTestCase(new Doctrine_Cache_TestCase()); //$cache->addTestCase(new Doctrine_Cache_TestCase());
$test->addTestCase($cache); $test->addTestCase($cache);
$test->addTestCase(new Doctrine_Query_ApplyInheritance_TestCase()); // Migration Tests
$test->addTestCase(new Doctrine_Migration_TestCase()); $migration = new GroupTest('Migration tests','migration');
$migration->addTestCase(new Doctrine_Migration_TestCase());
$migration->addTestCase(new Doctrine_Migration_Mysql_TestCase());
$test->addTestCase($migration);
$test->addTestCase(new Doctrine_Query_ApplyInheritance_TestCase());
$test->addTestCase(new Doctrine_Import_Schema_TestCase()); $test->addTestCase(new Doctrine_Import_Schema_TestCase());
$test->addTestCase(new Doctrine_Export_Schema_TestCase()); $test->addTestCase(new Doctrine_Export_Schema_TestCase());
$test->run(); $test->run();
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment