public function testMigrationByDiff()
{
$this->conn->query('DROP TABLE IF EXISTS users');
$this->conn->query('DROP TABLE IF EXISTS test');
$this->conn->query('CREATE TABLE users (account VARCHAR(128) UNIQUE)');
if (!file_exists('tests/migrations_testing')) {
mkdir('tests/migrations_testing');
}
$generator = new MigrationGenerator(Console::getInstance()->getLogger(), 'tests/migrations_testing');
ok(class_exists('TestApp\\Model\\UserSchema', true));
$finder = new SchemaFinder();
$finder->find();
list($class, $path) = $generator->generateWithDiff('DiffMigration', $this->getDriverType(), ["users" => new TestApp\Model\UserSchema()], '20120101');
require_once $path;
ok($class::getId());
/*
$userSchema = new TestApp\Model\UserSchema;
$column = $userSchema->getColumn('account');
*/
// run migration
$runner = new MigrationRunner($this->logger, $this->getDriverType());
$runner->resetMigrationId($this->conn, $this->queryDriver);
$runner->load('tests/migrations_testing');
// XXX: PHPUnit can't run this test in separated unit test since
// there is a bug of serializing the global array, this assertion will get 5 instead of the expected 1.
$scripts = $runner->loadMigrationScripts();
$this->assertNotEmpty($scripts);
// $this->assertCount(1, $scripts);
// $this->expectOutputRegex('#DiffMigration_1325347200#');
$runner->runUpgrade($this->conn, $this->queryDriver, [$class]);
# echo file_get_contents($path);
unlink($path);
$this->conn->query('DROP TABLE IF EXISTS users');
}