|
<?php
|
|
|
|
namespace Doctrine\Tests\DBAL\Schema\Visitor;
|
|
|
|
require_once __DIR__ . '/../../../TestInit.php';
|
|
|
|
use Doctrine\DBAL\Schema\Schema;
|
|
use Doctrine\DBAL\Schema\Table;
|
|
use Doctrine\DBAL\Types\Type;
|
|
|
|
class SchemaSqlCollectorTest extends \PHPUnit_Framework_TestCase
|
|
{
|
|
public function testCreateSchema()
|
|
{
|
|
$platformMock = $this->getMock(
|
|
'Doctrine\DBAL\Platforms\MySqlPlatform',
|
|
array('getCreateTableSql', 'getCreateSequenceSql', 'getCreateForeignKeySql')
|
|
);
|
|
$platformMock->expects($this->exactly(2))
|
|
->method('getCreateTableSql')
|
|
->will($this->returnValue(array("foo")));
|
|
$platformMock->expects($this->exactly(1))
|
|
->method('getCreateSequenceSql')
|
|
->will($this->returnValue(array("bar")));
|
|
$platformMock->expects($this->exactly(1))
|
|
->method('getCreateForeignKeySql')
|
|
->will($this->returnValue(array("baz")));
|
|
|
|
$schema = $this->createFixtureSchema();
|
|
|
|
$sql = $schema->toSql($platformMock);
|
|
|
|
$this->assertEquals(array("foo", "foo", "bar", "baz"), $sql);
|
|
}
|
|
|
|
public function testDropSchema()
|
|
{
|
|
$platformMock = $this->getMock(
|
|
'Doctrine\DBAL\Platforms\MySqlPlatform',
|
|
array('getDropTableSql', 'getDropSequenceSql', 'getDropForeignKeySql')
|
|
);
|
|
$platformMock->expects($this->exactly(2))
|
|
->method('getDropTableSql')
|
|
->will($this->returnValue("tbl"));
|
|
$platformMock->expects($this->exactly(1))
|
|
->method('getDropSequenceSql')
|
|
->will($this->returnValue("seq"));
|
|
$platformMock->expects($this->exactly(1))
|
|
->method('getDropForeignKeySql')
|
|
->will($this->returnValue("fk"));
|
|
|
|
$schema = $this->createFixtureSchema();
|
|
|
|
$sql = $schema->toDropSql($platformMock);
|
|
|
|
$this->assertEquals(array("fk", "tbl", "tbl", "seq"), $sql);
|
|
}
|
|
|
|
/**
|
|
* @return Schema
|
|
*/
|
|
public function createFixtureSchema()
|
|
{
|
|
$schema = new Schema();
|
|
$tableA = $schema->createTable("foo");
|
|
$tableA->addColumn("id", 'integer');
|
|
$tableA->addColumn("bar", 'string', array('length' => 255));
|
|
$tableA->setPrimaryKey(array("id"));
|
|
|
|
$schema->createSequence("foo_seq");
|
|
|
|
$tableB = $schema->createTable("bar");
|
|
$tableB->addColumn("id", 'integer');
|
|
$tableB->setPrimaryKey(array("id"));
|
|
|
|
$tableA->addForeignKeyConstraint($tableB, array("bar"), array("id"));
|
|
|
|
return $schema;
|
|
}
|
|
}
|