vendor/doctrine-migrations/tests/Doctrine/DBAL/Migrations/Tests/Functional/FunctionalTest.php
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/doctrine-migrations/tests/Doctrine/DBAL/Migrations/Tests/Functional/FunctionalTest.php Fri Nov 25 18:55:43 2011 +0100
@@ -0,0 +1,238 @@
+<?php
+
+namespace Doctrine\DBAL\Migrations\Tests\Functional;
+
+use Doctrine\DBAL\DriverManager;
+use Doctrine\DBAL\Schema\Schema;
+use Doctrine\DBAL\Migrations\Configuration\Configuration;
+
+class FunctionalTest extends \Doctrine\DBAL\Migrations\Tests\MigrationTestCase
+{
+ /**
+ * @var Configuration
+ */
+ private $config;
+
+ /**
+ * @var Connection
+ */
+ private $connection;
+
+ public function setUp()
+ {
+ $this->connection = $this->getSqliteConnection();
+ $this->config = new Configuration($this->connection);
+ $this->config->setMigrationsNamespace('Doctrine\DBAL\Migrations\Tests\Functional');
+ $this->config->setMigrationsDirectory('.');
+ }
+
+ public function testMigrateUp()
+ {
+ $version = new \Doctrine\DBAL\Migrations\Version($this->config, 1, 'Doctrine\DBAL\Migrations\Tests\Functional\MigrationMigrateUp');
+
+ $this->assertFalse($this->config->hasVersionMigrated($version));
+ $version->execute('up');
+
+ $schema = $this->connection->getSchemaManager()->createSchema();
+ $this->assertTrue($schema->hasTable('foo'));
+ $this->assertTrue($schema->getTable('foo')->hasColumn('id'));
+ $this->assertTrue($this->config->hasVersionMigrated($version));
+ }
+
+ public function testMigrateDown()
+ {
+ $version = new \Doctrine\DBAL\Migrations\Version($this->config, 1, 'Doctrine\DBAL\Migrations\Tests\Functional\MigrationMigrateUp');
+
+ $this->assertFalse($this->config->hasVersionMigrated($version));
+ $version->execute('up');
+
+ $schema = $this->connection->getSchemaManager()->createSchema();
+ $this->assertTrue($schema->hasTable('foo'));
+ $this->assertTrue($schema->getTable('foo')->hasColumn('id'));
+ $this->assertTrue($this->config->hasVersionMigrated($version));
+
+ $version->execute('down');
+ $schema = $this->connection->getSchemaManager()->createSchema();
+ $this->assertFalse($schema->hasTable('foo'));
+ $this->assertFalse($this->config->hasVersionMigrated($version));
+
+ }
+
+ public function testSkipMigrateUp()
+ {
+ $version = new \Doctrine\DBAL\Migrations\Version($this->config, 1, 'Doctrine\DBAL\Migrations\Tests\Functional\MigrationSkipMigration');
+
+ $this->assertFalse($this->config->hasVersionMigrated($version));
+ $version->execute('up');
+
+ $schema = $this->connection->getSchemaManager()->createSchema();
+ $this->assertFalse($schema->hasTable('foo'));
+
+ $this->assertTrue($this->config->hasVersionMigrated($version));
+ }
+
+ public function testMigrateSeveralSteps()
+ {
+ $this->config->registerMigration(1, 'Doctrine\DBAL\Migrations\Tests\Functional\MigrationMigrateUp');
+ $this->config->registerMigration(2, 'Doctrine\DBAL\Migrations\Tests\Functional\MigrationSkipMigration');
+ $this->config->registerMigration(3, 'Doctrine\DBAL\Migrations\Tests\Functional\MigrationMigrateFurther');
+
+ $this->assertEquals(0, $this->config->getCurrentVersion());
+ $migrations = $this->config->getMigrationsToExecute('up', 3);
+
+ $this->assertEquals(3, count($migrations));
+ $this->assertInstanceOf('Doctrine\DBAL\Migrations\Tests\Functional\MigrationMigrateUp', $migrations[1]->getMigration());
+ $this->assertInstanceOf('Doctrine\DBAL\Migrations\Tests\Functional\MigrationSkipMigration', $migrations[2]->getMigration());
+ $this->assertInstanceOf('Doctrine\DBAL\Migrations\Tests\Functional\MigrationMigrateFurther', $migrations[3]->getMigration());
+
+ $migration = new \Doctrine\DBAL\Migrations\Migration($this->config);
+ $migration->migrate(3);
+
+ $schema = $this->config->getConnection()->getSchemaManager()->createSchema();
+ $this->assertTrue($schema->hasTable('foo'));
+ $this->assertTrue($schema->hasTable('bar'));
+
+ $this->assertEquals(3, $this->config->getCurrentVersion());
+ $this->assertTrue($migrations[1]->isMigrated());
+ $this->assertTrue($migrations[2]->isMigrated());
+ $this->assertTrue($migrations[3]->isMigrated());
+ }
+
+ public function testMigrateToLastVersion()
+ {
+ $this->config->registerMigration(1, 'Doctrine\DBAL\Migrations\Tests\Functional\MigrationMigrateUp');
+ $this->config->registerMigration(2, 'Doctrine\DBAL\Migrations\Tests\Functional\MigrationSkipMigration');
+ $this->config->registerMigration(3, 'Doctrine\DBAL\Migrations\Tests\Functional\MigrationMigrateFurther');
+
+ $migration = new \Doctrine\DBAL\Migrations\Migration($this->config);
+ $migration->migrate();
+
+ $this->assertEquals(3, $this->config->getCurrentVersion());
+ $migrations = $this->config->getMigrations();
+ $this->assertTrue($migrations[1]->isMigrated());
+ $this->assertTrue($migrations[2]->isMigrated());
+ $this->assertTrue($migrations[3]->isMigrated());
+ }
+
+ public function testDryRunMigration()
+ {
+ $this->config->registerMigration(1, 'Doctrine\DBAL\Migrations\Tests\Functional\MigrationMigrateUp');
+ $this->config->registerMigration(2, 'Doctrine\DBAL\Migrations\Tests\Functional\MigrationSkipMigration');
+ $this->config->registerMigration(3, 'Doctrine\DBAL\Migrations\Tests\Functional\MigrationMigrateFurther');
+
+ $migration = new \Doctrine\DBAL\Migrations\Migration($this->config);
+ $migration->migrate(3, true);
+
+ $schema = $this->config->getConnection()->getSchemaManager()->createSchema();
+ $this->assertFalse($schema->hasTable('foo'));
+ $this->assertFalse($schema->hasTable('bar'));
+
+ $this->assertEquals(0, $this->config->getCurrentVersion());
+ $migrations = $this->config->getMigrations();
+ $this->assertFalse($migrations[1]->isMigrated());
+ $this->assertFalse($migrations[2]->isMigrated());
+ $this->assertFalse($migrations[3]->isMigrated());
+ }
+
+ public function testMigrateDownSeveralSteps()
+ {
+ $this->config->registerMigration(1, 'Doctrine\DBAL\Migrations\Tests\Functional\MigrationMigrateUp');
+ $this->config->registerMigration(2, 'Doctrine\DBAL\Migrations\Tests\Functional\MigrationSkipMigration');
+ $this->config->registerMigration(3, 'Doctrine\DBAL\Migrations\Tests\Functional\MigrationMigrateFurther');
+
+ $migration = new \Doctrine\DBAL\Migrations\Migration($this->config);
+ $migration->migrate(3);
+ $this->assertEquals(3, $this->config->getCurrentVersion());
+ $migration->migrate(0);
+
+ $schema = $this->config->getConnection()->getSchemaManager()->createSchema();
+ $this->assertFalse($schema->hasTable('foo'));
+ $this->assertFalse($schema->hasTable('bar'));
+
+ $this->assertEquals(0, $this->config->getCurrentVersion());
+ $migrations = $this->config->getMigrations();
+ $this->assertFalse($migrations[1]->isMigrated());
+ $this->assertFalse($migrations[2]->isMigrated());
+ $this->assertFalse($migrations[3]->isMigrated());
+ }
+
+ public function testAddSql()
+ {
+ $this->config->registerMigration(1, 'Doctrine\DBAL\Migrations\Tests\Functional\MigrateAddSqlTest');
+
+ $migration = new \Doctrine\DBAL\Migrations\Migration($this->config);
+ $migration->migrate(1);
+
+ $migrations = $this->config->getMigrations();
+ $this->assertTrue($migrations[1]->isMigrated());
+
+ $schema = $this->config->getConnection()->getSchemaManager()->createSchema();
+ $this->assertTrue($schema->hasTable('test_add_sql_table'));
+ $check = $this->config->getConnection()->fetchAll('select * from test_add_sql_table');
+ $this->assertNotEmpty($check);
+ $this->assertEquals('test', $check[0]['test']);
+
+ $migration->migrate(0);
+ $this->assertFalse($migrations[1]->isMigrated());
+ $schema = $this->config->getConnection()->getSchemaManager()->createSchema();
+ $this->assertFalse($schema->hasTable('test_add_sql_table'));
+ }
+}
+
+class MigrateAddSqlTest extends \Doctrine\DBAL\Migrations\AbstractMigration
+{
+ public function up(Schema $schema)
+ {
+ $this->addSql("CREATE TABLE test_add_sql_table (test varchar(255))");
+ $this->addSql("INSERT INTO test_add_sql_table (test) values (?)", array('test'));
+ }
+
+ public function down(Schema $schema)
+ {
+ $this->addSql("DROP TABLE test_add_sql_table");
+ }
+}
+
+class MigrationMigrateUp extends \Doctrine\DBAL\Migrations\AbstractMigration
+{
+ public function down(Schema $schema)
+ {
+ $schema->dropTable('foo');
+ }
+
+ public function up(Schema $schema)
+ {
+ $table = $schema->createTable('foo');
+ $table->addColumn('id', 'integer');
+ }
+}
+
+class MigrationSkipMigration extends MigrationMigrateUp
+{
+
+ public function preUp(Schema $schema)
+ {
+ $this->skipIf(true);
+ }
+
+ public function preDown(Schema $schema)
+ {
+ $this->skipIf(true);
+ }
+}
+
+class MigrationMigrateFurther extends \Doctrine\DBAL\Migrations\AbstractMigration
+{
+
+ public function down(Schema $schema)
+ {
+ $schema->dropTable('bar');
+ }
+
+ public function up(Schema $schema)
+ {
+ $table = $schema->createTable('bar');
+ $table->addColumn('id', 'integer');
+ }
+
+}
\ No newline at end of file